On Mon, Dec 11, 2017 at 10:11:44AM +0100, Martijn van Duren wrote:
> ping
>
> On 11/11/17 10:59, Martijn van Duren wrote:
> > Hello tech@,
> >
> > I've gotten confused by the awk scripts a few times now.
> > They seem to unused and I had to really look where they were originally
> > intended. For the curious:
> > awk -f common/options.awk common/options.c > include/options_def.h
> > awk -f ex/ex.awk ex/ex_cmd.c > include/ex_def.h
> >
> > The options_def.h file has moved from define to enum by bentley earlier
> > this year, so there seems to be no motivation to move back to the awk
> > scripts.
> >
> > This does however mean that we have to keep a close eye on the options
> > and commands we expose and keep them in sync manually.
> >
> > Another option would be to keep the scripts and hook them into the
> > makefile and cvs rm include/{options,ex}_def.h, but that would require
> > some black magic I haven't mastered yet.
I'm not 100% sure it's a good idea to generate these files from the
source files, but one could consider doing something like this instead:
Generate options_def.h and ex_def.h in build/obj/ using the awk files if
needed and remove them from includes/ and thus the need to maintain them
manually.
I changed options.awk to emit an enum instead of the #defines (but this
is not really needed). This way, the only difference between the files
in build and includes is in the options comment.
Index: usr.bin/vi/build/Makefile
===================================================================
RCS file: /var/cvs/src/usr.bin/vi/build/Makefile,v
retrieving revision 1.24
diff -u -p -r1.24 Makefile
--- usr.bin/vi/build/Makefile 30 Mar 2016 06:38:46 -0000 1.24
+++ usr.bin/vi/build/Makefile 11 Dec 2017 10:12:10 -0000
@@ -4,7 +4,7 @@
PROG= vi
# Modern curses (ncurses)
-CFLAGS+=-I${.CURDIR} -I${.CURDIR}/../include
+CFLAGS+=-I${.CURDIR} -I${.CURDIR}/../include -I.
LDADD+=-lcurses
DPADD+= ${LIBCURSES}
@@ -37,6 +37,16 @@ SRCS= cl_funcs.c cl_main.c cl_read.c cl_
LINKS= ${BINDIR}/vi ${BINDIR}/ex
LINKS+= ${BINDIR}/vi ${BINDIR}/view
+
+options_def.h: common/options.awk common/options.c
+ awk -f ${.CURDIR}/../common/options.awk ${.CURDIR}/../common/options.c \
+ > options_def.h
+
+ex_def.h: ex/ex.awk ex/ex_cmd.c
+ awk -f ${.CURDIR}/../ex/ex.awk ${.CURDIR}/../ex/ex_cmd.c > ex_def.h
+
+BUILDFIRST = options_def.h ex_def.h
+CLEANFILES += options_def.h ex_def.h
.PATH: ${.CURDIR}/../vi ${.CURDIR}/../ex ${.CURDIR}/../cl ${.CURDIR}/../common
${.CURDIR}/../docs/USD.doc/vi.man
Index: usr.bin/vi/common/options.awk
===================================================================
RCS file: /var/cvs/src/usr.bin/vi/common/options.awk,v
retrieving revision 1.3
diff -u -p -r1.3 options.awk
--- usr.bin/vi/common/options.awk 29 Jan 2001 01:58:31 -0000 1.3
+++ usr.bin/vi/common/options.awk 11 Dec 2017 10:20:39 -0000
@@ -1,11 +1,16 @@
# $OpenBSD: options.awk,v 1.3 2001/01/29 01:58:31 niklas Exp $
# @(#)options.awk 10.1 (Berkeley) 6/8/95
-
+
+BEGIN {
+ printf("enum {\n");
+ first = 1;
+}
/^\/\* O_[0-9A-Z_]*/ {
- printf("#define %s %d\n", $2, cnt++);
+ printf("\t%s%s,\n", $2, first ? " = 0" : "");
+ first = 0;
next;
}
END {
- printf("#define O_OPTIONCOUNT %d\n", cnt);
+ printf("\tO_OPTIONCOUNT,\n};\n");
}
Index: usr.bin/vi/include/ex_def.h
===================================================================
RCS file: usr.bin/vi/include/ex_def.h
diff -N usr.bin/vi/include/ex_def.h
--- usr.bin/vi/include/ex_def.h 19 Nov 2015 07:53:31 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,76 +0,0 @@
-/* $OpenBSD: ex_def.h,v 1.5 2015/11/19 07:53:31 bentley Exp $ */
-
-#define C_SCROLL 0
-#define C_BANG 1
-#define C_HASH 2
-#define C_SUBAGAIN 3
-#define C_STAR 4
-#define C_SHIFTL 5
-#define C_EQUAL 6
-#define C_SHIFTR 7
-#define C_AT 8
-#define C_APPEND 9
-#define C_ABBR 10
-#define C_ARGS 11
-#define C_BG 12
-#define C_CHANGE 13
-#define C_CD 14
-#define C_CHDIR 15
-#define C_COPY 16
-#define C_DELETE 17
-#define C_DISPLAY 18
-#define C_EDIT 19
-#define C_EX 20
-#define C_EXUSAGE 21
-#define C_FILE 22
-#define C_FG 23
-#define C_GLOBAL 24
-#define C_HELP 25
-#define C_INSERT 26
-#define C_JOIN 27
-#define C_K 28
-#define C_LIST 29
-#define C_MOVE 30
-#define C_MARK 31
-#define C_MAP 32
-#define C_MKEXRC 33
-#define C_NEXT 34
-#define C_NUMBER 35
-#define C_OPEN 36
-#define C_PRINT 37
-#define C_PRESERVE 38
-#define C_PREVIOUS 39
-#define C_PUT 40
-#define C_QUIT 41
-#define C_READ 42
-#define C_RECOVER 43
-#define C_RESIZE 44
-#define C_REWIND 45
-#define C_SUBSTITUTE 46
-#define C_SCRIPT 47
-#define C_SET 48
-#define C_SHELL 49
-#define C_SOURCE 50
-#define C_STOP 51
-#define C_SUSPEND 52
-#define C_T 53
-#define C_TAG 54
-#define C_TAGNEXT 55
-#define C_TAGPOP 56
-#define C_TAGPREV 57
-#define C_TAGTOP 58
-#define C_UNDO 59
-#define C_UNABBREVIATE 60
-#define C_UNMAP 61
-#define C_V 62
-#define C_VERSION 63
-#define C_VISUAL_EX 64
-#define C_VISUAL_VI 65
-#define C_VIUSAGE 66
-#define C_WRITE 67
-#define C_WN 68
-#define C_WQ 69
-#define C_XIT 70
-#define C_YANK 71
-#define C_Z 72
-#define C_SUBTILDE 73
Index: usr.bin/vi/include/options_def.h
===================================================================
RCS file: usr.bin/vi/include/options_def.h
diff -N usr.bin/vi/include/options_def.h
--- usr.bin/vi/include/options_def.h 3 Jul 2017 07:01:14 -0000 1.8
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,75 +0,0 @@
-/* $OpenBSD: options_def.h,v 1.8 2017/07/03 07:01:14 bentley Exp $ */
-
-enum {
- O_ALTWERASE = 0,
- O_AUTOINDENT,
- O_AUTOPRINT,
- O_AUTOWRITE,
- O_BACKUP,
- O_BEAUTIFY,
- O_CDPATH,
- O_CEDIT,
- O_COLUMNS,
- O_COMMENT,
- O_EDCOMPATIBLE,
- O_ESCAPETIME,
- O_ERRORBELLS,
- O_EXRC,
- O_EXTENDED,
- O_FILEC,
- O_FLASH,
- O_HARDTABS,
- O_ICLOWER,
- O_IGNORECASE,
- O_KEYTIME,
- O_LEFTRIGHT,
- O_LINES,
- O_LIST,
- O_LOCKFILES,
- O_MAGIC,
- O_MATCHTIME,
- O_MESG,
- O_NOPRINT,
- O_NUMBER,
- O_OCTAL,
- O_OPEN,
- O_PARAGRAPHS,
- O_PATH,
- O_PRINT,
- O_PROMPT,
- O_READONLY,
- O_RECDIR,
- O_REMAP,
- O_REPORT,
- O_RULER,
- O_SCROLL,
- O_SEARCHINCR,
- O_SECTIONS,
- O_SECURE,
- O_SHELL,
- O_SHELLMETA,
- O_SHIFTWIDTH,
- O_SHOWMATCH,
- O_SHOWMODE,
- O_SIDESCROLL,
- O_TABSTOP,
- O_TAGLENGTH,
- O_TAGS,
- O_TERM,
- O_TERSE,
- O_TILDEOP,
- O_TIMEOUT,
- O_TTYWERASE,
- O_VERBOSE,
- O_W1200,
- O_W300,
- O_W9600,
- O_WARN,
- O_WINDOW,
- O_WINDOWNAME,
- O_WRAPLEN,
- O_WRAPMARGIN,
- O_WRAPSCAN,
- O_WRITEANY,
- O_OPTIONCOUNT,
-};