[gnu.utils.bug] Combining Gnu grep/egrep executables

scs@itivax.iti.org (Steve C. Simmons) (07/09/89)

Installing gnu grep/egrep it seemed odd that it came as two
separate executables.  A few minutes work changed things such
that they are now the same.  The resulting combined binary
passes all the regression tests on a Unix-pc using both gcc and
the system cc.  The disk space savings on small machines is
considerable!  Patches to Makefile and grep.c for grep-1.3 follow.

Steve

*** /tmp/,RCSt1a15191	Sat Jul  8 15:43:06 1989
--- Makefile	Sat Jul  8 15:42:43 1989
***************
*** 11,19 ****
  #
  # Add alloca.o if your machine does not support alloca().
  #
! OBJS = dfa.o regex.o
! GOBJ = grep.o
! EOBJ = egrep.o
  
  # Space provided for machine dependent libraries.
  LIBS =
--- 11,17 ----
  #
  # Add alloca.o if your machine does not support alloca().
  #
! OBJS = grep.o dfa.o regex.o
  
  # Space provided for machine dependent libraries.
  LIBS =
***************
*** 23,40 ****
  regress: egrep grep
  	cd tests; sh regress.sh
  
! egrep: $(OBJS) $(EOBJ)
! 	$(CC) $(CFLAGS) -o egrep $(OBJS) $(EOBJ) $(LIBS)
  
! egrep.o: grep.c
! 	$(CC) $(CFLAGS) -DEGREP -c grep.c
! 	mv grep.o egrep.o
  
- grep: $(OBJS) $(GOBJ)
- 	$(CC) $(CFLAGS) -o grep $(OBJS) $(GOBJ) $(LIBS)
- 
  clean:
  	rm -f grep egrep *.o core tests/core tests/tmp.script tests/khadafy.out
  
! dfa.o egrep.o grep.o: dfa.h
! egrep.o grep.o regex.o: regex.h
--- 21,35 ----
  regress: egrep grep
  	cd tests; sh regress.sh
  
! egrep: grep
! 	rm -f egrep
! 	ln grep egrep
  
! grep: $(OBJS)
! 	$(CC) $(CFLAGS) -o grep $(OBJS) $(LIBS)
  
  clean:
  	rm -f grep egrep *.o core tests/core tests/tmp.script tests/khadafy.out
  
! dfa.o grep.o: dfa.h
! grep.o regex.o: regex.h
*** /tmp/,RCSt1a15094	Sat Jul  8 15:36:10 1989
--- grep.c	Sat Jul  8 15:36:15 1989
***************
*** 568,573 ****
--- 568,575 ----
    else
      prog = argv[0];
  
+   /* Compile the regexp according to all the options. */
+ 
    opterr = 0;
    while ((c = getopt(argc, argv, "0123456789A:B:CVbce:f:hilnsvwx")) != EOF)
      switch (c)
***************
*** 680,692 ****
        }
  
    /* Set the syntax depending on whether we are EGREP or not. */
! #ifdef EGREP
!   regsyntax(RE_SYNTAX_EGREP, ignore_case);
!   re_set_syntax(RE_SYNTAX_EGREP);
! #else
!   regsyntax(RE_SYNTAX_GREP, ignore_case);
!   re_set_syntax(RE_SYNTAX_GREP);
! #endif
  
    /* Compile the regexp according to all the options. */
    if (regexp_file)
--- 682,697 ----
        }
  
    /* Set the syntax depending on whether we are EGREP or not. */
!   if ( 0 == strcmp( prog, "egrep" ) )
!     {
!       regsyntax(RE_SYNTAX_EGREP, ignore_case);
!       re_set_syntax(RE_SYNTAX_EGREP);
!     }
!   else
!     {
!       regsyntax(RE_SYNTAX_GREP, ignore_case);
!       re_set_syntax(RE_SYNTAX_GREP);
!     }
  
    /* Compile the regexp according to all the options. */
    if (regexp_file)