On Mon, Dec 11, 2017 at 11:35:42AM +0100, Theo Buehler wrote:
> 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.
Sigh, I mangled this last sentence. I meant to say: The only difference
between the originals in includes/ and the generated files is the missing
cvs tags.
> 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,
> -};
>