pedz@megamax.UUCP (The Pedz Thing) (01/19/87)
I prefer that a program like etags/ctags (which comes as part of the GNU emacs distribution) be the exact same program and the choice of how to operate is based upon the name it is executed by. I have made these changes to etags.c and to the Makefile. Thus the same program is linked as ctags and as etags and will operate as desired based upon argv[0]. This saves disk space and makes life much easier. BTW, there was some sort of "feature" that reverted the program back to ctags mode if there were any parameters. I did not see the point in this so I removed it. Below are the diffs. Perry Smith Pedz Consultants pedz@megamax, pedz@ctvax, pedz@pollux *** etags.c.old Fri Jan 16 19:53:30 1987 --- etags.c Fri Jan 16 19:34:51 1987 *************** *** 50,59 #include <stdio.h> #include <ctype.h> ! /* Define the symbol ETAGS to make the program "etags", ! which makes emacs-style tag tables by default. ! Define CTAGS to make the program "ctags" compatible with the usual one. ! Default is ETAGS. */ #ifndef CTAGS #ifndef ETAGS --- 50,57 ----- #include <stdio.h> #include <ctype.h> ! /* link the executable from this file to ctags and etags. argv[0] is ! * used to determine how the program should behave. */ #define reg register #define logical char *************** *** 55,66 Define CTAGS to make the program "ctags" compatible with the usual one. Default is ETAGS. */ - #ifndef CTAGS - #ifndef ETAGS - #define ETAGS 1 - #endif - #endif - #define reg register #define logical char --- 53,58 ----- /* link the executable from this file to ctags and etags. argv[0] is * used to determine how the program should behave. */ #define reg register #define logical char *************** *** 126,131 int vflag; /* -v: create vgrind style index output */ int xflag; /* -x: create cxref style output */ int eflag; /* -e: emacs style output */ FILE *inf, /* ioptr for current input file */ *outf; /* ioptr for tags file */ --- 118,124 ----- int vflag; /* -v: create vgrind style index output */ int xflag; /* -x: create cxref style output */ int eflag; /* -e: emacs style output */ + char *progname; /* name of the program */ FILE *inf, /* ioptr for current input file */ *outf; /* ioptr for tags file */ *************** *** 177,185 char cmd[100]; int i; ! #ifdef ETAGS ! eflag = 1; ! #endif while (ac > 1 && av[1][0] == '-') { --- 170,180 ----- char cmd[100]; int i; ! if (progname = index(av[0], '/')) ! progname++; ! else ! progname = av[0]; ! eflag = strcmp(progname, "etags") == 0; while (ac > 1 && av[1][0] == '-') { *************** *** 183,189 while (ac > 1 && av[1][0] == '-') { - eflag = 0; for (i=1; av[1][i]; i++) { switch(av[1][i]) --- 178,183 ----- while (ac > 1 && av[1][0] == '-') { for (i=1; av[1][i]; i++) { switch(av[1][i]) *************** *** 226,232 if (ac <= 1) { usage: ! printf("Usage: ctags [-BFaetuwvx] file ...\n"); exit(1); } --- 220,226 ----- if (ac <= 1) { usage: ! printf("Usage: %s [-BFaetuwvx] file ...\n", progname); exit(1); } *************** *** 406,412 if ((np = (NODE *) malloc (sizeof (NODE))) == NULL) { ! fprintf(stderr, "ctags: too many entries to sort\n"); put_entries(head); free_tree(head); head = NULL; --- 400,406 ----- if ((np = (NODE *) malloc (sizeof (NODE))) == NULL) { ! fprintf(stderr, "%s: too many entries to sort\n", progname); put_entries(head); free_tree(head); head = NULL; *************** *** 1387,1397 error (s1, s2) char *s1, *s2; { ! #ifdef CTAGS ! printf ("ctags: "); ! #else ! printf ("etags: "); ! #endif printf (s1, s2); printf ("\n"); } --- 1381,1387 ----- error (s1, s2) char *s1, *s2; { ! printf ("%s: ", progname); printf (s1, s2); printf ("\n"); } *** Makefile.old Mon Jan 12 22:53:30 1987 --- Makefile Fri Jan 16 19:27:02 1987 *************** *** 14,20 ./test-distrib etags: etags.c ! cc -o etags ${CFLAGS} -DETAGS etags.c ctags: etags.c cc -o ctags ${CFLAGS} -DCTAGS etags.c --- 14,20 ----- ./test-distrib etags: etags.c ! cc -o etags ${CFLAGS} etags.c ctags: etags rm -f ctags *************** *** 16,23 etags: etags.c cc -o etags ${CFLAGS} -DETAGS etags.c ! ctags: etags.c ! cc -o ctags ${CFLAGS} -DCTAGS etags.c loadst: loadst.c cc -o loadst ${CFLAGS} loadst.c --- 16,24 ----- etags: etags.c cc -o etags ${CFLAGS} etags.c ! ctags: etags ! rm -f ctags ! ln etags ctags loadst: loadst.c cc -o loadst ${CFLAGS} loadst.c -- Perry Smith Pedz Consultants pedz@megamax, pedz@ctvax, pedz@pollux -- Perry Smith Pedz Consultants pedz@megamax, pedz@ctvax, pedz@pollux