This patch will bring a gnats-3.00 release up to release 3.01. After applying the patch, please remove these files: config/mt-a29k config/mt-ebmon29k config/mt-os68k config/mt-ose68000 config/mt-ose68k config/mt-vxworks68 config/mt-vxworks960 gnats/queue.h libiberty/Makefile.dos Please report any bugs to bug-gnats@prep.ai.mit.edu. diff -c2pr gnats-3.00/ChangeLog gnats-3.01/ChangeLog *** gnats-3.00/ChangeLog Mon Mar 8 12:28:31 1993 --- gnats-3.01/ChangeLog Tue Apr 13 16:52:22 1993 *************** *** 1,2 **** --- 1,172 ---- + Tue Apr 13 16:52:16 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * Makefile.in (PRMS): Set back to all-prms. + + Sat Apr 10 12:04:07 1993 Ian Lance Taylor (ian@cygnus.com) + + * test-build.mk: Pass -with-gnu-as for known MIPS native and MIPS + targets, rather than for MIPS hosts. + + Fri Apr 9 13:51:06 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure.in: add comment for --with-x default values + + * config.guess: handle Motorola Delta88 box for SVR3 and SVR4. + + * Makefile.in: add check-* targets for each of the directories in + the tree. Add a definition of RUNTEST that will use the one we + just built, if it exists. Pass this down via FLAGS_TO_PASS. + + Thu Apr 8 09:21:30 1993 Ian Lance Taylor (ian@cygnus.com) + + * configure.in: Removed obsolete references to bfd_target and + target_makefile_frag. + + * build-all.mk: Set assorted targets for Q2. + * config.sub: Recognize z8k-sim and h8300-hms. + * test-build.mk: Really don't pass host to configure. + (HOLES): Added uname. + + Wed Apr 7 15:48:19 1993 Ian Lance Taylor (ian@cygnus.com) + + * configure: Handle an empty program-prefix, program-suffix or + program-transform-name correctly. + + Tue Apr 6 13:48:41 1993 Ian Lance Taylor (ian@cygnus.com) + + * build-all.mk: -G 8 no longer required for MIPS targets. + * test-build.mk: Don't pass host argument to configure; make it + guess. + + Tue Apr 6 10:36:53 1993 Fred Fish (fnf@cygnus.com) + + * Makefile.in (gdb.tar.Z): Fix for building gzip'd distribution. + * Makefile.in (COMPRESS): New macro, like GZIP. + + Fri Apr 2 09:02:31 1993 Ian Lance Taylor (ian@cygnus.com) + + * test-build.mk: Use -with-gnu-as for mips-sgi-irix4 as well. + + * build-all.mk: Set GCC to gcc -O -G 8 for MIPS targets, since gcc + with gas currently defaults to -G 0. + + Thu Apr 1 08:25:42 1993 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in (all-flex): flex depends on byacc. + + * build-all.mk: If host not specified, use config.guess. Pass TAG + to test-build.mk as RELEASE_TAG. + * test-build.mk (configargs): New variable containing arguments to + pass to configure. Set to -with-gnu-as on mips-dec-ultrix. + (FLAGS_TO_PASS): Pass down RELEASE_TAG. + + * config.guess: Use /bin/uname when checking -X argument on SCO, + to avoid invoking GNU uname which doesn't understand -X. + + * test-build.mk: Don't use /usr/unsupported/bin/as on AIX. + + * configure.in: Build gas for mips-*-*. + + Wed Mar 31 21:20:58 1993 K. Richard Pixley (rich@rtl.cygnus.com) + + * Makefile.in (all.normal): insert missing backslash. + + Wed Mar 31 12:31:56 1993 Ian Lance Taylor (ian@cygnus.com) + + * build-all.mk, config/mh-irix4: Bump -XNh value to 1500 to match + gcc requirements. + + * Makefile.in: Complete overhaul to merge many almost identical + targets. + + Tue Mar 30 20:17:01 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) + + * Makefile.in (setup-dirs-gdb): Renamed from setup-dirs. + (gdb.tar.Z): Adjusted. + + * Makefile.in (setup-dirs, taz): New targets; should be general + enough to adapt for gdb sometime. Build only .z file. + (gas.tar.z): New target. + + Tue Mar 30 10:03:09 1993 Ian Lance Taylor (ian@cygnus.com) + + * build-all.mk: Use CC=cc -Xs on Solaris. + + Mon Mar 29 19:59:26 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * config/mh-sun3: cc needs -J to compile cp-parse.c correctly + + * config/mh-solaris: SunPRO C needs -Xs to be able to get a + working xmakefile for Emacs. + + Thu Mar 25 15:14:30 1993 Fred Fish (fnf@cygnus.com) + + * Makefile.in: Incorporate changes suggested by wilson@cygnus.com + for handling BISON for FSF releases. + + Thu Mar 25 06:19:48 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com) + + * configure: Actually implement the change zoo just documented. + + Wed Mar 24 13:02:44 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) + + * configure: when using config.guess, only set target_alias when + it's not already been set (ie, on the command line) + + Mon Mar 22 23:07:39 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Makefile.in: add installcheck target, set PRMS to install-prms + + Sun Mar 21 16:46:12 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure: add support for package_makefile_fragment, handle the + case where a directory has a configure.in file but no Makefile.in + more gracefully (with an actual understandable error message, even); + add support for --without (and add this to the usage message); also + explicitly add a --host=${host_alias} to the command line when + config.guess is used + + Sun Mar 21 12:11:58 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * configure: Must use both --host and --target in recursive calls. + + Thu Mar 18 12:31:35 1993 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in: Change deja-gnu to dejagnu. + + Mon Mar 15 15:44:35 1993 Ian Lance Taylor (ian@cygnus.com) + + * configure.in (h8300-*-*, h8500-*-*): Don't build libg++. + + Fri Mar 12 18:30:14 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure.in: canonicalize all instances to *-*-solaris2*, + also strip out a number of tools to not build for go32 host + + Wed Mar 10 12:08:27 1993 K. Richard Pixley (rich@rtl.cygnus.com) + + * config.guess: add GPL. + + * Makefile.in, config.guess, config.sub, configure: bump + copyrights to 93. + + Wed Mar 10 07:12:48 1993 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in (do-info): Removed obsolete check for existence of + localenv file. + + * Makefile.in (MAKEOVERRIDES): Define to be empty. + + Wed Mar 10 03:11:56 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Makefile.in: a couple of 'else true' for decstation, + support for TclX + + * configure.in: configure tclX too; don't remove Tk on RS/6000 anymore + + Tue Mar 9 16:06:12 1993 K. Richard Pixley (rich@cygnus.com) + + * Makefile.in (setup-dirs): change invocation of make to $(MAKE). + Mon Mar 8 14:52:11 1993 Ken Raeburn (raeburn@cambridge) diff -c2pr gnats-3.00/Makefile.in gnats-3.01/Makefile.in *** gnats-3.00/Makefile.in Mon Mar 8 18:34:56 1993 --- gnats-3.01/Makefile.in Wed Apr 14 13:30:42 1993 *************** *** 1,5 **** # # Makefile for directory with subdirs to build. ! # Copyright (C) 1990, 1991, 1992 Free Software Foundation # # This file is free software; you can redistribute it and/or modify --- 1,5 ---- # # Makefile for directory with subdirs to build. ! # Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation # # This file is free software; you can redistribute it and/or modify *************** RANLIB = ranlib *** 60,64 **** --- 60,66 ---- NM = nm GZIP = gzip + COMPRESS = compress + # BISON: This line sed'ed to BISON = bison -y for FSF releases, don't remove. BISON = `if [ -f $${rootme}/byacc/byacc ] ; \ then echo $${rootme}/byacc/byacc ; \ *************** MAKEINFO = `if [ -f $${rootme}/texinfo/m *** 74,78 **** --- 76,84 ---- else echo makeinfo ; fi` + RUNTEST = `if [ -f $${rootme}/dejagnu/runtest ] ; \ + then echo EXPECT=$${rootme}/expect/expect $${rootme}/dejagnu/runtest ; \ + else echo runtest ; fi` + # libraries that may need to be augmented on a system-by-system basis X11_LIB = -lX11 *************** ALL = all.normal *** 89,95 **** INSTALL_TARGET = install.all - ### for debugging - #GCCVERBOSE=-v - CC_FOR_TARGET = ` \ if [ -f $${rootme}/gcc/Makefile ] ; then \ --- 95,98 ---- *************** BASE_FLAGS_TO_PASS = \ *** 200,203 **** --- 203,207 ---- "GNATS=$(GNATS)" \ "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \ + "RUNTEST=$(RUNTEST)" \ "XTRAFLAGS_FOR_TARGET=$(XTRAFLAGS)" \ "exec_prefix=$(exec_prefix)" \ *************** X11_FLAGS_TO_PASS = \ *** 226,232 **** "X11_LIB=$(X11_LIB)" - # Shell case of subdirectories which are built with the target environment. - TARGET_LIBS=libg++ | xiberty | newlib - # Flags to pass down to makes which are built with the target environment. # The double $ decreases the length of the command line; the variables --- 230,233 ---- *************** EXTRA_GCC_FLAGS = \ *** 259,269 **** GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) # The first rule in the file had better be this one. Don't put any above it. ! all: $(ALL) ! .PHONY: all check dvi info install-info install-info-dirs ! .PHONY: do-info do-check do-dvi do-install-info ! .PHONY: do-clean do-mostlyclean do-distclean do-realclean ! .NOEXPORT: # Do a target for all the subdirectories. A ``make do-X'' will do a --- 260,484 ---- GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) + # This is a list of the targets for all of the modules which are compiled + # using $(FLAGS_TO_PASS). + ALL_MODULES = \ + all-autoconf \ + all-bfd \ + all-binutils \ + all-byacc \ + all-cvs \ + all-dejagnu \ + all-diff \ + all-etc \ + all-fileutils \ + all-find \ + all-flex \ + all-gas \ + all-gawk \ + all-gdb \ + all-gprof \ + all-grep \ + all-gzip \ + all-hello \ + all-indent \ + all-ispell \ + all-ld \ + all-libiberty \ + all-m4 \ + all-make \ + all-mmalloc \ + all-opcodes \ + all-patch \ + all-gnats \ + all-rcs \ + all-readline \ + all-recode \ + all-sed \ + all-send-pr \ + all-shellutils \ + all-sim \ + all-tar \ + all-tcl \ + all-texinfo \ + all-textutils \ + all-tgas \ + all-time \ + all-uudecode \ + all-wdiff + + # This is a list of the check targets for all of the modules which are + # compiled using $(FLAGS_TO_PASS). + CHECK_MODULES = \ + check-autoconf \ + check-bfd \ + check-binutils \ + check-byacc \ + check-cvs \ + check-dejagnu \ + check-diff \ + check-etc \ + check-fileutils \ + check-find \ + check-flex \ + check-gas \ + check-gawk \ + check-gdb \ + check-gprof \ + check-grep \ + check-gzip \ + check-hello \ + check-indent \ + check-ispell \ + check-ld \ + check-libiberty \ + check-m4 \ + check-make \ + check-mmcheckoc \ + check-opcodes \ + check-patch \ + check-gnats \ + check-rcs \ + check-readline \ + check-recode \ + check-sed \ + check-send-pr \ + check-shellutils \ + check-sim \ + check-tar \ + check-tcl \ + check-texinfo \ + check-textutils \ + check-tgas \ + check-time \ + check-uudecode \ + check-wdiff + + # This is a list of the install targets for all of the modules which are + # compiled using $(FLAGS_TO_PASS). + INSTALL_MODULES = \ + install-autoconf \ + install-bfd \ + install-binutils \ + install-byacc \ + install-cvs \ + install-dejagnu \ + install-diff \ + install-etc \ + install-fileutils \ + install-find \ + install-flex \ + install-gas \ + install-gawk \ + install-gdb \ + install-glob \ + install-gprof \ + install-grep \ + install-gzip \ + install-hello \ + install-indent \ + install-ispell \ + install-ld \ + install-libiberty \ + install-m4 \ + install-make \ + install-mmalloc \ + install-opcodes \ + install-patch \ + install-gnats \ + install-rcs \ + install-readline \ + install-recode \ + install-sed \ + install-send-pr \ + install-shellutils \ + install-sim \ + install-tar \ + install-tcl \ + install-texinfo \ + install-textutils \ + install-tgas \ + install-time \ + install-uudecode \ + install-wdiff + + # This is a list of the targets for all of the modules which are compiled + # using $(X11_FLAGS_TO_PASS). + ALL_X11_MODULES = \ + all-emacs \ + all-expect \ + all-tclX \ + all-tk + + # This is a list of the check targets for all of the modules which are + # compiled using $(X11_FLAGS_TO_PASS). + CHECK_X11_MODULES = \ + check-emacs \ + check-expect \ + check-tclX \ + check-tk + + # This is a list of the install targets for all the modules which are + # compiled using $(X11_FLAGS_TO_PASS). + INSTALL_X11_MODULES = \ + install-emacs \ + install-expect \ + install-tclX \ + install-tk + + # This is a list of the targets for all of the modules which are compiled + # using $(TARGET_FLAGS_TO_PASS). + ALL_TARGET_MODULES = \ + all-libg++ \ + all-newlib \ + all-xiberty + + # This is a list of the check targets for all of the modules which are + # compiled using $(TARGET_FLAGS_TO_PASS). + CHECK_TARGET_MODULES = \ + check-libg++ \ + check-newlib \ + check-xiberty + + # This is a list of the install targets for all of the modules which are + # compiled using $(TARGET_FLAGS_TO_PASS). + INSTALL_TARGET_MODULES = \ + install-libg++ \ + install-newlib \ + install-xiberty + + # This is a shell case of all modules which are compiled using + # $(TARGET_FLAGS_TO_PASS), used in the do-X rule. + TARGET_LIBS = libg++ | newlib | xiberty + # The first rule in the file had better be this one. Don't put any above it. ! all: $(ALL) ! .PHONY: all ! # The target built for a native build. ! .PHONY: all.normal ! all.normal: \ ! $(ALL_MODULES) \ ! $(ALL_TARGET_MODULES) \ ! $(ALL_X11_MODULES) \ ! all-gcc ! ! # The target built for a cross build. ! .PHONY: all.cross ! all.cross: \ ! all-bfd \ ! all-binutils \ ! all-byacc \ ! all-dejagnu \ ! all-flex \ ! all-gas \ ! all-gcc \ ! all-gdb \ ! all-ld \ ! all-libiberty \ ! all-mmalloc \ ! all-opcodes \ ! all-readline \ ! all-sim \ ! $(ALL_TARGET_MODULES) # Do a target for all the subdirectories. A ``make do-X'' will do a *************** all: $(ALL) *** 274,283 **** # because it is so large that it can easily overflow the command line # length limit on some systems. ! do-info do-check do-dvi do-install-info do-clean do-mostlyclean do-distclean do-realclean: @target=`echo $@ | sed -e 's/^do-//'`; \ rootme=`pwd`; export rootme; \ srcroot=`cd $(srcdir); pwd`; export srcroot; \ for i in $(SUBDIRS); do \ ! if [ -f ./$$i/localenv ] || [ -f ./$$i/Makefile ]; then \ case $$i in \ $(TARGET_LIBS) ) \ --- 489,509 ---- # because it is so large that it can easily overflow the command line # length limit on some systems. ! DO_X = \ ! do-check \ ! do-clean \ ! do-distclean \ ! do-dvi \ ! do-info \ ! do-install-info \ ! do-installcheck \ ! do-mostlyclean \ ! do-realclean ! .PHONY: $(DO_X) ! $(DO_X): @target=`echo $@ | sed -e 's/^do-//'`; \ rootme=`pwd`; export rootme; \ srcroot=`cd $(srcdir); pwd`; export srcroot; \ for i in $(SUBDIRS); do \ ! if [ -f ./$$i/Makefile ]; then \ case $$i in \ $(TARGET_LIBS) ) \ *************** do-info do-check do-dvi do-install-info *** 307,312 **** --- 533,543 ---- done + # Here are the targets which correspond to the do-X targets. + + .PHONY: info check installcheck dvi install-info + .PHONY: clean distclean mostlyclean realclean local-clean local-distclean info: do-info check: do-check + installcheck: do-installcheck dvi: do-dvi *************** install-info: install-info-dirs do-insta *** 314,341 **** if [ -f dir.info ] ; then \ $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \ ! fi do-install-info: install-info-dirs - all.normal: all-m4 all-autoconf all-libiberty all-mmalloc all-texinfo \ - all-byacc all-flex all-opcodes all-bfd all-ld all-gas all-tgas \ - all-gcc all-binutils all-libg++ all-readline all-sim all-gdb \ - all-make all-rcs all-cvs all-diff all-grep \ - all-patch all-emacs all-ispell all-etc \ - all-tcl all-tk all-expect \ - all-newlib \ - all-gprof all-gnats all-send-pr all-libm all-deja-gnu \ - all-fileutils all-find all-gawk all-sed all-shellutils \ - all-textutils all-time all-wdiff all-uudecode \ - all-hello all-tar all-gzip all-indent all-recode - - - all.cross: all-libiberty all-mmalloc all-gas all-byacc all-flex all-ld \ - all-opcodes all-bfd all-readline all-sim \ - all-gdb all-binutils all-gcc all-newlib \ - all-deja-gnu - - .PHONY: clean distclean mostlyclean realclean local-clean local-distclean - local-clean: -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E --- 545,552 ---- if [ -f dir.info ] ; then \ $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \ ! else true ; fi do-install-info: install-info-dirs local-clean: -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *************** distclean: do-distclean local-clean loca *** 349,360 **** realclean: do-realclean local-clean local-distclean ! uninstall: ! @echo "the uninstall target is not supported in this tree" install: $(INSTALL_TARGET) ! -parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \ ! if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi ! -if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; fi install.all: install-no-fixedincludes @if [ -f ./gcc/Makefile ] ; then \ --- 560,572 ---- realclean: do-realclean local-clean local-distclean ! # Installation targets. + .PHONY: install uninstall install: $(INSTALL_TARGET) ! ! uninstall: ! @echo "the uninstall target is not supported in this tree" + .PHONY: install.all install.all: install-no-fixedincludes @if [ -f ./gcc/Makefile ] ; then \ *************** install.all: install-no-fixedincludes *** 366,425 **** fi ! install-no-fixedincludes: install-dirs gcc-no-fixedincludes \ ! install-autoconf \ ! install-bfd \ ! install-binutils \ ! install-byacc \ ! install-cvs \ ! install-deja-gnu \ ! install-diff \ ! install-emacs \ ! install-etc \ ! install-expect \ ! install-fileutils \ ! install-find \ ! install-flex \ ! install-gas \ ! install-gawk \ ! install-gdb \ ! install-glob \ ! install-gprof \ ! install-grep \ ! install-gzip \ ! install-hello \ ! install-indent \ ! install-ispell \ ! install-ld \ ! install-libg++ \ ! install-libiberty \ ! install-libm \ ! install-m4 \ ! install-make \ ! install-mmalloc \ ! install-newlib \ ! install-opcodes \ ! install-patch \ ! install-gnats \ ! install-rcs \ ! install-readline \ ! install-recode \ ! install-sed \ ! install-send-pr \ ! install-shellutils \ ! install-sim \ ! install-tar \ ! install-tcl \ ! install-texinfo \ ! install-textutils \ ! install-time \ ! install-tk \ ! install-uudecode \ ! install-wdiff - # # Install the gcc headers files, but not the fixed include files, ! # which we are not allowed to distribute. This rule is very dependent ! # on the workings of the gcc Makefile.in. ! # gcc-no-fixedincludes: @if [ -f ./gcc/Makefile ]; then \ --- 578,595 ---- fi ! # install-no-fixedincludes is used because Cygnus can not distributed ! # the fixed header files. ! .PHONY: install-no-fixedincludes ! install-no-fixedincludes: \ ! install-dirs \ ! gcc-no-fixedincludes \ ! $(INSTALL_MODULES) \ ! $(INSTALL_TARGET_MODULES) \ ! $(INSTALL_X11_MODULES) # Install the gcc headers files, but not the fixed include files, ! # which Cygnus is not allowed to distribute. This rule is very ! # dependent on the workings of the gcc Makefile.in. ! .PHONY: gcc-no-fixedincludes gcc-no-fixedincludes: @if [ -f ./gcc/Makefile ]; then \ *************** gcc-no-fixedincludes: *** 437,1411 **** else true; fi ! install.cross: install-dirs install-libiberty install-mmalloc \ ! install-binutils install-opcodes install-byacc install-flex \ ! install-ld install-gas install-readline \ ! install-glob install-gdb install-mmalloc \ ! install-newlib \ ! install-gcc install-etc install-deja-gnu ! ! ### gzip ! all-gzip: all-libiberty ! @if [ -f ./gzip/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gzip; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-gzip: force ! @if [ -f ./gzip/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gzip; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### hello ! all-hello: all-libiberty ! @if [ -f ./hello/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./hello; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-hello: force ! @if [ -f ./hello/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./hello; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### recode ! all-recode: all-libiberty ! @if [ -f ./recode/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./recode; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-recode: force ! @if [ -f ./recode/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./recode; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### indent ! all-indent: force ! @if [ -f ./indent/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./indent; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-indent: force ! @if [ -f ./indent/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./indent; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### tar ! all-tar: all-libiberty ! @if [ -f ./tar/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./tar; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-tar: force ! @if [ -f ./tar/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./tar; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ! ### deja-gnu ! all-deja-gnu: force ! @if [ -f ./deja-gnu/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./deja-gnu; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-deja-gnu: force ! @if [ -f ./deja-gnu/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./deja-gnu; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### autoconf ! all-autoconf: force ! @if [ -f ./autoconf/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./autoconf; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-autoconf: force ! @if [ -f ./autoconf/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./autoconf; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### etc ! all-etc: force ! @if [ -f ./etc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./etc; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-etc: force ! @if [ -f ./etc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./etc; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### libiberty ! all-libiberty: force ! @if [ -f ./libiberty/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./libiberty; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-libiberty: force ! @if [ -f ./libiberty/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./libiberty; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### xiberty ! all-xiberty: all-gcc all-newlib ! @if [ -f ./xiberty/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./xiberty; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-xiberty: force ! @if [ -f ./xiberty/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./xiberty; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### mmalloc ! all-mmalloc: force ! @if [ -f ./mmalloc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./mmalloc; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-mmalloc: force ! @if [ -f ./mmalloc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./mmalloc; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### texinfo ! all-texinfo: all-libiberty ! @if [ -f ./texinfo/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./texinfo; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-texinfo: force ! @if [ -f ./texinfo/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./texinfo; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### bfd ! all-bfd: force ! @if [ -f ./bfd/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./bfd; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-bfd: force ! @if [ -f ./bfd/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./bfd; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ! ### opcodes ! all-opcodes: force ! @if [ -f ./opcodes/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./opcodes; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-opcodes: force ! @if [ -f ./opcodes/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./opcodes; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ### binutils ! all-binutils: all-opcodes all-libiberty all-bfd all-flex ! @if [ -f ./binutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./binutils; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ else \ ! true ; \ fi ! install-binutils: force ! @if [ -f ./binutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./binutils; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ else \ ! true ; \ fi ! ### newlib ! all-newlib: all-binutils all-ld all-gas all-gcc ! @if [ -f ./newlib/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./newlib; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) all) ; \ else \ ! true ; \ fi ! install-newlib: force ! @if [ -f ./newlib/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./newlib; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ; \ else \ ! true ; \ fi ! ! ### gprof ! all-gprof: all-libiberty all-bfd ! @if [ -f ./gprof/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gprof; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ else \ ! true ; \ fi ! install-gprof: force ! @if [ -f ./gprof/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gprof; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ else \ ! true ; \ fi ! ### byacc ! all-byacc: force ! @if [ -f ./byacc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./byacc; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ fi ! install-byacc: force ! @if [ -f ./byacc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./byacc; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ fi ! ### flex ! all-flex: all-libiberty ! @if [ -f ./flex/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./flex; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ else \ ! true ; \ fi ! install-flex: force ! @if [ -f ./flex/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./flex; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ### gcc ! all-gcc: all-libiberty all-byacc all-binutils all-gas @if [ -f ./gcc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./gcc; \ ! $(MAKE) $(GCC_FLAGS_TO_PASS) all) ; \ else \ ! true ; \ fi ! install-gcc: force @if [ -f ./gcc/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./gcc; \ ! $(MAKE) $(GCC_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### readline ! all-readline: force ! @if [ -f ./readline/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./readline; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-readline: force ! @if [ -f ./readline/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./readline; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### glob ! all-glob: force ! @if [ -f ./glob/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./glob; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-glob: force ! @if [ -f ./glob/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./glob; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### gas ! all-gas: all-libiberty all-opcodes all-bfd ! @if [ -f ./gas/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gas; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-gas: force ! @if [ -f ./gas/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gas; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### gas ! all-tgas: all-libiberty all-bfd ! @if [ -f ./tgas/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./tgas; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! ! ### ld ! all-ld: all-libiberty all-bfd all-byacc all-flex ! @if [ -f ./ld/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./ld; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-ld: force ! @if [ -f ./ld/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./ld; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### gdb ! all-gdb: all-bfd all-opcodes all-libiberty all-mmalloc all-readline all-glob all-byacc ! @if [ -f ./gdb/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gdb; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-gdb: force ! @if [ -f ./gdb/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gdb; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### make ! all-make: all-libiberty ! @if [ -f ./make/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./make; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-make: force ! @if [ -f ./make/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./make; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ else \ ! true ; \ fi ! ### diff all-diff: all-libiberty ! @if [ -f ./diff/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./diff; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-diff: force ! @if [ -f ./diff/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./diff/; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### grep ! all-grep: force ! @if [ -f ./grep/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./grep; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-grep: force ! @if [ -f ./grep/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./grep; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### rcs ! all-rcs: force ! @if [ -f ./rcs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./rcs; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-rcs: force ! @if [ -f ./rcs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./rcs; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### cvs ! all-cvs: force ! @if [ -f ./cvs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./cvs; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-cvs: force ! @if [ -f ./cvs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./cvs; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### patch ! all-patch: force ! @if [ -f ./patch/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./patch; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-patch: force ! @if [ -f ./patch/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./patch; \ ! $(MAKE) $(FLAGS_TO_PASS) \ ! bindir=$(bindir) \ ! man1dir=$(man1dir) install) ; \ ! else \ ! true ; \ ! fi ! ! ### emacs ! all-emacs: force ! @if [ -f ./emacs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./emacs; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-emacs: force ! @if [ -f ./emacs/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./emacs; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### ispell all-ispell: all-emacs ! @if [ -f ./ispell/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./ispell; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-ispell: force ! @if [ -f ./ispell/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./ispell; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### gnats ! all-gnats: force ! @if [ -f ./gnats/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gnats; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-gnats: force ! @if [ -f ./gnats/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gnats; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### send-pr ! all-send-pr: force ! @if [ -f ./send-pr/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./send-pr; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-send-pr: force ! @if [ -f ./send-pr/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./send-pr; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### libm ! all-libm: force ! @if [ -f ./libm/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./libm; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-libm: force ! @if [ -f ./libm/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./libm; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### libg++ ! all-libg++: all-gas all-ld all-gcc all-xiberty all-newlib ! @if [ -f ./libg++/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./libg++; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-libg++: force ! @if [ -f ./libg++/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd` ; export srcroot ; \ ! (cd ./libg++; \ ! $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ### tcl ! all-tcl: ! @if [ -f ./tcl/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./tcl; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-tcl: force ! @if [ -f ./tcl/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./tcl; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ! ### tk ! all-tk: all-tcl ! @if [ -f ./tk/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./tk; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-tk: force ! @if [ -f ./tk/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./tk; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### expect ! all-expect: all-tcl ! @if [ -f ./expect/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./expect; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-expect: force ! @if [ -f ./expect/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot ; \ ! (cd ./expect; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### sim ! all-sim: all-bfd ! @if [ -f ./sim/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./sim; \ ! $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-sim: force ! @if [ -f ./sim/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./sim; \ ! $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### fileutils ! all-fileutils: force ! @if [ -f ./fileutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./fileutils; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-fileutils: force ! @if [ -f ./fileutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./fileutils; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### find ! all-find: force ! @if [ -f ./find/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./find; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-find: force ! @if [ -f ./find/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./find; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### gawk ! all-gawk: force ! @if [ -f ./gawk/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gawk; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-gawk: force ! @if [ -f ./gawk/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./gawk; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### m4 all-m4: all-libiberty ! @if [ -f ./m4/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./m4; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-m4: force ! @if [ -f ./m4/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./m4; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### sed ! all-sed: force ! @if [ -f ./sed/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./sed; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-sed: force ! @if [ -f ./sed/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./sed; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### time ! all-time: force ! @if [ -f ./time/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./time; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-time: force ! @if [ -f ./time/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./time; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### wdiff ! all-wdiff: force ! @if [ -f ./wdiff/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./wdiff; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-wdiff: force ! @if [ -f ./wdiff/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./wdiff; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### uudecode all-uudecode: all-libiberty ! @if [ -f ./uudecode/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./uudecode; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-uudecode: force ! @if [ -f ./uudecode/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./uudecode; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### shellutils ! all-shellutils: force ! @if [ -f ./shellutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./shellutils; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-shellutils: force ! @if [ -f ./shellutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./shellutils; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### textutils ! all-textutils: force ! @if [ -f ./textutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./textutils; $(MAKE) $(FLAGS_TO_PASS) all) ; \ ! else \ ! true ; \ ! fi ! ! install-textutils: force ! @if [ -f ./textutils/Makefile ] ; then \ ! rootme=`pwd` ; export rootme ; \ ! (cd ./textutils; $(MAKE) $(FLAGS_TO_PASS) install) ; \ ! else \ ! true ; \ ! fi ! ! ### other supporting targets --- 607,825 ---- else true; fi ! .PHONY: install.cross ! install.cross: \ ! install-dirs \ ! install-binutils \ ! install-byacc \ ! install-dejagnu \ ! install-etc \ ! install-flex \ ! install-gas \ ! install-gcc \ ! install-gdb \ ! install-glob \ ! install-ld \ ! install-libiberty \ ! install-mmalloc \ ! install-opcodes \ ! install-readline \ ! $(INSTALL_TARGET_MODULES) ! # This rule is used to build the modules which use FLAGS_TO_PASS. To ! # build a target all-X means to cd to X and make all. ! # all-glob is handled specially because it doesn't actually build. ! .PHONY: $(ALL_MODULES) all-glob ! $(ALL_MODULES) all-glob: ! @dir=`echo $@ | sed -e 's/all-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \ else \ ! true; \ fi ! # This rule is used to check the modules which use FLAGS_TO_PASS. To ! # build a target check-X means to cd to X and make all. ! .PHONY: $(CHECK_MODULES) ! $(CHECK_MODULES): ! @dir=`echo $@ | sed -e 's/check-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ else \ ! true; \ fi ! # This rule is used to install the modules which use FLAGS_TO_PASS. ! # To build a target install-X means to cd to X and make install. ! .PHONY: $(INSTALL_MODULES) ! $(INSTALL_MODULES): install-dirs ! @dir=`echo $@ | sed -e 's/install-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ else \ ! true; \ fi ! # This rule is used to build the modules which use TARGET_FLAGS_TO_PASS. ! # To build a target all-X means to cd to X and make all. ! .PHONY: $(ALL_TARGET_MODULES) ! $(ALL_TARGET_MODULES): ! @dir=`echo $@ | sed -e 's/all-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) all); \ else \ ! true; \ fi ! # This rule is used to check the modules which use TARGET_FLAGS_TO_PASS. ! # To build a target install-X means to cd to X and make install. ! .PHONY: $(CHECK_TARGET_MODULES) ! $(CHECK_TARGET_MODULES): ! @dir=`echo $@ | sed -e 's/check-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) check); \ else \ ! true; \ fi ! # This rule is used to install the modules which use ! # TARGET_FLAGS_TO_PASS. To build a target install-X means to cd to X ! # and make install. ! .PHONY: $(INSTALL_TARGET_MODULES) ! $(INSTALL_TARGET_MODULES): install-dirs ! @dir=`echo $@ | sed -e 's/install-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) install); \ else \ ! true; \ fi ! # This rule is used to build the modules which use X11_FLAGS_TO_PASS. ! # To build a target all-X means to cd to X and make all. ! .PHONY: $(ALL_X11_MODULES) ! $(ALL_X11_MODULES): ! @dir=`echo $@ | sed -e 's/all-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all); \ ! else \ ! true; \ fi ! # This rule is used to check the modules which use X11_FLAGS_TO_PASS. ! # To build a target check-X means to cd to X and make all. ! .PHONY: $(CHECK_X11_MODULES) ! $(CHECK_X11_MODULES): ! @dir=`echo $@ | sed -e 's/check-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check); \ ! else \ ! true; \ fi ! # This rule is used to install the modules which use X11_FLAGS_TO_PASS. ! # To build a target install-X means to cd to X and make install. ! .PHONY: $(INSTALL_X11_MODULES) ! $(INSTALL_X11_MODULES): ! @dir=`echo $@ | sed -e 's/install-//'`; \ ! if [ -f ./$${dir}/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd $${dir}; \ ! $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install); \ else \ ! true; \ fi ! # gcc is the only module which uses GCC_FLAGS_TO_PASS. ! .PHONY: all-gcc ! all-gcc: @if [ -f ./gcc/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \ else \ ! true; \ fi ! .PHONY: install-gcc ! install-gcc: @if [ -f ./gcc/Makefile ] ; then \ ! rootme=`pwd`; export rootme; \ ! srcroot=`cd $(srcdir); pwd`; export srcroot; \ ! (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ else \ ! true; \ fi ! # This is a list of inter-dependencies among modules. ! all-autoconf: ! all-bfd: ! all-binutils: all-libiberty all-opcodes all-bfd all-flex ! all-byacc: ! all-cvs: ! all-dejagnu: all-diff: all-libiberty ! all-emacs: ! all-etc: ! all-expect: all-tcl ! all-fileutils: ! all-find: ! all-flex: all-libiberty all-byacc ! all-gas: all-libiberty all-opcodes all-bfd ! all-gawk: ! all-gcc: all-libiberty all-byacc all-binutils all-gas ! all-gdb: all-libiberty all-opcodes all-bfd all-mmalloc all-readline all-glob all-byacc ! all-glob: ! all-gprof: all-libiberty all-bfd ! all-grep: ! all-gzip: all-libiberty ! all-hello: all-libiberty ! all-indent: all-ispell: all-emacs ! all-ld: all-libiberty all-bfd all-byacc all-flex all-libg++: all-gas all-ld all-gcc all-xiberty all-newlib ! all-libiberty: all-m4: all-libiberty ! all-make: all-libiberty ! all-mmalloc: ! all-newlib: all-binutils all-gas all-gcc ! all-opcodes: ! all-patch: ! all-gnats: ! all-rcs: ! all-readline: ! all-recode: all-libiberty ! all-sed: ! all-send-pr: ! all-shellutils: ! all-sim: all-libiberty all-bfd ! all-tar: all-libiberty ! all-tcl: ! all-tclX: all-tcl all-tk ! all-tk: all-tcl ! all-texinfo: all-libiberty ! all-textutils: ! all-tgas: all-libiberty all-bfd ! all-time: ! all-wdiff: all-uudecode: all-libiberty ! all-xiberty: all-gcc all-newlib ### other supporting targets *************** MAKEDIRS= \ *** 1416,1437 **** $(tooldir) ! # $(bindir) \ ! # $(libdir) \ ! # $(includedir) \ ! # $(datadir) \ ! # $(docdir) \ ! # $(mandir) \ ! # $(man1dir) \ ! # $(man5dir) ! ! # $(man2dir) \ ! # $(man3dir) \ ! # $(man4dir) \ ! # $(man6dir) \ ! # $(man7dir) \ ! # $(man8dir) ! install-dirs: ! for i in $(MAKEDIRS) ; do \ echo Making $$i... ; \ parent=`echo $$i|sed -e 's@/[^/]*$$@@'`; \ --- 830,836 ---- $(tooldir) ! .PHONY: install-dirs install-dirs: ! @for i in $(MAKEDIRS) ; do \ echo Making $$i... ; \ parent=`echo $$i|sed -e 's@/[^/]*$$@@'`; \ *************** install-dirs: *** 1448,1451 **** --- 847,851 ---- done + .PHONY: install-info-dirs install-info-dirs: if [ -d $(prefix) ] ; then true ; else mkdir $(prefix) ; fi *************** dir.info: do-install-info *** 1458,1461 **** --- 858,862 ---- $(srcdir)/texinfo/gen-info-dir $(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \ mv -f dir.info.new dir.info ; \ + else true ; \ fi *************** ls: *** 1482,1487 **** done - force: - # with the gnu make, this is done automatically. --- 883,886 ---- *************** GDB_SUPPORT_DIRS= bfd include libiberty *** 1499,1509 **** GDB_SUPPORT_FILES= $(GDB_SUPPORT_DIRS) ! setup-dirs: force ./configure sun4 ! make clean ./configure -rm sun4 chmod og=u `find etc $(DEVO_SUPPORT) $(GDB_SUPPORT_FILES) -print` ! gdb.tar.Z: setup-dirs (cd gdb; $(MAKE) -f Makefile.in make-proto-gdb.dir BISON="byacc") $(MAKE) $(MFLAGS) -f Makefile.in make-gdb.tar.Z --- 898,909 ---- GDB_SUPPORT_FILES= $(GDB_SUPPORT_DIRS) ! .PHONY: setup-dirs-gdb gdb.tar.Z make-gdb.tar.Z ! setup-dirs-gdb: ./configure sun4 ! $(MAKE) clean ./configure -rm sun4 chmod og=u `find etc $(DEVO_SUPPORT) $(GDB_SUPPORT_FILES) -print` ! gdb.tar.Z: setup-dirs-gdb (cd gdb; $(MAKE) -f Makefile.in make-proto-gdb.dir BISON="byacc") $(MAKE) $(MFLAGS) -f Makefile.in make-gdb.tar.Z *************** make-gdb.tar.Z: $(DEVO_SUPPORT) $(GDB_SU *** 1537,1542 **** sed -e '/^all\.normal: /s/\all-texinfo //' \ -e '/^ install-texinfo /d' \ ! -e '\/^BISON =/,\/^$$/c\ ! BISON = bison -y' \ proto-toplev/Makefile.in --- 937,942 ---- sed -e '/^all\.normal: /s/\all-texinfo //' \ -e '/^ install-texinfo /d' \ ! -e '/^BISON = /,/^$$/d' \ ! -e '/^# BISON:/s/.*/BISON = bison -y/' \ proto-toplev/Makefile.in *************** make-gdb.tar.Z: $(DEVO_SUPPORT) $(GDB_SU *** 1546,1554 **** chmod og=u `find proto-toplev -print` (VER=`sed Making gdb-$$VER.tar.Z"; \ ln -s proto-toplev gdb-$$VER; \ ! tar cfh - gdb-$$VER \ ! | compress -v >gdb-$$VER.tar.Z) ! $(GZIP) -d gdb-$$VER.tar.z # end of Makefile.in --- 946,1027 ---- chmod og=u `find proto-toplev -print` (VER=`sed Making gdb-$$VER.tar.Z"; \ ! tar cfh - gdb-$$VER | $(COMPRESS) -v >gdb-$$VER.tar.Z; \ ! echo "==> Making gdb-$$VER.tar.z"; \ ! tar cfh - gdb-$$VER | $(GZIP) -v -9 >gdb-$$VER.tar.z) ! ! # When you use `make setup-dirs' or `make taz' you should always redefine ! # this macro. ! SUPPORT_FILES = list-of-support-files-for-tool-in-question ! # Directories that might want `make proto-dir' run. ! PROTODIRS= gdb ! ! .PHONY: setup-dirs taz ! setup-dirs: ! ./configure sun4 ! $(MAKE) clean ! ./configure -rm sun4 ! chmod og=u `find etc $(DEVO_SUPPORT) $(SUPPORT_FILES) -print` ! for d in .. $(PROTODIRS) ; do \ ! if [ $$d != ".." ] && [ -d $$d ]; then \ ! (cd $$d ; $(MAKE) -f Makefile.in proto-dir) ; \ ! else true ; fi ; \ ! done ! ! taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex ! rm -rf proto-toplev; mkdir proto-toplev ! for d in .. $(PROTODIRS) ; do \ ! if [ $$d != .. ]; then \ ! if [ -d $$d ]; then \ ! ln -s ../$$d/proto-$$d.dir proto-toplev/$$d ; \ ! else true ; fi ; \ ! else true ; fi ; \ ! done ! (cd proto-toplev; for i in $(TOOL) $(DEVO_SUPPORT) $(SUPPORT_FILES); do \ ! if [ ! -d $$i ]; then ln -s ../$$i . ; else true ; fi ; \ ! done) ! mkdir proto-toplev/etc ! (cd proto-toplev/etc; for i in $(ETC_SUPPORT); do \ ! ln -s ../../etc/$$i . ; \ ! done) ! # Put only one copy (four hard links) of COPYING in the tar file. ! ## FIX ME LATER ! ! # Take out texinfo and glob from configurable dirs ! rm proto-toplev/configure.in ! sed -e '/^host_tools=/s/texinfo //' \ ! -e '/^host_libs=/s/glob //' \ ! proto-toplev/configure.in ! ! # Take out texinfo from a few places; make simple BISON=bison line. ! rm proto-toplev/Makefile.in ! sed -e '/^all\.normal: /s/\all-texinfo //' \ ! -e '/^ install-texinfo /d' \ ! -e '/^BISON = /,/^$$/d' \ ! -e '/^# BISON:/s/.*/BISON = bison -y/' \ ! proto-toplev/Makefile.in ! ! mkdir proto-toplev/texinfo ! ln -s ../../texinfo/texinfo.tex proto-toplev/texinfo/ ! ln -s ../../texinfo/tex3patch proto-toplev/texinfo/ ! chmod og=u `find proto-toplev -print` ! (VER=`sed <$(TOOL)/Makefile.in -n 's/VERSION *= *//p'`; \ ! echo "==> Making $(TOOL)-$$VER.tar.z"; \ ! ln -s proto-toplev $(TOOL)-$$VER; \ ! tar cfh - $(TOOL)-$$VER \ ! | $(GZIP) -v >$(TOOL)-$$VER.tar.z) ! ! GAS_SUPPORT_DIRS= bfd include libiberty opcodes ! ! .PHONY: gas.tar.z ! gas.tar.z: $(DEVO_SUPPORT) $(GAS_SUPPORT_DIRS) gas texinfo/texinfo.tex ! $(MAKE) -f Makefile.in setup-dirs SUPPORT_FILES="$(GAS_SUPPORT_DIRS)" ! $(MAKE) -f Makefile.in taz SUPPORT_FILES="$(GAS_SUPPORT_DIRS)" TOOL=gas ! ! ! .NOEXPORT: ! MAKEOVERRIDES= ! # end of Makefile.in diff -c2pr gnats-3.00/build-all.mk gnats-3.01/build-all.mk *** gnats-3.00/build-all.mk Sat Feb 13 03:12:40 1993 --- gnats-3.01/build-all.mk Thu Apr 8 09:26:01 1993 *************** *** 6,24 **** # - ifndef host - error:; @echo You must set the variable \"host\" to use this Makefile ; exit 1 - else - - # the rest of the makefile - TREE = devo NATIVE = native ! DATE = 930213 TAG = latest-$(DATE) ! INSTALLDIR = /big/progressive-test/$(TAG) GCC = gcc -O --- 6,22 ---- # TREE = devo NATIVE = native ! DATE = 930408 TAG = latest-$(DATE) ! INSTALLDIR = /build/ian/devo-test/$(TAG) ! ! ifndef host ! host := $(shell $(TREE)/config.guess) ! endif GCC = gcc -O *************** tlog = 1> $(canonhost)-x-$$i-build-lo *** 29,46 **** canonhost := $(shell $(TREE)/config.sub $(host)) ! ifeq ($(canonhost),i386-unknown-sco3.2v4) canonhost := i386-sco3.2v4 endif ifeq ($(canonhost),sparc-sun-sunos4.1.1) ! TARGETS = $(NATIVE) m68k-aout i386-aout a29k-amd-udi \ ! i960-vxworks m68k-coff m68k-vxworks \ ! i960-intel-nindy sparc-aout sparc-vxworks \ ! sparclite-aout sparclitefrwcompat-aout all: all-cygnus endif ifeq ($(canonhost),m68k-sun-sunos4.1.1) ! TARGETS = $(NATIVE) m68k-vxworks m68k-aout i386-aout GCC = gcc -O -msoft-float CC = cc -J --- 27,53 ---- canonhost := $(shell $(TREE)/config.sub $(host)) ! ! # Convert config.guess results to a simpler form. ! ifeq ($(canonhost),mips-dec-ultrix4.2) ! canonhost := mips-dec-ultrix ! endif ! ifeq ($(canonhost),mips-sgi-irix4.0.1) ! canonhost := mips-sgi-irix4 ! endif ! ifeq ($(canonhost),i486-unknown-sco3.2v4.0) canonhost := i386-sco3.2v4 endif ifeq ($(canonhost),sparc-sun-sunos4.1.1) ! TARGETS = $(NATIVE) m68k-aout m68k-vxworks i960-intel-nindy \ ! i386-aout a29k-amd-udi sparc-vxworks m68k-coff \ ! i960-vxworks sparc-aout sparclite-aout \ ! sparclitefrwcompat-aout h8300-hms z8k-sim \ ! mips-idt-ecoff all: all-cygnus endif ifeq ($(canonhost),m68k-sun-sunos4.1.1) ! TARGETS = $(NATIVE) m68k-aout m68k-vxworks m68k-coff GCC = gcc -O -msoft-float CC = cc -J *************** endif *** 49,59 **** ifeq ($(canonhost),sparc-sun-solaris2) ! TARGETS = $(NATIVE) m68k-aout sparc-aout a29k-amd-udi all: all-cygnus endif ifeq ($(canonhost),mips-dec-ultrix) ! TARGETS = $(NATIVE) m68k-vxworks m68k-aout i960-vxworks \ ! sparc-vxworks m68k-coff i386-aout sparc-aout i960-intel-nindy CC = cc -Wf,-XNg1000 all: all-cygnus --- 56,68 ---- ifeq ($(canonhost),sparc-sun-solaris2) ! TARGETS = $(NATIVE) m68k-vxworks m68k-aout sparc-aout ! CC = cc -Xs all: all-cygnus endif ifeq ($(canonhost),mips-dec-ultrix) ! TARGETS = $(NATIVE) m68k-aout ! # TARGETS = $(NATIVE) m68k-vxworks m68k-aout i960-vxworks \ ! # sparc-vxworks m68k-coff i386-aout sparc-aout i960-intel-nindy CC = cc -Wf,-XNg1000 all: all-cygnus *************** endif *** 61,71 **** ifeq ($(canonhost),mips-sgi-irix4) ! TARGETS = $(NATIVE) m68k-vxworks a29k-amd-udi ! CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh1100 all: all-cygnus endif ifeq ($(canonhost),rs6000-ibm-aix) ! TARGETS = $(NATIVE) m68k-vxworks i960-vxworks m68k-aout all: all-cygnus endif --- 70,80 ---- ifeq ($(canonhost),mips-sgi-irix4) ! TARGETS = $(NATIVE) m68k-vxworks ! CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh1500 all: all-cygnus endif ifeq ($(canonhost),rs6000-ibm-aix) ! TARGETS = $(NATIVE) m68k-aout m68k-vxworks i960-vxworks all: all-cygnus endif *************** endif *** 80,88 **** ifeq ($(canonhost),hppa1.1-hp-hpux) #TARGETS = m68k-aout m68k-coff m68k-vxworks i960-vxworks a29k-amd-udi ! TARGETS = m68k-aout i386-aout a29k-amd-udi \ ! i960-vxworks m68k-coff m68k-vxworks \ ! sparc-aout sparc-vxworks \ ! sparclite-aout sparclitefrwcompat-aout CC = cc all: all-native --- 89,98 ---- ifeq ($(canonhost),hppa1.1-hp-hpux) + TARGETS = i960-vxworks m68k-aout m68k-vxworks #TARGETS = m68k-aout m68k-coff m68k-vxworks i960-vxworks a29k-amd-udi ! #TARGETS = m68k-aout i386-aout a29k-amd-udi \ ! # i960-vxworks m68k-coff m68k-vxworks \ ! # sparc-aout sparc-vxworks \ ! # sparclite-aout sparclitefrwcompat-aout CC = cc all: all-native *************** FLAGS_TO_PASS := \ *** 98,102 **** "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ ! "host=$(canonhost)" all-cygnus: --- 108,113 ---- "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ ! "host=$(canonhost)" \ ! "RELEASE_TAG=$(TAG)" all-cygnus: *************** build: *** 195,200 **** done - endif # host - ### Local Variables: ### fill-column: 131 --- 206,209 ---- diff -c2pr gnats-3.00/config/ChangeLog gnats-3.01/config/ChangeLog *** gnats-3.00/config/ChangeLog Mon Mar 8 12:21:44 1993 --- gnats-3.01/config/ChangeLog Thu Apr 8 11:24:28 1993 *************** *** 1,2 **** --- 1,8 ---- + Thu Apr 8 11:21:52 1993 Ian Lance Taylor (ian@cygnus.com) + + * mt-a29k, mt-ebmon29k, mt-os68k, mt-ose68000, mt-ose68k, + mt-vxworks68, mt-vxworks960: Removed obsolete, unused target + Makefile fragment files. + Mon Mar 8 15:05:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) diff -c2pr gnats-3.00/config/mh-aix gnats-3.01/config/mh-aix *** gnats-3.00/config/mh-aix Tue Mar 24 23:52:22 1992 --- gnats-3.01/config/mh-aix Tue Mar 23 00:17:50 1993 *************** *** 1 **** --- 1,6 ---- INSTALL = cp + # X11 + #X11_HOME_DIRECTORY=/usr/lpp/X11 + X11_HOME_DIRECTORY=/usr/unsupported + X11_INCLUDE_FLAGS = -I$(X11_HOME_DIRECTORY)/include + X11_LIB_FLAGS = -L$(X11_HOME_DIRECTORY)/lib *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/config/mh-aix386 Mon Mar 8 12:21:19 1993 *************** *** 0 **** --- 1,2 ---- + INSTALL = cp + RANLIB = @: diff -c2pr gnats-3.00/config/mh-irix4 gnats-3.01/config/mh-irix4 *** gnats-3.00/config/mh-irix4 Sat Sep 26 08:04:35 1992 --- gnats-3.01/config/mh-irix4 Wed Mar 31 18:30:09 1993 *************** *** 4,8 **** # compile. ! CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh1100 SYSV = -DSYSV RANLIB = true --- 4,8 ---- # compile. ! CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh1500 SYSV = -DSYSV RANLIB = true diff -c2pr gnats-3.00/config/mh-solaris gnats-3.01/config/mh-solaris *** gnats-3.00/config/mh-solaris Mon Nov 30 14:57:13 1992 --- gnats-3.01/config/mh-solaris Mon Mar 29 20:01:20 1993 *************** RANLIB = true *** 5,11 **** INSTALL = cp CFLAGS = -g - # if you're using Sun's C compiler, add -xs to the CFLAGS line # X11 OPENWINHOME = /usr/openwin --- 5,15 ---- INSTALL = cp CFLAGS = -g # if you're using Sun's C compiler, add -xs to the CFLAGS line + # this is for Emacs, since Sun's ANSI mode preprocessor does some + # very wierd things to the input stream, breaking $(FOO) into + # $ ( FOO ), which breaks the ymakefile system that Emacs uses + CC = cc -Xs + # X11 OPENWINHOME = /usr/openwin *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/config/mh-sun3 Mon Mar 29 20:01:23 1993 *************** *** 0 **** --- 1,8 ---- + # X11 + OPENWINHOME = /usr/openwin + X11_INCLUDE_FLAGS = -I$(OPENWINHOME)/include + X11_LIB_FLAGS = -L$(OPENWINHOME)/lib + + # Sun's C compiler needs the -J flag to be able to compile cp-parse.c + # without overflowing the jump tables (-J says to use a 32 bit table) + CC = cc -J diff -c2pr gnats-3.00/config.guess gnats-3.01/config.guess *** gnats-3.00/config.guess Mon Mar 8 12:29:53 1993 --- gnats-3.01/config.guess Fri Apr 9 13:58:33 1993 *************** *** 1,14 **** #!/bin/sh ! ! # This script attempts to guess a canonical system name ! # similar to the output of config.sub. ! # If it succeeds, it prints the system name on stdout, and exits with 0. ! # Otherwise, it prints an error message on stderr, and exits with 1. ! # The plan is that this can be called by configure scripts if you don't ! # specify an explicit system type (host/target name). # ! # Only a few systems have been added to this list; ! # please add others (but try to keep the structure clean). UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown --- 1,32 ---- #!/bin/sh ! # This script attempts to guess a canonical system name. ! # Copyright (C) 1992, 1993 Free Software Foundation, Inc. ! # ! # This file is free software; you can redistribute it and/or modify it ! # under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2 of the License, or ! # (at your option) any later version. ! # ! # This program is distributed in the hope that it will be useful, but ! # WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! # General Public License for more details. ! # ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! # ! # This script attempts to guess a cononical system name similar to ! # config.sub. If it succeeds, it prints the system name on stdout, and ! # exits with 0. Otherwise, it prints an error message on stderr, and ! # exits with 1. # ! # The plan is that this can be called by configure scripts if you ! # don't specify an explicit system type (host/target name). ! # ! # Only a few systems have been added to this list; please add others ! # (but try to keep the structure clean). ! # UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown *************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ *** 35,38 **** --- 53,62 ---- echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; *:IRIX:*:*) echo mips-sgi-irix${UNAME_RELEASE} *************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ *** 78,84 **** exit 0 ;; i[34]86:*:3.2:*) ! if uname -X 2>/dev/null >/dev/null ; then ! UNAME_REL=`(uname -X|egrep Release|sed -e 's/.*= //')` ! (uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL else --- 102,108 ---- exit 0 ;; i[34]86:*:3.2:*) ! if /bin/uname -X 2>/dev/null >/dev/null ; then ! UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` ! (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL else diff -c2pr gnats-3.00/config.sub gnats-3.01/config.sub *** gnats-3.00/config.sub Mon Mar 8 18:34:19 1993 --- gnats-3.01/config.sub Wed Apr 14 13:30:09 1993 *************** *** 1,5 **** #!/bin/sh # Configuration validation subroutine script, version 1.1. ! # Copyright (C) 1991, 1992 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software --- 1,5 ---- #!/bin/sh # Configuration validation subroutine script, version 1.1. ! # Copyright (C) 1991-1993 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software *************** case $os in *** 74,79 **** -convergent* | -ncr* | -news | -32* | -3600* | -3100* | \ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ ! -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ ! -sim) # CYGNUS LOCAL os= basic_machine=$1 --- 74,78 ---- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | \ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ ! -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp) os= basic_machine=$1 *************** case $basic_machine in *** 109,113 **** | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ | alpha | we32k | ns16k | clipper | sparclite \ ! | sparc | m680[01234]0 | m683?2 | z8k | v70 | h8500)# CYGNUS LOCAL basic_machine=$basic_machine-unknown ;; --- 108,112 ---- | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ | alpha | we32k | ns16k | clipper | sparclite \ ! | sparc | m680[01234]0 | m683?2 | v70 | h8500)# CYGNUS LOCAL basic_machine=$basic_machine-unknown ;; *************** case $basic_machine in *** 119,123 **** | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ ! | m680[01234]0-* | m683?2-* | z8k-*) # CYGNUS LOCAL ;; # Recognize the various machine names and aliases which stand --- 118,122 ---- | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ ! | m680[01234]0-* | m683?2-* | z8k-* | h8500-*) # CYGNUS LOCAL ;; # Recognize the various machine names and aliases which stand *************** case $basic_machine in *** 283,289 **** ;; z8ksim) # CYGNUS LOCAL ! basic_machine=z8k-unknown os=-sim ;; sun3) basic_machine=m68k-sun --- 282,291 ---- ;; z8ksim) # CYGNUS LOCAL ! basic_machine=z8k-zilog os=-sim ;; + z8k) # CYGNUS LOCAL + basic_machine=z8k-zilog + ;; sun3) basic_machine=m68k-sun *************** case $basic_machine in *** 420,423 **** --- 422,429 ---- os=-hms ;; + h8500hms) # CYGNUS LOCAL + basic_machine=h8500-hitachi + os=-hms + ;; h8300xray) # CYGNUS LOCAL basic_machine=h8300-hitachi *************** case $basic_machine in *** 784,787 **** --- 790,796 ---- vendor=wrs ;; + -hms*) # CYGNUS LOCAL + vendor=hitachi + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` diff -c2pr gnats-3.00/configure gnats-3.01/configure *** gnats-3.00/configure Tue Mar 2 08:44:52 1993 --- gnats-3.01/configure Wed Apr 7 15:49:07 1993 *************** *** 1,6 **** #!/bin/sh # Configuration script ! # Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify --- 1,8 ---- #!/bin/sh + ### WARNING: this file contains embedded tabs. Do not run untabify on this file. + # Configuration script ! # Copyright (C) 1988, 1990-1993 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify *************** *** 29,33 **** # If configure succeeds, it leaves its status in config.status. # If configure fails after disturbing the status quo, ! # config.status is removed. # --- 31,35 ---- # If configure succeeds, it leaves its status in config.status. # If configure fails after disturbing the status quo, ! # config.status is removed. # *************** next_target= *** 64,67 **** --- 66,70 ---- next_tmpdir= norecursion= + package_makefile_frag= prefix=/usr/local progname= *************** target_alias= *** 83,87 **** target_makefile_frag= undefinedargs= ! version="$Revision: 1.143 $" x11=default --- 86,90 ---- target_makefile_frag= undefinedargs= ! version="$Revision: 1.151 $" x11=default *************** case "${progname}" in *** 105,289 **** */*) ;; *) ! PATH=$PATH:${PWD=`pwd`} ; export PATH ! ;; esac for arg in $*; do ! # handle things that might have args following as separate words ! if [ -n "${next_prefix}" ] ; then prefix=${arg} ; prefixoption="-prefix=${prefix}" ; next_prefix= ! elif [ -n "${next_exec_prefix}" ] ; then ! exec_prefix=${arg} ! exec_prefixoption="-exec_prefix=${exec_prefix}" ! next_exec_prefix= ! elif [ -n "${next_site}" ] ; then site=${arg} ; site_option=-site=${site} ; next_site= ! # remove any possible trailing slash from srcdir. See note below. ! elif [ -n "${next_srcdir}" ] ; then srcdir=`echo ${arg} | sed -e 's:/$::'` ; next_srcdir= ! elif [ -n "${next_program_prefix}" ] ; then ! program_prefix=${arg} ! program_prefixoption="-program_prefix=${program_prefix}" ! next_program_prefix= ! elif [ -n "${next_program_suffix}" ] ; then ! program_suffix=${arg} ! program_suffixoption="-program_suffix=${program_suffix}" ! next_program_suffix= ! elif [ -n "${next_program_transform_name}" ] ; then ! # Double any backslashes or dollar signs in the argument ! program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" ! program_transform_nameoption="${program_transform_nameoption} -program_transform_name='${arg}'" ! next_program_transform_name= ! elif [ -n "${next_target}" ] ; then ! next_target= ! case "${target_alias}" in ! "") ! target_alias="${arg}" ! ;; ! *) ! echo '***' Can only configure for one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! elif [ -n "${next_tmpdir}" ] ; then ! next_tmpdir= ! tmpdiroption="--tmpdir=${arg}" ! TMPDIR=${arg} ! ! else ! case ${arg} in ! -exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=* | -exec-prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* ) ! exec_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! exec_prefixoption=${arg} ! ;; ! -exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e | -exec-prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec-) ! next_exec_prefix=yes ! ;; ! -gas | --g*) ! gas=yes ! ;; ! -help | --he*) ! fatal=true ! ;; ! -host=* | --host=* | --hos=* | --ho=*) ! case "${host_alias}" in ! "") ! host_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ! ;; ! *) ! echo '***' Can only configure for one host at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! -nfp | --nf*) ! floating_point=no ! ;; ! -norecursion | --no*) ! norecursion=true ! ;; ! -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=*) ! prefix=`echo ${arg} | sed 's/^[-a-z]*=//'` ! prefixoption=${arg} ! ;; ! -prefix | --prefix | --prefi | --pref | --pre) ! next_prefix=yes ! ;; ! -rm | --rm) removing=${arg} ;; ! -program_prefix=* | --program_prefix=* | --program_prefi=* | --program_pref=* | --program_pre=* | --program_pr=* | --program_p=* | -program-prefix=* | --program-prefix=* | --program-prefi=* | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! program_prefixoption=${arg} ! ;; ! -program_prefix | --program_prefix | --program_prefi | --program_pref | --program_pre | --program_pr | --program_p | -program-prefix | --program-prefix | --program-prefi | --program-pref | --program-pre | --program-pr | --program-p) ! next_program_prefix=yes ! ;; ! -program_suffix=* | --program_suffix=* | --program_suffi=* | --program_suff=* | --program_suf=* | --program_su=* | --program_s=* | -program-suffix=* | --program-suffix=* | --program-suffi=* | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! program_suffixoption=${arg} ! ;; ! -program_suffix | --program_suffix | --program_suffi | --program_suff | --program_suf | --program_su | --program_s |-program-suffix | --program-suffix | --program-suffi | --program-suff | --program-suf | --program-su | --program-s) ! next_program_suffix=yes ! ;; ! -program_transform_name=* | --program_transform_name=* | --program_transform_nam=* | --program_transform_na=* | --program_transform_n=* | --program_transform_=* | --program_transform=* | --program_transfor=* | --program_transfo=* | --program_transf=* | --program_trans=* | --program_tran=* | --program_tra=* | --program_tr=* | --program_t=* | -program-transform-name=* | --program-transform-name=* | --program-transform-nam=* | --program-transform-na=* | --program-transform-n=* | --program-transform-=* | --program-transform=* | --program-transfor=* | --program-transfo=* | --program-transf=* | --program-trans=* | --program-tran=* | --program-tra=* | --program-tr=* | --program-t=*) ! # Double any \ or $ in the argument ! program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/^[-a-z_]*=//' -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" ! program_transform_nameoption="${program_transform_nameoption} -program_transform_name='`echo ${arg} | sed 's/^[-a-z_]*=//'`'" ! ;; ! -program_transform_name | --program_transform_name | --program_transform_nam | --program_transform_na | --program_transform_n | --program_transform_ | --program_transform | --program_transfor | --program_transfo | --program_transf | --program_trans | --program_tran | --program_tra | --program_tr | --program_t | -program-transform-name | --program-transform-name | --program-transform-nam | --program-transform-na | --program-transform-n | --program-transform- | --program-transform | --program-transfor | --program-transfo | --program-transf | --program-trans | --program-tran | --program-tra | --program-tr | --program-t) ! next_program_transform_name=yes ! ;; ! -site=* | --site=* | --sit=* | --si=*) ! site_option=${arg} ! site=`echo ${arg} | sed 's/^[-a-z]*=//'` ! ;; ! -site | --site | --sit) ! next_site=yes ! ;; ! # remove trailing slashes. Otherwise, when the file name gets ! # bolted into an object file as debug info, it has two slashes in ! # it. Ordinarily this is ok, but emacs takes double slash to ! # mean "forget the first part". ! -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir=`echo ${arg} | sed 's/^[-a-z]*=//' | sed -e 's:/$::'` ! ;; ! -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ! next_srcdir=yes ! ;; ! -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=*) ! case "${target_alias}" in ! "") target_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ;; ! *) ! echo '***' Can only configure for one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! -target | --target | --targe | --targ | --tar | --ta) ! next_target=yes ! ;; ! -tmpdir=* | --tmpdir=* | --tmpdi=* | --tmpd=* | --tmp=* | --tm=*) ! tmpdiroption=${arg} ! TMPDIR=`echo ${arg} | sed 's/^[-a-z]*=//'` ! ;; ! -tmpdir | --tmpdir | --tmpdi | --tmpd | --tmp | --tm) ! next_tmpdir=yes ! ;; ! -v | -verbose | --v) ! redirect= ! verbose=-v ! ;; ! -version | -V | --version | --V) ! echo "This is Cygnus Configure version" `echo ${version} | sed 's/[ $:]//g'` ! exit 0 ! ;; ! -with*=* | --with*=*) ! withopt=`echo ${arg} | sed 's:^-*\(with[^=]*\)=.*$:\1:;s/-/_/g'` ! withval=`echo ${arg} | sed 's:^-*with[^=]*=\(.*\)$:\1:'` ! eval $withopt="$withval" ! withoptions="$withoptions $arg" ! ;; ! -with* | --with*) ! withopt=`echo ${arg} | sed 's:^-*with:with:;s/-/_/g'` ! eval $withopt=yes ! withoptions="$withoptions $arg" ! ;; ! -x | --x) ;; ! -* | --*) ! (echo ; ! echo "Unrecognized option: \"${arg}\"". ; ! echo) 1>&2 ! fatal=true ! ;; ! *) ! case "${undefs}" in ! "") ! undefs="${arg}" ! ;; ! *) ! echo '***' Can only configure for one host and one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! esac ! fi done --- 108,302 ---- */*) ;; *) ! PATH=$PATH:${PWD=`pwd`} ; export PATH ! ;; esac for arg in $*; do ! # handle things that might have args following as separate words ! if [ -n "${next_prefix}" ] ; then prefix=${arg} ; prefixoption="-prefix=${prefix}" ; next_prefix= ! elif [ -n "${next_exec_prefix}" ] ; then ! exec_prefix=${arg} ! exec_prefixoption="-exec_prefix=${exec_prefix}" ! next_exec_prefix= ! elif [ -n "${next_site}" ] ; then site=${arg} ; site_option=-site=${site} ; next_site= ! # remove any possible trailing slash from srcdir. See note below. ! elif [ -n "${next_srcdir}" ] ; then srcdir=`echo ${arg} | sed -e 's:/$::'` ; next_srcdir= ! elif [ -n "${next_program_prefix}" ] ; then ! program_prefix=${arg} ! program_prefixoption="-program_prefix=${program_prefix}" ! next_program_prefix= ! elif [ -n "${next_program_suffix}" ] ; then ! program_suffix=${arg} ! program_suffixoption="-program_suffix=${program_suffix}" ! next_program_suffix= ! elif [ -n "${next_program_transform_name}" ] ; then ! # Double any backslashes or dollar signs in the argument ! if [ -n "${arg}" ] ; then ! program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" ! fi ! program_transform_nameoption="${program_transform_nameoption} -program_transform_name='${arg}'" ! next_program_transform_name= ! elif [ -n "${next_target}" ] ; then ! next_target= ! case "${target_alias}" in ! "") ! target_alias="${arg}" ! ;; ! *) ! echo '***' Can only configure for one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! elif [ -n "${next_tmpdir}" ] ; then ! next_tmpdir= ! tmpdiroption="--tmpdir=${arg}" ! TMPDIR=${arg} ! ! else ! case ${arg} in ! -exec_prefix=* | --exec_prefix=* | --exec_prefi=* | --exec_pref=* | --exec_pre=* | --exec_pr=* | --exec_p=* | --exec_=* | --exec=* | --exe=* | --ex=* | --e=* | -exec-prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* ) ! exec_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! exec_prefixoption=${arg} ! ;; ! -exec_prefix | --exec_prefix | --exec_prefi | --exec_pref | --exec_pre | --exec_pr | --exec_p | --exec_ | --exec | --exe | --ex | --e | -exec-prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec-) ! next_exec_prefix=yes ! ;; ! -gas | --g*) ! gas=yes ! ;; ! -help | --he*) ! fatal=true ! ;; ! -host=* | --host=* | --hos=* | --ho=*) ! case "${host_alias}" in ! "") ! host_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ! ;; ! *) ! echo '***' Can only configure for one host at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! -nfp | --nf*) ! floating_point=no ! ;; ! -norecursion | --no*) ! norecursion=true ! ;; ! -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=*) ! prefix=`echo ${arg} | sed 's/^[-a-z]*=//'` ! prefixoption=${arg} ! ;; ! -prefix | --prefix | --prefi | --pref | --pre) ! next_prefix=yes ! ;; ! -rm | --rm) removing=${arg} ;; ! -program_prefix=* | --program_prefix=* | --program_prefi=* | --program_pref=* | --program_pre=* | --program_pr=* | --program_p=* | -program-prefix=* | --program-prefix=* | --program-prefi=* | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! program_prefixoption=${arg} ! ;; ! -program_prefix | --program_prefix | --program_prefi | --program_pref | --program_pre | --program_pr | --program_p | -program-prefix | --program-prefix | --program-prefi | --program-pref | --program-pre | --program-pr | --program-p) ! next_program_prefix=yes ! ;; ! -program_suffix=* | --program_suffix=* | --program_suffi=* | --program_suff=* | --program_suf=* | --program_su=* | --program_s=* | -program-suffix=* | --program-suffix=* | --program-suffi=* | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix=`echo ${arg} | sed 's/^[-a-z_]*=//'` ! program_suffixoption=${arg} ! ;; ! -program_suffix | --program_suffix | --program_suffi | --program_suff | --program_suf | --program_su | --program_s |-program-suffix | --program-suffix | --program-suffi | --program-suff | --program-suf | --program-su | --program-s) ! next_program_suffix=yes ! ;; ! -program_transform_name=* | --program_transform_name=* | --program_transform_nam=* | --program_transform_na=* | --program_transform_n=* | --program_transform_=* | --program_transform=* | --program_transfor=* | --program_transfo=* | --program_transf=* | --program_trans=* | --program_tran=* | --program_tra=* | --program_tr=* | --program_t=* | -program-transform-name=* | --program-transform-name=* | --program-transform-nam=* | --program-transform-na=* | --program-transform-n=* | --program-transform-=* | --program-transform=* | --program-transfor=* | --program-transfo=* | --program-transf=* | --program-trans=* | --program-tran=* | --program-tra=* | --program-tr=* | --program-t=*) ! arg=`echo ${arg} | sed -e 's/^[-a-z_]*=//'` ! # Double any \ or $ in the argument ! if [ -n "${arg}" ] ; then ! program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" ! fi ! program_transform_nameoption="${program_transform_nameoption} -program_transform_name='${arg}'" ! ;; ! -program_transform_name | --program_transform_name | --program_transform_nam | --program_transform_na | --program_transform_n | --program_transform_ | --program_transform | --program_transfor | --program_transfo | --program_transf | --program_trans | --program_tran | --program_tra | --program_tr | --program_t | -program-transform-name | --program-transform-name | --program-transform-nam | --program-transform-na | --program-transform-n | --program-transform- | --program-transform | --program-transfor | --program-transfo | --program-transf | --program-trans | --program-tran | --program-tra | --program-tr | --program-t) ! next_program_transform_name=yes ! ;; ! -site=* | --site=* | --sit=* | --si=*) ! site_option=${arg} ! site=`echo ${arg} | sed 's/^[-a-z]*=//'` ! ;; ! -site | --site | --sit) ! next_site=yes ! ;; ! # remove trailing slashes. Otherwise, when the file name gets ! # bolted into an object file as debug info, it has two slashes in ! # it. Ordinarily this is ok, but emacs takes double slash to ! # mean "forget the first part". ! -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir=`echo ${arg} | sed 's/^[-a-z]*=//' | sed -e 's:/$::'` ! ;; ! -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ! next_srcdir=yes ! ;; ! -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=*) ! case "${target_alias}" in ! "") target_alias="`echo ${arg} | sed 's/^[-a-z]*=//'`" ;; ! *) ! echo '***' Can only configure for one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! -target | --target | --targe | --targ | --tar | --ta) ! next_target=yes ! ;; ! -tmpdir=* | --tmpdir=* | --tmpdi=* | --tmpd=* | --tmp=* | --tm=*) ! tmpdiroption=${arg} ! TMPDIR=`echo ${arg} | sed 's/^[-a-z]*=//'` ! ;; ! -tmpdir | --tmpdir | --tmpdi | --tmpd | --tmp | --tm) ! next_tmpdir=yes ! ;; ! -v | -verbose | --v) ! redirect= ! verbose=-v ! ;; ! -version | -V | --version | --V) ! echo "This is Cygnus Configure version" `echo ${version} | sed 's/[ $:]//g'` ! exit 0 ! ;; ! -with*=* | --with*=*) ! withopt=`echo ${arg} | sed 's:^-*\(with[^=]*\)=.*$:\1:;s/-/_/g'` ! withval=`echo ${arg} | sed 's:^-*with[^=]*=\(.*\)$:\1:'` ! eval $withopt="$withval" ! withoptions="$withoptions $arg" ! ;; ! -without* | --without*) ! withopt=`echo ${arg} | sed 's:^-*without:with:;s/-/_/g'` ! eval $withopt=no ! withoutoptions="$withoutoptions $arg" ! ;; ! -with* | --with*) ! withopt=`echo ${arg} | sed 's:^-*with:with:;s/-/_/g'` ! eval $withopt=yes ! withoptions="$withoptions $arg" ! ;; ! -x | --x) ;; ! -* | --*) ! (echo ; ! echo "Unrecognized option: \"${arg}\"". ; ! echo) 1>&2 ! fatal=true ! ;; ! *) ! case "${undefs}" in ! "") ! undefs="${arg}" ! ;; ! *) ! echo '***' Can only configure for one host and one target at a time. 1>&2 ! fatal=yes ! ;; ! esac ! ;; ! esac ! fi done *************** done *** 291,301 **** case "${fatal}" in "") ! # # Complain if an arg is missing ! # if [ -z "${host_alias}" ] ; then ! # (echo ; ! # echo "configure: No HOST specified." ; ! # echo) 1>&2 ! # fatal=true ! # fi ### This is a bit twisted. --- 304,314 ---- case "${fatal}" in "") ! # # Complain if an arg is missing ! # if [ -z "${host_alias}" ] ; then ! # (echo ; ! # echo "configure: No HOST specified." ; ! # echo) 1>&2 ! # fatal=true ! # fi ### This is a bit twisted. *************** case "${fatal}" in *** 307,372 **** ### there were no unadorned args, then the hosts are also targets. ! if [ -n "${host_alias}" -a -n "${target_alias}" -a -n "${undefs}" ] ; then ! echo '***' Can only configure for one host and one target at a time. 1>&2 ! fatal=yes ! elif [ -z "${host_alias}" -a -z "${undefs}" ] ; then ! echo '- You did not tell me what kind of host system you want to configure. - I will attempt to guess the kind of system this is.' 1>&2 ! guesssys=`echo ${progname} | sed 's/configure$/config.guess/'` ! if tmp_alias=`${guesssys}` ; then ! echo "- Looks like this is a ${tmp_alias}" 1>&2 ! host_alias=${tmp_alias} ! target_alias=${tmp_alias} ! else ! echo '- Failed to guess the system type. You need to tell me.' 1>&2 ! fatal=yes ! fi ! else ! case "${host_alias}" in ! "") host_alias=${undefs} ;; ! *) ;; ! esac ! ! case "${target_alias}" in ! "") ! case "${undefs}" in ! "") target_alias=${host_alias} ;; ! *) target_alias=${undefs} ;; esac ! ;; ! *) ;; ! esac ! fi ! ;; *) ;; esac if [ -n "${fatal}" -o "${host_alias}" = "help" ] ; then ! (echo "Usage: configure HOST" ; ! echo ; ! echo "Options: [defaults in brackets]" ; ! echo " -exec-prefix=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ; ! echo " -gas configure the compilers for use with gas. [native as]" ; ! echo " -help print this message. [normal config]" ; ! echo " -lang=LANG configure to build LANG. [gcc]" ; ! echo " -nfp configure the compilers default to soft floating point. [hard float]" ; ! echo " -norecursion configure this directory only. [recurse]" ; ! echo " -prefix=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ; ! echo " -program-prefix=FOO install programs with FOO prepended to their names. [ \"\" ]" ; ! echo " -program-suffix=FOO install programs with FOO appended to their names. [ \"\" ]" ; ! echo " -program-transform-name=FOO install programs with names transformed by sed pattern FOO. [ \"\" ]" ; ! echo " -site=SITE configure with site specific makefile for SITE" ; ! echo " -srcdir=DIR find the sources in DIR. [\".\" or \"..\"]" ; ! echo " -target=TARGET configure for TARGET. [TARGET = HOST]" ; ! echo " -tmpdir=TMPDIR create temporary files in TMPDIR. [ TMPDIR = \"/tmp\" ]" ; ! echo ; ! echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ; ! ) 1>&2 ! ! if [ -r config.status ] ; then ! cat config.status ! fi ! exit 1 fi --- 320,389 ---- ### there were no unadorned args, then the hosts are also targets. ! if [ -n "${host_alias}" -a -n "${target_alias}" -a -n "${undefs}" ] ; then ! echo '***' Can only configure for one host and one target at a time. 1>&2 ! fatal=yes ! elif [ -z "${host_alias}" -a -z "${undefs}" ] ; then ! echo '- You did not tell me what kind of host system you want to configure. - I will attempt to guess the kind of system this is.' 1>&2 ! guesssys=`echo ${progname} | sed 's/configure$/config.guess/'` ! if tmp_alias=`${guesssys}` ; then ! echo "- Looks like this is a ${tmp_alias}" 1>&2 ! host_alias=${tmp_alias} ! case "${target_alias}" in ! "") target_alias=${tmp_alias} ;; ! *) ;; esac ! arguments="--host=${host_alias} ${arguments}" ! else ! echo '- Failed to guess the system type. You need to tell me.' 1>&2 ! fatal=yes ! fi ! else ! case "${host_alias}" in ! "") host_alias=${undefs} ;; ! *) ;; ! esac ! ! case "${target_alias}" in ! "") ! case "${undefs}" in ! "") target_alias=${host_alias} ;; ! *) target_alias=${undefs} ;; ! esac ! ;; ! *) ;; ! esac ! fi ! ;; *) ;; esac if [ -n "${fatal}" -o "${host_alias}" = "help" ] ; then ! (echo "Usage: configure HOST" ; ! echo ; ! echo "Options: [defaults in brackets]" ; ! echo " -prefix=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ; ! echo " -exec-prefix=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ; ! echo " -help print this message. [normal config]" ; ! echo " -norecursion configure this directory only. [recurse]" ; ! echo " -program-prefix=FOO install programs with FOO prepended to their names. [ \"\" ]" ; ! echo " -program-suffix=FOO install programs with FOO appended to their names. [ \"\" ]" ; ! echo " -program-transform-name=FOO install programs with names transformed by sed pattern FOO. [ \"\" ]" ; ! echo " -site=SITE configure with site specific makefile for SITE" ; ! echo " -srcdir=DIR find the sources in DIR. [\".\" or \"..\"]" ; ! echo " -target=TARGET configure for TARGET. [TARGET = HOST]" ; ! echo " -tmpdir=TMPDIR create temporary files in TMPDIR. [ TMPDIR = \"/tmp\" ]" ; ! echo " -nfp configure the compilers default to soft floating point. [hard float]" ; ! echo " -with-FOO, -with-FOO=BAR specify that FOO is available" ! echo " -without-FOO specify that FOO is NOT available" ! echo ; ! echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ; ! echo ; ! ) 1>&2 ! if [ -r config.status ] ; then ! cat config.status ! fi ! exit 1 fi *************** moveifchange=`echo ${progname} | sed 's/ *** 376,391 **** # this is a hack. sun4 must always be a valid host alias or this will fail. if ${configsub} sun4 >/dev/null 2>&1 ; then ! true else ! echo '***' cannot find config.sub. 1>&2 ! exit 1 fi touch config.junk if ${moveifchange} config.junk config.trash ; then ! true else ! echo '***' cannot find move-if-change. 1>&2 ! exit 1 fi rm -f config.junk config.trash --- 393,408 ---- # this is a hack. sun4 must always be a valid host alias or this will fail. if ${configsub} sun4 >/dev/null 2>&1 ; then ! true else ! echo '***' cannot find config.sub. 1>&2 ! exit 1 fi touch config.junk if ${moveifchange} config.junk config.trash ; then ! true else ! echo '***' cannot find move-if-change. 1>&2 ! exit 1 fi rm -f config.junk config.trash *************** rm -f config.junk config.trash *** 393,407 **** case "${srcdir}" in "") ! if [ -r configure.in ] ; then ! srcdir=. ! else ! if [ -r ${progname}.in ] ; then ! srcdir=`echo ${progname} | sed 's:/configure$::'` ! else ! echo '***' "Can't find configure.in. Try using -srcdir=some_dir" 1>&2 ! exit 1 ! fi ! fi ! ;; *) ;; esac --- 410,424 ---- case "${srcdir}" in "") ! if [ -r configure.in ] ; then ! srcdir=. ! else ! if [ -r ${progname}.in ] ; then ! srcdir=`echo ${progname} | sed 's:/configure$::'` ! else ! echo '***' "Can't find configure.in. Try using -srcdir=some_dir" 1>&2 ! exit 1 ! fi ! fi ! ;; *) ;; esac *************** case "${srcdir}" in *** 412,419 **** ".") ;; *) ! if [ -f ${srcdir}/config.status ] ; then ! echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2 ! exit 1 ! fi esac --- 429,436 ---- ".") ;; *) ! if [ -f ${srcdir}/config.status ] ; then ! echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2 ! exit 1 ! fi esac *************** esac *** 427,433 **** case "`grep '^# per\-host:' ${srcdir}/configure.in`" in "") ! echo '***' ${srcdir}/configure.in has no "per-host:" line. 1>&2 ! exit 1 ! ;; *) ;; esac --- 444,450 ---- case "`grep '^# per\-host:' ${srcdir}/configure.in`" in "") ! echo '***' ${srcdir}/configure.in has no "per-host:" line. 1>&2 ! exit 1 ! ;; *) ;; esac *************** esac *** 435,441 **** case "`grep '^# per\-target:' ${srcdir}/configure.in`" in "") ! echo '***' ${srcdir}/configure.in has no "per-target:" line. 1>&2 ! exit 1 ! ;; *) ;; esac --- 452,458 ---- case "`grep '^# per\-target:' ${srcdir}/configure.in`" in "") ! echo '***' ${srcdir}/configure.in has no "per-target:" line. 1>&2 ! exit 1 ! ;; *) ;; esac *************** fi *** 469,475 **** case "${srctrigger}" in "") ! echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in. 1>&2 ! exit 1 ! ;; *) ;; esac --- 486,492 ---- case "${srctrigger}" in "") ! echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in. 1>&2 ! exit 1 ! ;; *) ;; esac *************** target=${target_cpu}-${target_vendor}-${ *** 494,514 **** case "${srcdir}" in "") ! srcdirdefaulted=1 ! srcdir=. ! if [ ! -r ${srctrigger} ] ; then ! srcdir=.. ! fi ! ;; *) ;; esac if [ ! -r ${srcdir}/${srctrigger} ] ; then ! case "${srcdirdefaulted}" in ! "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;; ! *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;; ! esac ! echo '***' \(At least ${srctrigger} is missing.\) 1>&2 ! exit 1 fi --- 511,531 ---- case "${srcdir}" in "") ! srcdirdefaulted=1 ! srcdir=. ! if [ ! -r ${srctrigger} ] ; then ! srcdir=.. ! fi ! ;; *) ;; esac if [ ! -r ${srcdir}/${srctrigger} ] ; then ! case "${srcdirdefaulted}" in ! "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;; ! *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;; ! esac ! echo '***' \(At least ${srctrigger} is missing.\) 1>&2 ! exit 1 fi *************** tooldir="\$(libdir)/${target_alias}" *** 516,525 **** if [ "${host_alias}" != "${target_alias}" ] ; then ! if [ "${program_prefix}" = "" ] ; then ! if [ "${program_suffix}" = "" ] ; then ! if [ "${program_transform_name}" = "" ] ; then ! program_prefix=${target_alias}- ; ! fi ! fi fi fi --- 533,542 ---- if [ "${host_alias}" != "${target_alias}" ] ; then ! if [ "${program_prefixoption}" = "" ] ; then ! if [ "${program_suffixoption}" = "" ] ; then ! if [ "${program_transform_nameoption}" = "" ] ; then ! program_prefix=${target_alias}- ; ! fi ! fi fi fi *************** for subdir in . ${subdirs} ; do *** 544,570 **** ### figure out what to do with srcdir case "${srcdir}" in ! ".") # no -srcdir option. We're building in place. ! makesrcdir=. ;; ! /*) # absolute path ! makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'` ! ;; ! *) # otherwise relative ! case "${subdir}" in ! .) makesrcdir=${srcdir} ;; ! *) makesrcdir=${invsubdir}${srcdir}/${subdir} ;; ! esac ! ;; esac if [ "${subdir}/" != "./" ] ; then ! Makefile=${subdir}/Makefile fi if [ ! -d ${subdir} ] ; then ! if mkdir ${subdir} ; then ! true else ! echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2 ! exit 1 fi fi --- 561,587 ---- ### figure out what to do with srcdir case "${srcdir}" in ! ".") # no -srcdir option. We're building in place. ! makesrcdir=. ;; ! /*) # absolute path ! makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'` ! ;; ! *) # otherwise relative ! case "${subdir}" in ! .) makesrcdir=${srcdir} ;; ! *) makesrcdir=${invsubdir}${srcdir}/${subdir} ;; ! esac ! ;; esac if [ "${subdir}/" != "./" ] ; then ! Makefile=${subdir}/Makefile fi if [ ! -d ${subdir} ] ; then ! if mkdir ${subdir} ; then ! true else ! echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2 ! exit 1 fi fi *************** for subdir in . ${subdirs} ; do *** 572,619 **** case "${removing}" in "") ! case "${subdir}" in ! .) ;; ! *) eval echo Building in ${subdir} ${redirect} ;; ! esac ! ! # FIXME Should this be done recursively ??? (Useful for e.g. gdbtest) ! # Set up the list of links to be made. ! # ${links} is the list of link names, and ${files} is the list of names to link to. ! ! # Make the links. ! configlinks="${links}" ! if [ -r ${subdir}/config.status ] ; then ! mv -f ${subdir}/config.status ${subdir}/config.back ! fi ! while [ -n "${files}" ] ; do ! # set file to car of files, files to cdr of files ! set ${files}; file=$1; shift; files=$* ! set ${links}; link=$1; shift; links=$* ! ! if [ ! -r ${srcdir}/${file} ] ; then ! echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 ! echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2 ! exit 1 ! fi ! ! ${remove} -f ${link} ! # Make a symlink if possible, otherwise try a hard link ! ${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link} ! ! if [ ! -r ${link} ] ; then ! echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 ! exit 1 ! fi ! ! echo "Linked \"${link}\" to \"${srcdir}/${file}\"." ! done ! ! # Create a .gdbinit file which runs the one in srcdir ! # and tells GDB to look there for source files. ! ! if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then ! case ${srcdir} in ! .) ;; ! *) cat > ${subdir}/.gdbinit <&2 ! echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2 ! exit 1 ! fi ! ! ${remove} -f ${link} ! # Make a symlink if possible, otherwise try a hard link ! ${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link} ! ! if [ ! -r ${link} ] ; then ! echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 ! exit 1 ! fi ! ! echo "Linked \"${link}\" to \"${srcdir}/${file}\"." ! done ! ! # Create a .gdbinit file which runs the one in srcdir ! # and tells GDB to look there for source files. ! ! if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then ! case ${srcdir} in ! .) ;; ! *) cat > ${subdir}/.gdbinit < ${subdir}/Makefile.tem ! else ! cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ! site_makefile_frag= ! fi ! ;; ! esac ! # working copy now in ${subdir}/Makefile.tem ! ! # Conditionalize the makefile for this host. ! rm -f ${Makefile} ! case "${host_makefile_frag}" in ! "") mv ${subdir}/Makefile.tem ${Makefile} ;; ! *) ! if [ ! -f ${host_makefile_frag} ] ; then ! host_makefile_frag=${srcdir}/${host_makefile_frag} ! fi ! if [ -f ${host_makefile_frag} ] ; then ! sed -e "/^####/ r ${host_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile} ! else ! echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2 ! echo '***' is missing in ${PWD=`pwd`}. 1>&2 ! mv ${subdir}/Makefile.tem ${Makefile} ! fi ! esac ! # working copy now in ${Makefile} ! # Conditionalize the makefile for this target. ! rm -f ${subdir}/Makefile.tem ! case "${target_makefile_frag}" in ! "") mv ${Makefile} ${subdir}/Makefile.tem ;; ! *) ! if [ ! -f ${target_makefile_frag} ] ; then ! target_makefile_frag=${srcdir}/${target_makefile_frag} ! fi ! if [ -f ${target_makefile_frag} ] ; then ! sed -e "/^####/ r ${target_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem ! else ! mv ${Makefile} ${subdir}/Makefile.tem ! target_makefile_frag= ! fi ! ;; ! esac ! # real copy now in ${subdir}/Makefile.tem ! ! # prepend warning about editting, and a bunch of variables. ! rm -f ${Makefile} ! cat > ${Makefile} < ${subdir}/Makefile.tem ! else ! cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ! site_makefile_frag= ! fi ! ;; ! esac ! # working copy now in ${subdir}/Makefile.tem ! ! # Conditionalize the makefile for this host. ! rm -f ${Makefile} ! case "${host_makefile_frag}" in ! "") mv ${subdir}/Makefile.tem ${Makefile} ;; ! *) ! if [ ! -f ${host_makefile_frag} ] ; then ! host_makefile_frag=${srcdir}/${host_makefile_frag} ! fi ! if [ -f ${host_makefile_frag} ] ; then ! sed -e "/^####/ r ${host_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile} ! else ! echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2 ! echo '***' is missing in ${PWD=`pwd`}. 1>&2 ! mv ${subdir}/Makefile.tem ${Makefile} ! fi ! esac ! # working copy now in ${Makefile} ! ! # Conditionalize the makefile for this target. ! rm -f ${subdir}/Makefile.tem ! case "${target_makefile_frag}" in ! "") mv ${Makefile} ${subdir}/Makefile.tem ;; ! *) ! if [ ! -f ${target_makefile_frag} ] ; then ! target_makefile_frag=${srcdir}/${target_makefile_frag} ! fi ! if [ -f ${target_makefile_frag} ] ; then ! sed -e "/^####/ r ${target_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem ! else ! mv ${Makefile} ${subdir}/Makefile.tem ! target_makefile_frag= ! fi ! ;; ! esac ! # real copy now in ${subdir}/Makefile.tem ! ! # Conditionalize the makefile for this package. ! rm -f ${Makefile} ! case "${package_makefile_frag}" in ! "") mv ${subdir}/Makefile.tem ${Makefile} ;; ! *) ! if [ ! -f ${package_makefile_frag} ] ; then ! package_makefile_frag=${srcdir}/${package_makefile_frag} ! fi ! if [ -f ${package_makefile_frag} ] ; then ! sed -e "/^####/ r ${package_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile} ! else ! echo '***' Expected package makefile fragment \"${package_makefile_frag}\" 1>&2 ! echo '***' is missing in ${PWD=`pwd`}. 1>&2 ! mv ${subdir}/Makefile.tem ${Makefile} ! fi ! esac ! # working copy now in ${Makefile} ! ! mv ${Makefile} ${subdir}/Makefile.tem ! ! # real copy now in ${subdir}/Makefile.tem ! ! # prepend warning about editting, and a bunch of variables. ! rm -f ${Makefile} ! cat > ${Makefile} <>${Makefile} ;; ! *) ! echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;; ! esac ! ! case "${host_makefile_frag}" in ! "") ;; ! /*) ! echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;; ! *) ! echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;; ! esac ! ! if [ "${site_makefile_frag}" != "" ] ; then ! echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile} ! fi ! ! # fixme: this shouldn't be in configure. ! # Define macro CROSS_COMPILE in compilation if this is a cross-compiler. ! case "${host_alias}" in ! "${target_alias}") ! echo "ALL=all.internal" >> ${Makefile} ! ;; ! *) ! echo "CROSS=-DCROSS_COMPILE" >> ${Makefile} ! echo "ALL=all.cross" >> ${Makefile} ! ;; ! esac ! ! # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS, ! # remove any form feeds. ! if [ -z "${subdirs}" ]; then ! rm -f ${subdir}/Makefile.tem2 ! sed -e "s:^SUBDIRS[ ]*=.*$:SUBDIRS = ${configdirs}:" \ ! -e "s:^NONSUBDIRS[ ]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \ ! ${subdir}/Makefile.tem > ${subdir}/Makefile.tem2 ! rm -f ${subdir}/Makefile.tem ! mv ${subdir}/Makefile.tem2 ${subdir}/Makefile.tem ! fi ! sed -e "s:^prefix[ ]*=.*$:prefix = ${prefix}:" \ ! -e "s:^exec_prefix[ ]*=.*$:exec_prefix = ${exec_prefix}:" \ ! -e "s:^srcdir[ ]*=.*$:srcdir = ${makesrcdir}:" \ ! -e "s/ //" \ ! -e "s:^program_prefix[ ]*=.*$:program_prefix = ${program_prefix}:" \ ! -e "s:^program_suffix[ ]*=.*$:program_suffix = ${program_suffix}:" \ ! -e "s:^program_transform_name[ ]*=.*$:program_transform_name = ${program_transform_name}:" \ ! -e "s:^tooldir[ ]*=.*$:tooldir = ${tooldir}:" \ ! ${subdir}/Makefile.tem >> ${Makefile} ! # final copy now in ${Makefile} ! ! rm -f ${subdir}/Makefile.tem ! ! case "${host_makefile_frag}" in ! "") using= ;; ! *) using="and \"${host_makefile_frag}\"" ;; ! esac ! ! case "${target_makefile_frag}" in ! "") ;; ! *) using="${using} and \"${target_makefile_frag}\"" ;; ! esac ! ! case "${site_makefile_frag}" in ! "") ;; ! *) using="${using} and \"${site_makefile_frag}\"" ;; ! esac ! ! newusing=`echo "${using}" | sed 's/and/using/'` ! using=${newusing} ! echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using} ! ! . ${tmpfile}.pos ! ! # describe the chosen configuration in config.status. ! # Make that file a shellscript which will reestablish ! # the same configuration. Used in Makefiles to rebuild ! # Makefiles. ! ! case "${norecursion}" in ! "") arguments="${arguments} -norecursion" ;; ! *) ;; ! esac ! if [ ${subdir} = . ] ; then ! echo "#!/bin/sh # ${NO_EDIT} # This directory was configured as follows: ${progname}" ${arguments} " # ${using}" > ${subdir}/config.new ! else ! echo "#!/bin/sh # ${NO_EDIT} # This directory was configured as follows: --- 749,852 ---- target_canonical = ${target_cpu}-${target_vendor}-${target_os} EOF ! case "${package_makefile_frag}" in ! "") ;; ! /*) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;; ! *) echo package_makefile_frag = ${invsubdir}${package_makefile_frag} >>${Makefile} ;; ! esac ! ! case "${target_makefile_frag}" in ! "") ;; ! /*) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;; ! *) echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;; ! esac ! ! case "${host_makefile_frag}" in ! "") ;; ! /*) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;; ! *) echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;; ! esac ! ! if [ "${site_makefile_frag}" != "" ] ; then ! echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile} ! fi ! ! # fixme: this shouldn't be in configure. ! # Define macro CROSS_COMPILE in compilation if this is a cross-compiler. ! case "${host_alias}" in ! "${target_alias}") ! echo "ALL=all.internal" >> ${Makefile} ! ;; ! *) ! echo "CROSS=-DCROSS_COMPILE" >> ${Makefile} ! echo "ALL=all.cross" >> ${Makefile} ! ;; ! esac ! ! # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS, ! # remove any form feeds. ! if [ -z "${subdirs}" ]; then ! rm -f ${subdir}/Makefile.tem2 ! sed -e "s:^SUBDIRS[ ]*=.*$:SUBDIRS = ${configdirs}:" \ ! -e "s:^NONSUBDIRS[ ]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \ ! ${subdir}/Makefile.tem > ${subdir}/Makefile.tem2 ! rm -f ${subdir}/Makefile.tem ! mv ${subdir}/Makefile.tem2 ${subdir}/Makefile.tem ! fi ! sed -e "s:^prefix[ ]*=.*$:prefix = ${prefix}:" \ ! -e "s:^exec_prefix[ ]*=.*$:exec_prefix = ${exec_prefix}:" \ ! -e "s:^srcdir[ ]*=.*$:srcdir = ${makesrcdir}:" \ ! -e "s/ //" \ ! -e "s:^program_prefix[ ]*=.*$:program_prefix = ${program_prefix}:" \ ! -e "s:^program_suffix[ ]*=.*$:program_suffix = ${program_suffix}:" \ ! -e "s:^program_transform_name[ ]*=.*$:program_transform_name = ${program_transform_name}:" \ ! -e "s:^tooldir[ ]*=.*$:tooldir = ${tooldir}:" \ ! ${subdir}/Makefile.tem >> ${Makefile} ! # final copy now in ${Makefile} ! ! else ! echo "No Makefile.in found in ${srcdir}, unable to configure" 1>&2 ! fi ! ! rm -f ${subdir}/Makefile.tem ! ! case "${host_makefile_frag}" in ! "") using= ;; ! *) using="and \"${host_makefile_frag}\"" ;; ! esac ! ! case "${target_makefile_frag}" in ! "") ;; ! *) using="${using} and \"${target_makefile_frag}\"" ;; ! esac ! ! case "${site_makefile_frag}" in ! "") ;; ! *) using="${using} and \"${site_makefile_frag}\"" ;; ! esac ! ! newusing=`echo "${using}" | sed 's/and/using/'` ! using=${newusing} ! echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using} ! ! . ${tmpfile}.pos ! ! # describe the chosen configuration in config.status. ! # Make that file a shellscript which will reestablish ! # the same configuration. Used in Makefiles to rebuild ! # Makefiles. ! ! case "${norecursion}" in ! "") arguments="${arguments} -norecursion" ;; ! *) ;; ! esac ! if [ ${subdir} = . ] ; then ! echo "#!/bin/sh # ${NO_EDIT} # This directory was configured as follows: ${progname}" ${arguments} " # ${using}" > ${subdir}/config.new ! else ! echo "#!/bin/sh # ${NO_EDIT} # This directory was configured as follows: *************** cd ${invsubdir} *** 806,818 **** ${progname}" ${arguments} " # ${using}" > ${subdir}/config.new ! fi ! chmod a+x ${subdir}/config.new ! if [ -r ${subdir}/config.back ] ; then ! mv -f ${subdir}/config.back ${subdir}/config.status ! fi ! ${moveifchange} ${subdir}/config.new ${subdir}/config.status ! ;; ! *) rm -f ${Makefile} ${subdir}/config.status ${links} ;; esac done --- 854,866 ---- ${progname}" ${arguments} " # ${using}" > ${subdir}/config.new ! fi ! chmod a+x ${subdir}/config.new ! if [ -r ${subdir}/config.back ] ; then ! mv -f ${subdir}/config.back ${subdir}/config.status ! fi ! ${moveifchange} ${subdir}/config.new ${subdir}/config.status ! ;; ! *) rm -f ${Makefile} ${subdir}/config.status ${links} ;; esac done *************** done *** 820,879 **** # If there are subdirectories, then recur. if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then ! for configdir in ${configdirs} ; do ! if [ -d ${srcdir}/${configdir} ] ; then ! eval echo Configuring ${configdir}... ${redirect} ! case "${srcdir}" in ! ".") ;; ! *) ! if [ ! -d ./${configdir} ] ; then ! if mkdir ./${configdir} ; then ! true ! else ! echo '***' "${progname}: could not make ${PWD=`pwd`}/${configdir}" 1>&2 ! exit 1 ! fi ! fi ! ;; ! esac ! POPDIR=${PWD=`pwd`} ! cd ${configdir} ### figure out what to do with srcdir ! case "${srcdir}" in ! ".") newsrcdir=${srcdir} ;; # no -srcdir option. We're building in place. ! /*) # absolute path ! newsrcdir=${srcdir}/${configdir} ! srcdiroption="-srcdir=${newsrcdir}" ! ;; ! *) # otherwise relative ! newsrcdir=../${srcdir}/${configdir} ! srcdiroption="-srcdir=${newsrcdir}" ! ;; ! esac ### check for guested configure, otherwise fix possibly relative progname ! if [ -f ${newsrcdir}/configure ] ; then ! recprog=${newsrcdir}/configure ! else ! case "${progname}" in ! /*) recprog=${progname} ;; ! *) recprog=../${progname} ;; ! esac ! fi ### The recursion line is here. ! if eval ${recprog} ${verbose} ${host_alias} -target=${target_alias} \ ! ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \ ! ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${removing} ${redirect} ; then ! true ! else ! exit 1 ! fi ! ! cd ${POPDIR} ! fi ! done fi --- 868,927 ---- # If there are subdirectories, then recur. if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then ! for configdir in ${configdirs} ; do ! if [ -d ${srcdir}/${configdir} ] ; then ! eval echo Configuring ${configdir}... ${redirect} ! case "${srcdir}" in ! ".") ;; ! *) ! if [ ! -d ./${configdir} ] ; then ! if mkdir ./${configdir} ; then ! true ! else ! echo '***' "${progname}: could not make ${PWD=`pwd`}/${configdir}" 1>&2 ! exit 1 ! fi ! fi ! ;; ! esac ! POPDIR=${PWD=`pwd`} ! cd ${configdir} ### figure out what to do with srcdir ! case "${srcdir}" in ! ".") newsrcdir=${srcdir} ;; # no -srcdir option. We're building in place. ! /*) # absolute path ! newsrcdir=${srcdir}/${configdir} ! srcdiroption="-srcdir=${newsrcdir}" ! ;; ! *) # otherwise relative ! newsrcdir=../${srcdir}/${configdir} ! srcdiroption="-srcdir=${newsrcdir}" ! ;; ! esac ### check for guested configure, otherwise fix possibly relative progname ! if [ -f ${newsrcdir}/configure ] ; then ! recprog=${newsrcdir}/configure ! else ! case "${progname}" in ! /*) recprog=${progname} ;; ! *) recprog=../${progname} ;; ! esac ! fi ### The recursion line is here. ! if eval ${recprog} ${verbose} --host=${host_alias} --target=${target_alias} \ ! ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \ ! ${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${removing} ${redirect} ; then ! true ! else ! exit 1 ! fi ! ! cd ${POPDIR} ! fi ! done fi diff -c2pr gnats-3.00/configure.in gnats-3.01/configure.in *** gnats-3.00/configure.in Mon Mar 8 18:34:56 1993 --- gnats-3.01/configure.in Wed Apr 14 13:30:43 1993 *************** *** 25,29 **** # these libraries are used by various programs built for the host environment # ! host_libs="mmalloc libiberty opcodes bfd readline glob tcl tk" # these tools are built for the host environment --- 25,29 ---- # these libraries are used by various programs built for the host environment # ! host_libs="mmalloc libiberty opcodes bfd readline glob tcl tk tclX" # these tools are built for the host environment *************** host_tools="byacc flex bison binutils ld *** 33,37 **** m4 autoconf ispell grep diff rcs cvs fileutils shellutils textutils wdiff find emacs uudecode hello tar gzip indent ! recode" --- 33,37 ---- m4 autoconf ispell grep diff rcs cvs fileutils shellutils textutils wdiff find emacs uudecode hello tar gzip indent ! recode package2 package" *************** case "${host}" in *** 96,100 **** *-ibm-aix*) host_makefile_frag=config/mh-aix ;; *-bull-bosx*) host_makefile_frag=config/mh-aix ;; ! *-sun-solaris*) host_makefile_frag=config/mh-solaris ;; *-sun-*) host_makefile_frag=config/mh-sun ;; *-hp-hpux) host_makefile_frag=config/mh-hpux ;; --- 96,100 ---- *-ibm-aix*) host_makefile_frag=config/mh-aix ;; *-bull-bosx*) host_makefile_frag=config/mh-aix ;; ! *-sun-solaris2*) host_makefile_frag=config/mh-solaris ;; *-sun-*) host_makefile_frag=config/mh-sun ;; *-hp-hpux) host_makefile_frag=config/mh-hpux ;; *************** esac *** 105,119 **** # per-target: ! bfd_target= ! case "${target}" in ! a29k-amd-ebmon) bfd_target="ebmon29k" ;; ! a29k-amd-udi) bfd_target="udi29k" ;; ! a29k-amd-*) echo "bad target_os for amd" 1>&2 ! exit 1 ! ;; esac # some tools are only suitable for building in a "native" situation. # Those are added when we have a host==target configuration. For cross --- 105,124 ---- # per-target: ! # some tools are so dependent upon X11 that if we're not building with X, ! # it's not even worth trying to configure, much less build, that tool. ! case ${with_x} in ! yes) # the default value for this tree is that X11 is available ! ;; ! no | "") ! configdirs=`echo ${configdirs} | sed -e 's/tk//'` ! ;; ! *) ! echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2 ! ;; esac + # some tools are only suitable for building in a "native" situation. # Those are added when we have a host==target configuration. For cross *************** fi *** 140,164 **** # exist yet. ! #case "${host}" in ! # hppa*-*-*) ! # configdirs=`echo ${configdirs} | sed -e 's/emacs//'` ! # ;; ! #esac case "${target}" in - mips-dec-bsd*) - # We do want to build gas in this case. So don't use the mips-*-* case - # for this target. - ;; - mips-*-*) - configdirs=`echo ${configdirs} | sed -e 's/gas//'` - ;; rs6000-*-*) ! configdirs=`echo ${configdirs} | sed -e 's/ld//;s/binutils//;s/gas//;s/tk//'` ;; hppa*-*-*) configdirs=`echo ${configdirs} | sed -e 's/ld//;s/binutils//;s/gas//'` ;; ! *-*-solaris2) configdirs=`echo ${configdirs} | sed -e 's/ld//;s/gas//'` ;; --- 145,164 ---- # exist yet. ! case "${host}" in ! i[34]86-*-go32) ! configdirs=`echo ${configdirs} | sed -e 's/tcl//;s/expect//;s/deja-gnu//'` ! configdirs=`echo ${configdirs} | sed -e 's/make//;s/texinfo//'` ! configdirs=`echo ${configdirs} | sed -e 's/patch//;s/flex//;s/byacc//;s/send_pr//'` ! ;; ! esac case "${target}" in rs6000-*-*) ! configdirs=`echo ${configdirs} | sed -e 's/ld//;s/binutils//;s/gas//'` ;; hppa*-*-*) configdirs=`echo ${configdirs} | sed -e 's/ld//;s/binutils//;s/gas//'` ;; ! *-*-solaris2*) configdirs=`echo ${configdirs} | sed -e 's/ld//;s/gas//'` ;; *************** case "${target}" in *** 166,173 **** configdirs=`echo ${configdirs} | sed -e 's/bfd//;s/ld//;s/binutils//'` ;; esac ! ! target_makefile_frag=config/mt-${bfd_target} # --- 166,187 ---- configdirs=`echo ${configdirs} | sed -e 's/bfd//;s/ld//;s/binutils//'` ;; + h8300-*-*) + configdirs=`echo ${configdirs} | sed -e 's/libg++//'` + ;; + h8500-*-*) + configdirs=`echo ${configdirs} | sed -e 's/libg++//'` + ;; esac ! # Set with_gnu_as and with_gnu_ld as appropriate. ! # This is commented out for now. ! #if [ x${with_gnu_as} != xyes ] && echo ${configdirs} | grep gas > /dev/null && [ -d ${srcdir}/gas ]; then ! # with_gnu_as=yes ! # withoptions="$withoptions -with-gnu-as" ! #fi ! #if [ x${with_gnu_ld} != xyes ] && echo ${configdirs} | grep ld > /dev/null && [ -d ${srcdir}/ld ]; then ! # with_gnu_ld=yes ! # withoptions="$withoptions -with-gnu-ld" ! #fi # *************** target_makefile_frag=config/mt-${bfd_tar *** 176,178 **** # End: # - --- 190,191 ---- diff -c2pr gnats-3.00/etc/ChangeLog gnats-3.01/etc/ChangeLog *** gnats-3.00/etc/ChangeLog Tue Feb 9 12:41:27 1993 --- gnats-3.01/etc/ChangeLog Mon Mar 22 23:55:44 1993 *************** *** 1,2 **** --- 1,20 ---- + Mon Mar 22 23:55:27 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Makefile.in: add installcheck target + + Wed Mar 17 02:21:15 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Install.in: fix 'source only' extraction bug where it looked for + the src dir under H-/src instead of src; also remove stray + reference to EMACSHIBIN + + Mon Mar 15 01:25:45 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * make-stds.texi: added 'installcheck' to the standard targets + + Tue Mar 9 19:48:28 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * standards.texi: added INFO-DIR-ENTRY, updated version from the FSF + Tue Feb 9 12:40:23 1993 Ian Lance Taylor (ian@cygnus.com) diff -c2pr gnats-3.00/etc/Makefile.in gnats-3.01/etc/Makefile.in *** gnats-3.00/etc/Makefile.in Tue Feb 9 12:41:28 1993 --- gnats-3.01/etc/Makefile.in Mon Mar 22 23:55:42 1993 *************** prefix = /usr/local *** 6,10 **** exec_prefix = $(prefix) ! srcdir = . bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib --- 6,10 ---- exec_prefix = $(prefix) ! srcdir = . bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib *************** Makefile: $(srcdir)/Makefile.in $(host_m *** 92,95 **** --- 92,96 ---- dist: check: + installcheck: TAGS: diff -c2pr gnats-3.00/etc/configure.texi gnats-3.01/etc/configure.texi *** gnats-3.00/etc/configure.texi Thu Feb 11 18:06:43 1993 --- gnats-3.01/etc/configure.texi Sun Mar 21 17:22:06 1993 *************** This will be different from @file{.} if *** 974,977 **** --- 974,984 ---- absolute path or a path relative to the build directory. + @item package_makefile_frag + @vindex package_makefile_frag + If set in @file{configure.in}, this variable should be the name a file relative + to @samp{srcdir} to be included in the resulting @file{Makefile}. If the named + file does not exist, @code{configure} will print a warning message. This + variable is not set by @code{configure}. + @item host_makefile_frag @vindex host_makefile_frag *************** immediately after parsing command line a *** 1065,1069 **** @samp{srctrigger} and @samp{srcname} @emph{must} be set here. ! You might also want to set the variable @samp{configdirs} here. @c --------------------------------------------------------------------- --- 1072,1077 ---- @samp{srctrigger} and @samp{srcname} @emph{must} be set here. ! You might also want to set the variables @samp{configdirs} and ! @samp{package_makefile_frag} here. @c --------------------------------------------------------------------- *************** begins with @w{@samp{# per-host:}} and e *** 1079,1088 **** @dfn{per-host} section when determining host-specific information. ! This section usually contains a big @code{case} statement using the variables ! @samp{host_cpu}, @samp{host_vendor}, and @samp{host_os} to determine ! appropriate values for @samp{host_makefile_frag} and @samp{files}, although ! @samp{files} is not usually set here. Usually, it is set at the end of the ! @dfn{per-target} section after determining the names of the target specific ! configuration files. @c --------------------------------------------------------------------- --- 1087,1095 ---- @dfn{per-host} section when determining host-specific information. ! This section usually contains a big @code{case} statement using the variable ! @samp{host} to determine appropriate values for @samp{host_makefile_frag} and ! @samp{files}, although @samp{files} is not usually set here. Usually, it is ! set at the end of the @dfn{per-target} section after determining the names of ! the target specific configuration files. @c --------------------------------------------------------------------- *************** target-specific information, and before *** 1101,1109 **** links. ! This section usually contains a big @code{case} statement using the variables ! called @samp{target_cpu}, @samp{target_vendor}, and @samp{target_os} to ! determine appropriate values for @samp{target_makefile_frag} and @samp{files}. ! The last lines in the @dfn{per-target} section normally set the variables ! @samp{files} and @samp{links}. @c --------------------------------------------------------------------- --- 1108,1115 ---- links. ! This section usually contains a big @code{case} statement using the variable ! @samp{target} to determine appropriate values for @samp{target_makefile_frag} ! and @samp{files}. The last lines in the @dfn{per-target} section normally set ! the variables @samp{files} and @samp{links}. @c --------------------------------------------------------------------- *************** srcname="bison" *** 1145,1150 **** # per-host: ! case "$@{host_os@}" in ! m88kbcs) host_makefile_frag=config/mh-delta88 ;; --- 1151,1156 ---- # per-host: ! case "$@{host@}" in ! m88k-motorola-*) host_makefile_frag=config/mh-delta88 ;; *************** These are described in @ref{Makefile ext *** 1619,1622 **** --- 1625,1635 ---- coding standards}. + @item Collect package specific definitions in a single file + Many packages are best configured using a common @file{Makefile} fragment which + is included by all of the makefiles in the different directories of the + package. In order to accomplish this, set the variable + @samp{package_makefile_fragment} to the name of the file. It will be inserted + into the final @file{Makefile} before the target-specific fragment. + @item Move host support from @file{Makefile} to fragments This usually involves finding sections of the @file{Makefile} that say things diff -c2pr gnats-3.00/etc/make-stds.texi gnats-3.01/etc/make-stds.texi *** gnats-3.00/etc/make-stds.texi Mon Feb 1 16:34:16 1993 --- gnats-3.01/etc/make-stds.texi Sun Mar 14 17:26:33 1993 *************** installed. *** 245,248 **** --- 245,258 ---- @end table + The following target is suggested as a conventional name, for programs + in which it is useful. + + @table @code + @item installcheck + Perform installation tests (if any). The user must build and install + the program before running the tests. You should not assume that + @file{$(bindir)} is in the search path. + @end table + @node Command Variables @section Variables for Specifying Commands diff -c2pr gnats-3.00/etc/standards.texi gnats-3.01/etc/standards.texi *** gnats-3.00/etc/standards.texi Mon Feb 1 16:34:12 1993 --- gnats-3.01/etc/standards.texi Fri Mar 12 19:00:05 1993 *************** *** 5,8 **** --- 5,16 ---- @c %**end of header + @ifinfo + @format + START-INFO-DIR-ENTRY + * standards: (standards). the GNU Project coding standards + END-INFO-DIR-ENTRY + @end format + @end ifinfo + @setchapternewpage off *************** by the Free Software Foundation. *** 35,39 **** @titlefont{GNU Coding Standards} @author{Richard Stallman} ! @author{last updated 6 Jan 1993} @c Note date also appears below. @page --- 43,47 ---- @titlefont{GNU Coding Standards} @author{Richard Stallman} ! @author{last updated 03 Feb 1993} @c Note date also appears below. @page *************** by Free Software Foundation. *** 61,65 **** @top Version ! Last updated 6 Jan 1993. @c Note date also appears above. @end ifinfo --- 69,73 ---- @top Version ! Last updated 03 Feb 1993. @c Note date also appears above. @end ifinfo *************** distribution. So if you do distribute n *** 1132,1136 **** sure they are up to date when you make a new distribution. ! Make sure that no file name in the distribution is no more than 14 characters long. Likewise, no file created by building the program should have a name longer than 14 characters. The reason for this is --- 1140,1150 ---- sure they are up to date when you make a new distribution. ! Make sure that the directory into which the distribution unpacks (as ! well as any subdirectories) are all world-writable (octal mode 777). ! This is so that old versions of @code{tar} which preserve the ! ownership and permissions of the files from the tar archive will be ! able to extract all the files even if the user is unprivileged. ! ! Make sure that no file name in the distribution is more than 14 characters long. Likewise, no file created by building the program should have a name longer than 14 characters. The reason for this is diff -c2pr gnats-3.00/gnats/ChangeLog gnats-3.01/gnats/ChangeLog *** gnats-3.00/gnats/ChangeLog Mon Mar 8 18:35:23 1993 --- gnats-3.01/gnats/ChangeLog Wed Apr 14 13:30:47 1993 *************** *** 1,2 **** --- 1,222 ---- + Wed Apr 14 12:11:07 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * Makefile.in (VERSION): Bump version to 3.01. + * gnats-fc.eps (Title): Likewise. + + * query-pr.c (do_pr): Do a case-insensitive match against the + originator name. + + * gen-index.c (long_options): Add -V/--version. + (main): Grok it. + + * man/rmcat.man, man/gen-index.man: New files. + * man/Makefile.in (SRCS8): Add rmcat.8 and gen-index.8. + (MAN8): Add rmcat.man and gen-index.man. + + * query-pr.c (main): If we're doing a summary, output a final + newline after we run down the list of PRs that they gave us. + + Tue Apr 13 12:13:42 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * gnats-el.in (gnats-mode-write-file-hook): Fix appending the hook. + + * internal.c, misc.c: Check both __STDC__ and _AIX to see if we + should use stdarg instead of varargs. + + * Makefile.in (realclean): Don't delete TAGS. + (distclean): Don't delete getdate.c. + (all-gnats): Move edit-pr back with the other tools. + + * globals.h (APPEND_STRING): Added macro. + * file-pr.c (APPEND_STRING): Delete it from here. + + * headers.c: Include config.h. + (read_header): Rewrite to accept tab-continued headers. + (set_continued_header): New function; special-cases Received: + headers to accept as many as you want to give it. If + KEEP_RECEIVED_HEADERS is false, it only does an assignment. + (lookup_header): Deleted prototype, moved the function up so we + don't need it. + * config.h (KEEP_RECEIVED_HEADERS): Added. + * Makefile.in (headers.o): Added dependencies. + + * query-pr.c (get_category): If we couldn't open the index, return + a NULL. + + Mon Apr 12 14:55:33 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * pr.h (PR_Type): Typedef the enum. + (PR_entry): Change `datatype' member accordingly. + + * file-pr.c (reply_to_submitter): Send mail to the address in the + `Reply-To:' header if there is one; otherwise, just use the + `From:' address. + + * pr-edit.c (main): When calling check_pr, arrange to exit + non-zero if the PR didn't check out ok. + + * rmcat.sh: New file, mate to mkcat. + * Makefile.in (DISTFILES): Add rmcat. + (all-gnats): Likewise. + (rmcat): New rule. + (install-gnats): Install it. + (clean): Delete rmcat. + + * mkdist.sh: Use XFOOX instead of @FOO@ for substs from GNATS. Use + YFOOY for the substs mkdist does on the Makefile it creates. + * Makefile.in (mkdist): Use XFOOX. We don't need to subst in LIBDIR. + + * query-pr.c (get_category): Don't say we couldn't find the PR in + the index, since we'll later say we couldn't read it anyway. + (query_pr): Check the return of get_category, and complain if it + was null. Return an int ourselves. + (main): If we got some errors, then exit with a non-zero status. + + * gnats-el.in (gnats-mail-PR-changed): Check if CC is null before + adding the responsible person to it, so we don't try to send mail + to `nil'. + + * edit-pr.sh: Use an arrow instead of wrapping from/to in braces. + * gnats-el.in (gnats-change-field-and-update-audit-trail): Likewise. + + * main.c (main): If there's a PR.lock file, then leave and try + again later, so we don't invite problems. Include unistd.h. + + Fri Apr 9 14:48:00 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * query-pr.c (print_path): New variable. + (main): Set it if -P/--print-path. + (print_pr): If `print_path' is true, then print out something that + the emacs next-error function can grok. + (usage): Update for the new options. + * gnats-el.in (query-pr): Pass the -P option, and fix things so + they'll work under both emacs 18 and emacs 19. + + * query-pr.c (skip_closed): New variable. + (main): Set it if -x/--skip-closed. + (query_pr): Use it to avoid closed PRs. + + * Makefile.in (DEFAULT_RELEASE, DEFAULT_ORGANIZATION): Don't wrap + with quotes. + (GNATS_VARS): Don't do it here either. + + * queue-pr.c: Include pathmax.h. + (drop_msg): Use mktemp instead of tempnam. + * internal.c (write_index): Likewise. + + Wed Apr 7 13:13:08 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * gen-index.c: New file, to emit an index for an existing database. + * Makefile.in (gen-index): New rule. + (all-gnats): Added gen-index. + (clean): Likewise. + + * queue-pr.c: Include unistd.h, sys/wait.h, and sys/param.h by + hand; include gnats-dirs.h instead of queue.h. + * queue.h: Renamed to gnats-dirs.h. + * Makefile.in (DISTFILES): Change it. + (queue-pr.o): Depend upon gnats-dirs.h instead. + + * Makefile.in (DEFAULT_ORGANIZATION): New variable. + (GNATS_VARS): Pass it. + + * edit-pr.sh: Always send mail to the responsible person of a PR. + + * edit-pr.sh: Include the synopsis (both old and new if they + changed) in the mail we send. Wrap from/to for responsible + changes in <>'s, for names that have dashes in them (e.g., + gnats-admin). Don't put an empty line between the synopsis and the + change message. + * gnats-el.in (gnats-change-field-and-update-audit-trail): Likewise. + + * query-pr.c (do_pr): Return an int (0 or 1 appropriately). + (query_pr): Check for do_pr's return to see if we should output a + newline or not. + + * queue-pr.c (drop_msg): Do a rename of the file to file, instead + of file to directory. + + * edit-pr.sh (locked): Use cmp -s instead of the output of cmp to + see if the PR has been changed. + (mail_to): Don't send all status changes to gnats-admin. + + * query-pr.c (usage): Add originator options to the usage. + + * mkdist.sh (Makefile): Quote __EOF__ to avoid variable + substitution inside the here document. After creating the + Makefile, substitute in GNATS_SITE, the VERSION, and the release. + (FILES): Change send-pr.elisp to send-pr-el.in. + (send-pr): Likewise. + (libdir): Add definition in the Makefile. + (install-sid): Substitute bindir using commas to avoid sed problems. + * Makefile.in (mkdist): Also substitute VERSION. + + * file-pr.c (gnats): Don't use S_IFDIR in the mode for pending or + the category directory. + + * Makefile.in (GNATS_VARS): Put quotes around $(DEFAULT_RELEASE), + in case it happens to have spaces in it. + + * files.c (get_responsible_address): Cut off anything after a + comma in a passwd entry's gecos field, to avoid phone #s and such. + + * pr-edit.c (modify_pr): Copy the responsible field before + chopping off the full name for the index. + + Mon Mar 29 15:01:10 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * file-pr.c (notify_responsible): Add a `Resent-From:' header. + (append_report): Likewise. + + * query-pr.c (print_pr): Also print out the arrival date. + + Thu Mar 25 15:21:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * gnats-el.in (view-pr): Give the error as being from view-pr, not + edit-pr. + + * edit-pr.sh (full_id): Look for "/$1:", not "$1:", to avoid + matching spuriously against an incomplete set. + (everywhere): Change temp filenames to be short enough not to go + over 14 chars when we create the .old and .tmp files. + (Subject): Use full_id, not full_pr. + + * file-pr.c (append_report): Only send mail to the person + responsible for the PR, and to the submitter contact. + + * file-pr.c (append_report): Preserve the header values we + recorded just before coming into append_report, so we use those + for our outgoing headers, instead of the ones from the PR. + + Fri Mar 19 17:06:49 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * gnats-el.in (edit-pr): Say that GNATS itself is locked when we + aren't given a username by pr-edit. + (gnats-find-field): Return a null string, not t or nil. + (gnats-get-reply-to): When using mail-fetch-field, pass arg ALL as + nil, so we only get one copy of it if there's a `Sender:' field. + When deciding what to return, check if REPLY-TO is both nil and an + empty string. + + Wed Mar 17 15:34:14 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * file-pr.c (notify_responsible): Say "business hours". + + * Makefile.in (install-gnats): Install edit-pr also. + + * queue-pr.c (fork_gnats): Fix an off-by-one error. + (main): Likewise. + + * misc.c (open_mail_file): Make sure BUFFER has enough room for + the mail agent *and* all of the recipients, rather than + arbitrarily pick 256 as a probably bogus value. + + Mon Mar 15 15:06:41 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * file-pr.c (append_report): Chop off the full name before getting + the responsible address. + (notify_responsible): Don't put `Re:' in the message going to the + responsible people. + Sat Mar 6 15:15:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com) diff -c2pr gnats-3.00/gnats/MANIFEST gnats-3.01/gnats/MANIFEST *** gnats-3.00/gnats/MANIFEST Mon Mar 8 18:35:25 1993 --- gnats-3.01/gnats/MANIFEST Wed Apr 14 13:30:49 1993 *************** *** 36,39 **** --- 36,40 ---- pr-addr.c source for pr-addr pr-edit.c source for pr-edit (used by edit-pr) + gnats-dirs.h includes and defines used for reading directories gnats-el.in emacs lisp code for edit-pr, view-pr, and query-pr gnats.h prototypes and useful includes for all GNATS files *************** *** 43,49 **** query-pr.c source for query-pr queue-pr.c source for queue-pr - queue.h includes and defines used by queue-pr responsible sample list of responsible people resp-lookup.c the function get_responsible, isolated for later use submitters sample list of submitters xmalloc.c safe memory allocation and reallocation functions --- 44,50 ---- query-pr.c source for query-pr queue-pr.c source for queue-pr responsible sample list of responsible people resp-lookup.c the function get_responsible, isolated for later use + rmcat.sh script to delete category directories, etc. submitters sample list of submitters xmalloc.c safe memory allocation and reallocation functions diff -c2pr gnats-3.00/gnats/Makefile.in gnats-3.01/gnats/Makefile.in *** gnats-3.00/gnats/Makefile.in Mon Mar 8 18:35:26 1993 --- gnats-3.01/gnats/Makefile.in Wed Apr 14 13:30:49 1993 *************** GNATS_ADDR = bugs@your-site.com *** 32,37 **** GNATS_SITE = widgets # The default release for the `>Release:' field of a PR, for send-pr. ! DEFAULT_RELEASE = "unknown-1.0" # End of GNATS-specific configuration variables. --- 32,43 ---- GNATS_SITE = widgets + # NOTE: Don't wrap DEFAULT_RELEASE or DEFAULT_ORGANIZATION of these with + # quotes, or things will break. + # The default release for the `>Release:' field of a PR, for send-pr. ! DEFAULT_RELEASE = unknown-1.0 ! ! # The default organization for PRs. ! DEFAULT_ORGANIZATION = Widgets Inc. # End of GNATS-specific configuration variables. *************** docdir = $(datadir)/doc *** 89,93 **** # End of system configuration section. ! VERSION = 3.00 SHELL = /bin/sh --- 95,99 ---- # End of system configuration section. ! VERSION = 3.01 SHELL = /bin/sh *************** categories responsible submitters \ *** 107,112 **** at-pr.sh config.h configure configure.in error.c files.h getdate.y \ getdate.c globals.h headers.h index.c mkcat.sh pathmax.h pr.h \ ! pr-addr.c gnats-el.in gnats.h query-pr.c queue-pr.c queue.h \ ! xmalloc.c gnats.texi gnats-fc.eps INCLUDEDIR = -I$(srcdir)/../include --- 113,118 ---- at-pr.sh config.h configure configure.in error.c files.h getdate.y \ getdate.c globals.h headers.h index.c mkcat.sh pathmax.h pr.h \ ! pr-addr.c gnats-dirs.h gnats-el.in gnats.h query-pr.c queue-pr.c \ ! rmcat.sh xmalloc.c gnats.texi gnats-fc.eps INCLUDEDIR = -I$(srcdir)/../include *************** GNATS_VARS = \ *** 121,124 **** --- 127,131 ---- "VERSION=$(VERSION)" \ "DEFAULT_RELEASE=$(DEFAULT_RELEASE)" \ + "DEFAULT_ORGANIZATION=$(DEFAULT_ORGANIZATION)" \ "GNATS_SITE=$(GNATS_SITE)" *************** GNATS = all-gnats *** 134,139 **** all: $(GNATS) ! all-gnats: $(LIBGNATS) file-pr query-pr queue-pr pr-addr pr-edit at-pr \ ! mkcat mkdist gnats.el config-send-pr man-pages edit-pr all-tools: query-pr pr-addr pr-edit edit-pr gnats.el config-send-pr tools-man-pages --- 141,146 ---- all: $(GNATS) ! all-gnats: $(LIBGNATS) file-pr query-pr queue-pr pr-addr pr-edit edit-pr \ ! gen-index at-pr mkcat rmcat mkdist gnats.el config-send-pr man-pages all-tools: query-pr pr-addr pr-edit edit-pr gnats.el config-send-pr tools-man-pages *************** pr-addr: pr-addr.o version.o $(LIBGNATS) *** 172,175 **** --- 179,186 ---- $(CC) $(CFLAGS) $(XTRAFLAGS) -o $@ pr-addr.o version.o $(LIBGNATS) $(LIBIBERTY) $(LIBS) + gen-index: gen-index.o version.o $(LIBGNATS) $(LIBIBERTY) + rm -f gen-index + $(CC) $(CFLAGS) $(XTRAFLAGS) -o $@ gen-index.o version.o $(LIBGNATS) $(LIBIBERTY) $(LIBS) + at-pr: at-pr.sh Makefile sed -e 's,@VERSION@,$(VERSION),g' \ *************** mkcat: mkcat.sh Makefile *** 186,193 **** chmod a+x mkcat ! mkdist: mkdist.sh Makefile sed -e 's,@GNATS_ROOT@,$(GNATS_ROOT),g' \ -e 's,@LIBDIR@,$(libdir),g' \ ! -e 's,@GNATS_SITE@,$(GNATS_SITE),g' $(srcdir)/mkdist.sh > tmp-mkdist mv tmp-mkdist mkdist chmod a+x mkdist --- 197,211 ---- chmod a+x mkcat ! rmcat: rmcat.sh Makefile sed -e 's,@GNATS_ROOT@,$(GNATS_ROOT),g' \ -e 's,@LIBDIR@,$(libdir),g' \ ! -e 's,@GNATS_SITE@,$(GNATS_SITE),g' $(srcdir)/rmcat.sh > tmp-rmcat ! mv tmp-rmcat rmcat ! chmod a+x rmcat ! ! mkdist: mkdist.sh Makefile ! sed -e 's,XGNATS_ROOTX,$(GNATS_ROOT),g' \ ! -e 's,XVERSIONX,$(VERSION),g' \ ! -e 's,XGNATS_SITEX,$(GNATS_SITE),g' $(srcdir)/mkdist.sh > tmp-mkdist mv tmp-mkdist mkdist chmod a+x mkdist *************** config-send-pr: *** 222,228 **** # Dependencies. $(OBJECTS): globals.h gnats.h pr.h headers.h files.h config.h files.o: pathmax.h ! queue-pr.o: queue.h # Misc targets. --- 240,247 ---- # Dependencies. $(OBJECTS): globals.h gnats.h pr.h headers.h files.h config.h + headers.o: globals.h headers.h gnats.h config.h files.o: pathmax.h ! queue-pr.o: gnats-dirs.h # Misc targets. *************** install-gnats: all-gnats install-man *** 267,270 **** --- 286,291 ---- $(INSTALL_PROGRAM) mkcat $(GNATS_ROOT)/gnats-bin chown gnats $(GNATS_ROOT)/gnats-bin/mkcat + $(INSTALL_PROGRAM) rmcat $(GNATS_ROOT)/gnats-bin + chown gnats $(GNATS_ROOT)/gnats-bin/rmcat $(INSTALL_PROGRAM) mkdist $(GNATS_ROOT)/gnats-bin chown gnats $(GNATS_ROOT)/gnats-bin/mkdist *************** install-gnats: all-gnats install-man *** 291,294 **** --- 312,317 ---- $(INSTALL_PROGRAM) query-pr $(bindir) chmod 755 $(bindir)/query-pr + $(INSTALL_PROGRAM) edit-pr $(bindir) + chmod 755 $(bindir)/edit-pr @if [ -f $(GNATS_ROOT)/gnats-adm/categories ]; then \ echo "Not putting the examples in gnats-adm, files are already there." ; \ *************** gnats.dvi: $(srcdir)/gnats.texi *** 346,351 **** clean: clean-man mostlyclean ! -rm -f *.o core gnats.el gnats.elc queue-pr gnats at-pr mkcat $(LIBGNATS) ! -rm -f pr-addr query-pr pr-edit edit-pr -rm -f *.dvi version.c --- 369,375 ---- clean: clean-man mostlyclean ! -rm -f *.o core gnats.el gnats.elc queue-pr gnats at-pr mkcat rmcat ! -rm -f $(LIBGNATS) ! -rm -f pr-addr query-pr pr-edit edit-pr gen-index -rm -f *.dvi version.c *************** mostlyclean: *** 357,366 **** distclean: clean ! -rm -f Makefile config.status getdate.c -rm -rf =* ./"#"* *~* -rm -f *.orig *.rej realclean: distclean ! -rm -f TAGS gnats.info* gnats.??s # FIXME --- 381,390 ---- distclean: clean ! -rm -f Makefile config.status -rm -rf =* ./"#"* *~* -rm -f *.orig *.rej realclean: distclean ! -rm -f gnats.info* gnats.??s # FIXME diff -c2pr gnats-3.00/gnats/TODO gnats-3.01/gnats/TODO *** gnats-3.00/gnats/TODO Mon Mar 8 18:35:28 1993 --- gnats-3.01/gnats/TODO Wed Apr 14 13:30:51 1993 *************** thought into it: *** 11,14 **** --- 11,15 ---- * make the arguments to the search options in query-pr (e.g., --submitter) accept regular expressions + * when regexps are included, make check_if_reply use one * add logical negation of the search rules for query-pr * make send-pr mode in emacs work as the shell one does (handle more than *************** thought into it: *** 16,19 **** --- 17,22 ---- * add proper make install targets, and maybe check targets that will actually do something + * figure out why get_next_field is being tagged as having been "redeclared" + by the AIX compiler, when it's NOT! Things we'd like to see happen (using the routines in libgnats should help): diff -c2pr gnats-3.00/gnats/btime.c gnats-3.01/gnats/btime.c *** gnats-3.00/gnats/btime.c Mon Mar 8 18:35:30 1993 --- gnats-3.01/gnats/btime.c Wed Apr 14 13:30:52 1993 *************** get_response_time (rtime, response_buf) *** 138,142 **** /* Strip off the line feed. */ ! p = strrchr (response_buf, '\n'); if (p) *p = '\0'; --- 138,142 ---- /* Strip off the line feed. */ ! p = (char *) strrchr (response_buf, '\n'); if (p) *p = '\0'; diff -c2pr gnats-3.00/gnats/config.h gnats-3.01/gnats/config.h *** gnats-3.00/gnats/config.h Mon Mar 8 18:35:32 1993 --- gnats-3.01/gnats/config.h Wed Apr 14 13:30:54 1993 *************** *** 12,13 **** --- 12,20 ---- "net", if you anticipate getting lots of reports from the Net. */ #define DEFAULT_SUBMITTER "unknown" + + /* Every email message has one or more `Received:' headers to tell you + how a message got from the sender to the recipient. Define this to + be TRUE if you want GNATS to preserve all of those `Received:' headers. + If you tend not to use the information, define it to be FALSE so GNATS + will only keep the first `Received:' header. */ + #define KEEP_RECEIVED_HEADERS TRUE diff -c2pr gnats-3.00/gnats/edit-pr.sh gnats-3.01/gnats/edit-pr.sh *** gnats-3.00/gnats/edit-pr.sh Mon Mar 8 18:35:34 1993 --- gnats-3.01/gnats/edit-pr.sh Wed Apr 14 13:30:56 1993 *************** case "$1" in *** 57,71 **** full_id=$1 else ! full_id=`grep "$1:" $GNATS_ROOT/gnats-adm/index | awk -F: '{print $1}' -` fi ;; esac ! trap 'rm -f /tmp/user$$ $new ; exit 0' 0 trap 'if [ "$locked" != "" ]; then \ $PR_EDIT --unlock $full_id ; \ locked= ; \ fi ; \ ! rm -f /tmp/user$$ $new ; exit 1' 1 2 3 13 15 # check $full_id --- 57,71 ---- full_id=$1 else ! full_id=`grep "/$1:" $GNATS_ROOT/gnats-adm/index | awk -F: '{print $1}' -` fi ;; esac ! trap 'rm -f /tmp/u$$ $new ; exit 0' 0 trap 'if [ "$locked" != "" ]; then \ $PR_EDIT --unlock $full_id ; \ locked= ; \ fi ; \ ! rm -f /tmp/u$$ $new ; exit 1' 1 2 3 13 15 # check $full_id *************** fi *** 110,128 **** # new = temp file to use for editing ! new="/tmp/edit_pr$$" # make a copy of pr in new cp $pr $new # lock the pr ! $PR_EDIT --lock $me $full_id 2> /tmp/user$$ locked=t ! if [ -s /tmp/user$$ ]; then ! if [ "`grep exists /tmp/user$$`" = "" ]; then ! echo "edit-pr: PR $full_id is locked by `sed 's/.*by //g' /tmp/user$$`" else echo "edit-pr: GNATS is presently locked, try again in a moment" fi ! rm -f /tmp/user$$ exit 1 fi --- 110,128 ---- # new = temp file to use for editing ! new="/tmp/ep$$" # make a copy of pr in new cp $pr $new # lock the pr ! $PR_EDIT --lock $me $full_id 2> /tmp/u$$ locked=t ! if [ -s /tmp/u$$ ]; then ! if [ "`grep exists /tmp/u$$`" = "" ]; then ! echo "edit-pr: PR $full_id is locked by `sed 's/.*by //g' /tmp/u$$`" else echo "edit-pr: GNATS is presently locked, try again in a moment" fi ! rm -f /tmp/u$$ exit 1 fi *************** fi *** 131,135 **** cp $new $new.old $EDITOR $new ! if [ "`cmp $new.old $new`" = "" ]; then echo "edit-pr: PR not changed" $PR_EDIT --unlock $full_id --- 131,135 ---- cp $new $new.old $EDITOR $new ! if cmp -s $new.old $new ; then echo "edit-pr: PR not changed" $PR_EDIT --unlock $full_id *************** new_state=`grep '^>State:' $new | sed -e *** 169,172 **** --- 169,174 ---- old_resp=`grep '^>Responsible:' $pr | sed -e 's,^>Responsible: ,,g' -e 's, ,,g'` new_resp=`grep '^>Responsible:' $new | sed -e 's,^>Responsible: ,,g' -e 's, ,,g'` + old_synopsis=`grep '^>Synopsis:' $pr | sed -e 's,^>Synopsis: ,,g' -e 's,^ *,,'` + new_synopsis=`grep '^>Synopsis:' $new | sed -e 's,^>Synopsis: ,,g' -e 's,^ *,,'` change_msg=/tmp/ed_pr_ch$$ *************** fi *** 181,186 **** if [ ! -z "$state_change" -o ! -z "$resp_change" ]; then # we've got a change ! mail_to="gnats-admin $me" ! echo "" > $change_msg if [ ! -z "$state_change" ]; then echo State-Changed-From-To: "$old_state"-"$new_state" >> $change_msg --- 183,187 ---- if [ ! -z "$state_change" -o ! -z "$resp_change" ]; then # we've got a change ! mail_to="$me" if [ ! -z "$state_change" ]; then echo State-Changed-From-To: "$old_state"-"$new_state" >> $change_msg *************** if [ ! -z "$state_change" -o ! -z "$resp *** 196,200 **** fi if [ ! -z "$resp_change" ]; then ! echo Responsible-Changed-From-To: "$old_resp"-"$new_resp" >> $change_msg echo Responsible-Changed-By: $me >> $change_msg echo Responsible-Changed-When: $DATE >> $change_msg --- 197,201 ---- fi if [ ! -z "$resp_change" ]; then ! echo Responsible-Changed-From-To: $old_resp->$new_resp" >> $change_msg echo Responsible-Changed-By: $me >> $change_msg echo Responsible-Changed-When: $DATE >> $change_msg *************** if [ ! -z "$state_change" -o ! -z "$resp *** 208,211 **** --- 209,214 ---- mail_to="$mail_to `$GNATS_ADDR $new_resp`" fi + else + mail_to="$mail_to `$GNATS_ADDR $old_resp`" fi *************** if [ ! -z "$state_change" -o ! -z "$resp *** 222,226 **** To: $mail_to From: $me ! Subject: Changed information for PR $full_pr `cat $change_msg` --- 225,236 ---- To: $mail_to From: $me ! Subject: Changed information for PR $full_id ! ! `if [ "$old_synopsis" != "$new_synopsis" ]; then ! echo Old Synopsis: "$old_synopsis" ! echo New Synopsis: "$new_synopsis" ! else ! echo Synopsis: "$old_synopsis" ! fi` `cat $change_msg` *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/epsf.tex Wed Apr 14 13:00:55 1993 *************** *** 0 **** --- 1,193 ---- + % EPSF.TEX macro file: + % Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989. + % Revised by Don Knuth, 3 Jan 1990. + % Revised by Tomas Rokicki to accept bounding boxes with no + % space after the colon, 18 Jul 1990. + % + % TeX macros to include an Encapsulated PostScript graphic. + % Works by finding the bounding box comment, + % calculating the correct scale values, and inserting a vbox + % of the appropriate size at the current position in the TeX document. + % + % To use with the center environment of LaTeX, preface the \epsffile + % call with a \leavevmode. (LaTeX should probably supply this itself + % for the center environment.) + % + % To use, simply say + % \input epsf % somewhere early on in your TeX file + % \epsfbox{filename.ps} % where you want to insert a vbox for a figure + % + % Alternatively, you can type + % + % \epsfbox[0 0 30 50]{filename.ps} % to supply your own BB + % + % which will not read in the file, and will instead use the bounding + % box you specify. + % + % The effect will be to typeset the figure as a TeX box, at the + % point of your \epsfbox command. By default, the graphic will have its + % `natural' width (namely the width of its bounding box, as described + % in filename.ps). The TeX box will have depth zero. + % + % You can enlarge or reduce the figure by saying + % \epsfxsize= \epsfbox{filename.ps} + % (or + % \epsfysize= \epsfbox{filename.ps}) + % instead. Then the width of the TeX box will be \epsfxsize and its + % height will be scaled proportionately (or the height will be + % \epsfysize and its width will be scaled proportiontally). The + % width (and height) is restored to zero after each use. + % + % A more general facility for sizing is available by defining the + % \epsfsize macro. Normally you can redefine this macro + % to do almost anything. The first parameter is the natural x size of + % the PostScript graphic, the second parameter is the natural y size + % of the PostScript graphic. It must return the xsize to use, or 0 if + % natural scaling is to be used. Common uses include: + % + % \epsfxsize % just leave the old value alone + % 0pt % use the natural sizes + % #1 % use the natural sizes + % \hsize % scale to full width + % 0.5#1 % scale to 50% of natural size + % \ifnum#1>\hsize\hsize\else#1\fi % smaller of natural, hsize + % + % If you want TeX to report the size of the figure (as a message + % on your terminal when it processes each figure), say `\epsfverbosetrue'. + % + \newread\epsffilein % file to \read + \newif\ifepsffileok % continue looking for the bounding box? + \newif\ifepsfbbfound % success? + \newif\ifepsfverbose % report what you're making? + \newdimen\epsfxsize % horizontal size after scaling + \newdimen\epsfysize % vertical size after scaling + \newdimen\epsftsize % horizontal size before scaling + \newdimen\epsfrsize % vertical size before scaling + \newdimen\epsftmp % register for arithmetic manipulation + \newdimen\pspoints % conversion factor + % + \pspoints=1bp % Adobe points are `big' + \epsfxsize=0pt % Default value, means `use natural size' + \epsfysize=0pt % ditto + % + \def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}% + \global\def\epsfurx{540}\global\def\epsfury{720}% + \def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket + \let\next=\epsfgetlitbb\else\let\next=\epsfnormal\fi\next{#1}}% + % + \def\epsfgetlitbb#1#2 #3 #4 #5]#6{\epsfgrab #2 #3 #4 #5 .\\% + \epsfsetgraph{#6}}% + % + \def\epsfnormal#1{\epsfgetbb{#1}\epsfsetgraph{#1}}% + % + \def\epsfgetbb#1{% + % + % The first thing we need to do is to open the + % PostScript file, if possible. + % + \openin\epsffilein=#1 + \ifeof\epsffilein\errmessage{I couldn't open #1, will ignore it}\else + % + % Okay, we got it. Now we'll scan lines until we find one that doesn't + % start with %. We're looking for the bounding box comment. + % + {\epsffileoktrue \chardef\other=12 + \def\do##1{\catcode`##1=\other}\dospecials \catcode`\ =10 + \loop + \read\epsffilein to \epsffileline + \ifeof\epsffilein\epsffileokfalse\else + % + % We check to see if the first character is a % sign; + % if not, we stop reading (unless the line was entirely blank); + % if so, we look further and stop only if the line begins with + % `%%BoundingBox:'. + % + \expandafter\epsfaux\epsffileline:. \\% + \fi + \ifepsffileok\repeat + \ifepsfbbfound\else + \ifepsfverbose\message{No bounding box comment in #1; using defaults}\fi\fi + }\closein\epsffilein\fi}% + % + % Now we have to calculate the scale and offset values to use. + % First we compute the natural sizes. + % + \def\epsfsetgraph#1{% + \epsfrsize=\epsfury\pspoints + \advance\epsfrsize by-\epsflly\pspoints + \epsftsize=\epsfurx\pspoints + \advance\epsftsize by-\epsfllx\pspoints + % + % If `epsfxsize' is 0, we default to the natural size of the picture. + % Otherwise we scale the graph to be \epsfxsize wide. + % + \epsfxsize\epsfsize\epsftsize\epsfrsize + \ifnum\epsfxsize=0 \ifnum\epsfysize=0 + \epsfxsize=\epsftsize \epsfysize=\epsfrsize + % + % We have a sticky problem here: TeX doesn't do floating point arithmetic! + % Our goal is to compute y = rx/t. The following loop does this reasonably + % fast, with an error of at most about 16 sp (about 1/4000 pt). + % + \else\epsftmp=\epsftsize \divide\epsftmp\epsfrsize + \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp + \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp + \epsftmp=\epsfysize + \loop \advance\epsftsize\epsftsize \divide\epsftmp 2 + \ifnum\epsftmp>0 + \ifnum\epsftsize<\epsfrsize\else + \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp \fi + \repeat + \fi + \else\epsftmp=\epsfrsize \divide\epsftmp\epsftsize + \epsfysize=\epsfxsize \multiply\epsfysize\epsftmp + \multiply\epsftmp\epsftsize \advance\epsfrsize-\epsftmp + \epsftmp=\epsfxsize + \loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2 + \ifnum\epsftmp>0 + \ifnum\epsfrsize<\epsftsize\else + \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp \fi + \repeat + \fi + % + % Finally, we make the vbox and stick in a \special that dvips can parse. + % + \ifepsfverbose\message{#1: width=\the\epsfxsize, height=\the\epsfysize}\fi + \epsftmp=10\epsfxsize \divide\epsftmp\pspoints + \vbox to\epsfysize{\vfil\hbox to\epsfxsize{% + \special{PSfile=#1 llx=\epsfllx\space lly=\epsflly\space + urx=\epsfurx\space ury=\epsfury\space rwi=\number\epsftmp}% + \hfil}}% + \epsfxsize=0pt\epsfysize=0pt}% + + % + % We still need to define the tricky \epsfaux macro. This requires + % a couple of magic constants for comparison purposes. + % + {\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%BoundingBox}}% + % + % So we're ready to check for `%BoundingBox:' and to grab the + % values if they are found. + % + \long\def\epsfaux#1#2:#3\\{\ifx#1\epsfpercent + \def\testit{#2}\ifx\testit\epsfbblit + \epsfgrab #3 . . . \\% + \epsffileokfalse + \global\epsfbbfoundtrue + \fi\else\ifx#1\par\else\epsffileokfalse\fi\fi}% + % + % Here we grab the values and stuff them in the appropriate definitions. + % + \def\epsfgrab #1 #2 #3 #4 #5\\{% + \global\def\epsfllx{#1}\ifx\epsfllx\empty + \epsfgrab #2 #3 #4 #5 .\\\else + \global\def\epsflly{#2}% + \global\def\epsfurx{#3}\global\def\epsfury{#4}\fi}% + % + % We default the epsfsize macro. + % + \def\epsfsize#1#2{\epsfxsize} + % + % Finally, another definition for compatibility with older macros. + % + \let\epsffile=\epsfbox diff -c2pr gnats-3.00/gnats/file-pr.c gnats-3.01/gnats/file-pr.c *** gnats-3.00/gnats/file-pr.c Mon Mar 8 18:35:35 1993 --- gnats-3.01/gnats/file-pr.c Wed Apr 14 13:30:58 1993 *************** gnats (fp) *** 186,190 **** char *l; synopsis = (char *) strdup (subject); ! l = strrchr (synopsis, '\n'); if (l != NULL) *l = '\0'; --- 186,190 ---- char *l; synopsis = (char *) strdup (subject); ! l = (char *) strrchr (synopsis, '\n'); if (l != NULL) *l = '\0'; *************** gnats (fp) *** 195,199 **** seconds = time ((time_t) 0); strcpy (arrival_time, ctime (&seconds)); ! p = strrchr (arrival_time, '\n'); if (p != NULL) *p = '\0'; --- 195,199 ---- seconds = time ((time_t) 0); strcpy (arrival_time, ctime (&seconds)); ! p = (char *) strrchr (arrival_time, '\n'); if (p != NULL) *p = '\0'; *************** gnats (fp) *** 229,233 **** log_msg (LOG_INFO, 0, "pending does not exist, creating..."); #ifdef S_IRWXU ! mode = S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP; #else mode = 0750; --- 229,233 ---- log_msg (LOG_INFO, 0, "pending does not exist, creating..."); #ifdef S_IRWXU ! mode = S_IRWXU | S_IRGRP | S_IXGRP; #else mode = 0750; *************** gnats (fp) *** 240,244 **** { #ifdef S_IRWXU ! mode = S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP; #else mode = 0750; --- 240,244 ---- { #ifdef S_IRWXU ! mode = S_IRWXU | S_IRGRP | S_IXGRP; #else mode = 0750; *************** check_if_reply (fp) *** 384,392 **** /* Only check for the PR in the subject if it's got CATEGORY/NUMBER. */ ! s = strchr (token, '/'); if (s != NULL) { /* Strip off the colon, leaving the category and the PR number. */ ! s = strrchr (token, ':'); if (s != NULL) *s = '\0'; --- 384,392 ---- /* Only check for the PR in the subject if it's got CATEGORY/NUMBER. */ ! s = (char *) strchr (token, '/'); if (s != NULL) { /* Strip off the colon, leaving the category and the PR number. */ ! s = (char *) strrchr (token, ':'); if (s != NULL) *s = '\0'; *************** reply_to_submitter (responsible) *** 410,414 **** { FILE *msg; ! char *subject; block_signals (); --- 410,414 ---- { FILE *msg; ! char *subject, *reply_to; block_signals (); *************** reply_to_submitter (responsible) *** 418,422 **** punt (1, "%s: cannot open mail agent.", program_name); ! fprintf (msg, "To: %s", header_value (FROM)); fprintf (msg, "From: %s\n", GNATS_ADDR); subject = header_value (SUBJECT); --- 418,425 ---- punt (1, "%s: cannot open mail agent.", program_name); ! reply_to = header_value (REPLY_TO); ! if (reply_to == NULL) ! reply_to = header_value (FROM); ! fprintf (msg, "To: %s", reply_to); fprintf (msg, "From: %s\n", GNATS_ADDR); subject = header_value (SUBJECT); *************** append_notify (person) *** 478,482 **** while (*p == ' ') p++; ! end = strchr (p, ','); if (end != NULL) { --- 481,485 ---- while (*p == ' ') p++; ! end = (char *) strchr (p, ','); if (end != NULL) { *************** notify_responsible (responsible, subcont *** 557,561 **** msg = open_mail_file (header_value (FROM)); - if (msg == (FILE *)NULL) punt (1, "can not open mail agent. "); --- 560,563 ---- *************** notify_responsible (responsible, subcont *** 571,574 **** --- 573,577 ---- fprintf (msg, "To: %s\n", responsible); + /* fprintf (msg, "Resent-From: gnats\n"); */ if (*notify) { *************** notify_responsible (responsible, subcont *** 578,582 **** subject = header_value (SUBJECT); ! fprintf (msg, "Subject: Re: %s/%s: %s", field_value (CATEGORY), field_value (NUMBER), subject ? subject : "\n"); --- 581,585 ---- subject = header_value (SUBJECT); ! fprintf (msg, "Subject: %s/%s: %s", field_value (CATEGORY), field_value (NUMBER), subject ? subject : "\n"); *************** notify_responsible (responsible, subcont *** 594,598 **** int len = strftime (buf, STR_MAX, "%a %b %d %X %Z %Y", expired); fprintf (msg, ! "\n\tThe contract type is `%s' with %d hours response time.\n", type, rtime); if (len) --- 597,601 ---- int len = strftime (buf, STR_MAX, "%a %b %d %X %Z %Y", expired); fprintf (msg, ! "\n\tThe contract type is `%s' with a response time of %d business hours.\n", type, rtime); if (len) *************** The filename for it is %s.", filename); *** 646,670 **** } - /* Safely append a string. */ - #define APPEND_STRING(from, to, to_ptr, to_len, to_max, l, free_from) \ - { if (from) \ - { \ - (l) = strlen (from); \ - if ((to_len) + (l) > (to_max)) \ - { \ - (to_max) += BUFSIZ; \ - (to) = (char *) xrealloc ((to), (to_max)); \ - (to_ptr) = (to) + (to_len); \ - } \ - memcpy ((to_ptr), (from), (l)); \ - (to_len) += (l); \ - (to_ptr) += (l); \ - if (free_from) free (from); \ - } \ - } - /* Append a reply to an existing report. The entire body of the message is appended, while just the To:, From:, Date:, and Subject: lines from ! the header are included. */ void append_report (infile, filename) --- 649,659 ---- } /* Append a reply to an existing report. The entire body of the message is appended, while just the To:, From:, Date:, and Subject: lines from ! the header are included. We used to send notification of the reply ! to everyone that originally got the notification of the PR itself, ! but that proved unwise. Instead, we send a copy of the reply to ! the person responsible for the PR, and to the person responsible ! for the customer. */ void append_report (infile, filename) *************** append_report (infile, filename) *** 678,686 **** Responsible *responsible; Submitter submitter; - Category category; char *addr; char *cc_buf, *cc; int cc_len, cc_max; pr_file = fopen (filename, "r+"); if (pr_file == NULL) --- 667,685 ---- Responsible *responsible; Submitter submitter; char *addr; char *cc_buf, *cc; + char *p, *q; int cc_len, cc_max; + char *from, *to, *subject, *date; + + /* Save the values we read while in main(). */ + from = (char *) strdup (header_value (FROM)); + to = (char *) strdup (header_value (TO)); + /* A `Subject:' header is optional. */ + if (header_value (SUBJECT)) + subject = (char *) strdup (header_value (SUBJECT)); + date = (char *) strdup (header_value (DATE)); + /* Now read in the PR itself. */ pr_file = fopen (filename, "r+"); if (pr_file == NULL) *************** append_report (infile, filename) *** 696,708 **** buf_len = 0; *b = '\0'; /* Separate this from the rest of the audit trail. */ APPEND_STRING ("\n", buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "%s %s", header_name (FROM), header_value (FROM)); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "%s %s", header_name (TO), header_value (TO)); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "%s %s", header_name (SUBJECT), header_value (SUBJECT)); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "%s %s", header_name (DATE), header_value (DATE)); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); APPEND_STRING ("\n", buf, b, buf_len, buf_max, l, 0); --- 695,708 ---- buf_len = 0; *b = '\0'; + /* Separate this from the rest of the audit trail. */ APPEND_STRING ("\n", buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "From: %s", from); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "To: %s", to); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "Subject: %s", subject); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); ! sprintf (line, "Date: %s", date); APPEND_STRING (line, buf, b, buf_len, buf_max, l, 0); APPEND_STRING ("\n", buf, b, buf_len, buf_max, l, 0); *************** append_report (infile, filename) *** 725,730 **** create_report (filename, 1); ! responsible = get_responsible_address (field_value (RESPONSIBLE)); ! find_categories (&category, field_value (CATEGORY)); find_submitter (&submitter, field_value (SUBMITTER)); --- 725,735 ---- create_report (filename, 1); ! /* If it's "foo (Foo Bar)", chop off the rest. */ ! p = field_value (RESPONSIBLE); ! q = (char *) strchr (p, ' '); ! if (q != NULL) ! *q = '\0'; ! ! responsible = get_responsible_address (p); find_submitter (&submitter, field_value (SUBMITTER)); *************** append_report (infile, filename) *** 741,755 **** addr = append_notify (submitter.contact); APPEND_STRING (addr, cc_buf, cc, cc_len, cc_max, l, 1); - addr = append_notify (submitter.notify); - APPEND_STRING (addr, cc_buf, cc, cc_len, cc_max, l, 1); - addr = append_notify (category.notify); - APPEND_STRING (addr, cc_buf, cc, cc_len, cc_max, l, 1); cc_buf[cc_len] = '\0'; fprintf (msg, "Cc: %s\n", cc_buf); free (cc_buf); ! fprintf (msg, "From: %s", header_value (FROM)); ! fprintf (msg, "Subject: %s", header_value (SUBJECT)); ! fprintf (msg, "Reply-To: %s", header_value (FROM)); fprintf (msg, "\n"); --- 746,757 ---- addr = append_notify (submitter.contact); APPEND_STRING (addr, cc_buf, cc, cc_len, cc_max, l, 1); cc_buf[cc_len] = '\0'; fprintf (msg, "Cc: %s\n", cc_buf); free (cc_buf); ! fprintf (msg, "From: %s", from); ! /* fprintf (msg, "Resent-From: gnats\n"); */ ! fprintf (msg, "Subject: %s", subject); ! fprintf (msg, "Reply-To: %s", from); fprintf (msg, "\n"); *************** append_report (infile, filename) *** 764,767 **** --- 766,773 ---- } free (buf); + free (from); + free (to); + free (subject); + free (date); close_mail_file (msg); diff -c2pr gnats-3.00/gnats/files.c gnats-3.01/gnats/files.c *** gnats-3.00/gnats/files.c Mon Mar 8 18:35:36 1993 --- gnats-3.01/gnats/files.c Wed Apr 14 13:30:59 1993 *************** get_responsible_address (person) *** 214,217 **** --- 214,218 ---- Responsible* responsible = NULL; struct passwd *passwd; + char *p; /* First check the passwd file; if there's no entry, try the *************** get_responsible_address (person) *** 224,227 **** --- 225,234 ---- responsible = (Responsible*) xmalloc (sizeof (Responsible)); responsible->key = responsible->alias = (char *) strdup (person); + + /* Some passwd entries have commas for finger programs that + understand office phone numbers, etc. Chop 'em off. */ + p = (char *) strchr (passwd->pw_gecos, ','); + if (p != NULL) + *p = '\0'; responsible->fullname = (char *) strdup (passwd->pw_gecos); } *************** init_responsibles () *** 238,242 **** Responsible *r, *r_start = NULL, *r_end = NULL; - int err; FILE *fp; --- 245,248 ---- *************** init_responsibles () *** 253,257 **** if (line[0] != '#' && line[0] != ' ' && line[0] != '\n') { ! err = next_record (line, array); r = (Responsible *) xmalloc (sizeof (Responsible)); r->key = array[0]; --- 259,263 ---- if (line[0] != '#' && line[0] != ' ' && line[0] != '\n') { ! next_record (line, array); r = (Responsible *) xmalloc (sizeof (Responsible)); r->key = array[0]; *************** next_record (line, ptr) *** 311,314 **** } ! return (err); } --- 317,320 ---- } ! return err; } *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/gen-index.c Wed Apr 14 13:31:00 1993 *************** *** 0 **** --- 1,340 ---- + /* Generate an index file for an existing GNATS database. + Copyright (C) 1993 Free Software Foundation, Inc. + Contributed by Brendan Kehoe (brendan@cygnus.com). + + This file is part of GNU GNATS. + + GNU GNATS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU GNATS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU GNATS; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + #include + #include + #include + + #ifdef HAVE_UNISTD_H + #include + #endif + + #include "gnats.h" + #include "globals.h" + #include "gnats-dirs.h" + #include "pathmax.h" + + /* The name this program was run with. */ + char *program_name; + + /* Where the results of query-pr should go. */ + FILE *outfile = stdout; + + /* If TRUE, we should sort the index list by number. */ + int sort_numerical = FALSE; + + /* Defined in version.c. */ + extern char *version_string; + + struct option long_options[] = + { + {"directory", 1, NULL, 'd'}, + {"outfile", 1, NULL, 'o'}, + {"numerical", 0, NULL, 'n'}, + {"help", 0, NULL, 'h'}, + {"version", 0, NULL, 'V'}, + {NULL, 0, NULL, 0} + }; + + typedef struct category_list + { + Category *c; + struct category_list *next; + } Categories; + + typedef struct entry + { + unsigned int number; + char *string; + } Entry; + + #define MAX_ENTRIES 1024 + Entry *entries; + int max_entries = MAX_ENTRIES, num_entries = 0; + + void usage (), version (); + + unsigned int + entry_cmp (e1, e2) + Entry *e1, *e2; + { + return e1->number - e2->number; + } + + /* For a given category C, go into its directory and either emit an + index entry for each file in it, or swallow its index entry so we + can sort it later. */ + void + do_category (c) + char *c; + { + register DIR *d; + register struct dirent *next; + FILE *fp; + int len = strlen (gnats_root) + 1 + strlen (c) + 2; + /* Allocate for a PR with 8 digits. */ + char *path = (char *) xmalloc (len + 9); + char *p; + char line[STR_MAX]; + + errno = 0; + if (chdir (gnats_root) < 0) + { + fprintf (stderr, "%s: can't read the database directory %s: %s\n", + program_name, gnats_root, strerror (errno)); + exit (1); + } + + if (c == NULL || *c == '\0') + return; + + errno = 0; + d = opendir (c); + if (! d) + { + fprintf (stderr, "can't open the category directory %s/%s: %s\n", + gnats_root, c, strerror (errno)); + return; + } + + sprintf (path, "%s/%s/", gnats_root, c); + + /* Process each file in the directory; ignore files that have periods + in their names; either they're the . and .. dirs, or they're a + lock file (1234.lock). */ + while (next = readdir (d)) + if (strchr (next->d_name, '.') == NULL) + { + p = path + len - 1; + strcat (p, next->d_name); + + fp = fopen (path, "r"); + if (fp == (FILE *) NULL) + { + fprintf (stderr, "%s: couldn't read pr %s: %s\n", + program_name, path, strerror (errno)); + + *p = '\0'; + continue; + } + + *p = '\0'; + read_header (fp); + read_pr (fp, 1); + fclose (fp); + + create_index_entry (line); + + if (sort_numerical == TRUE) + { + if (num_entries == max_entries - 1) + { + max_entries += MAX_ENTRIES; + entries = (Entry *) xrealloc ((char *) entries, + max_entries * sizeof (Entry)); + } + + entries[num_entries].number = atoi (field_value (NUMBER)); + entries[num_entries].string = (char *) strdup (line); + num_entries++; + } + else + fprintf (outfile, "%s", line); + } + + free (path); + } + + /* Get the next entry in the categories file. */ + Categories * + next_category (fp) + FILE *fp; + { + char *start, *end, *b; + char *buf = (char *) xmalloc (STR_MAX); + Categories *p = (Categories *) xmalloc (sizeof (Categories)); + Category *c; + + c = p->c = (Category *) xmalloc (sizeof (Category)); + p->next = NULL; + + b = buf; + do + if (fgets (buf, STR_MAX, fp) == NULL) + goto no_entry; + while (buf[0] == '#' || buf[0] == '\n' || buf[0] == ' '); + + start = b; + end = strchr (start, ':'); + if (end == NULL) + goto no_entry; + *end = '\0'; + c->key = start; + + start = end + 1; + end = strchr (start, ':'); + if (end == NULL) + goto no_entry; + *end = '\0'; + c->fullname = start; + + start = end + 1; + end = strchr (start, ':'); + if (end == NULL) + goto no_entry; + *end = '\0'; + c->person = start; + + start = end + 1; + end = strchr (start, '\n'); + if (end == NULL) + goto no_entry; + *end = '\0'; + c->notify = start; + + return p; + + no_entry: + free (p->c); + free (p); + free (buf); + return (Categories *) NULL; + } + + /* Return a linked list of categories. */ + Categories * + get_categories () + { + register char *p, *q; + char *path = (char *) xmalloc (PATH_MAX); + FILE *fp; + Categories *cat_list = (Categories *) NULL; + Categories *cat_list_end = (Categories *) NULL; + Categories *c; + + sprintf (path, "%s/gnats-adm/%s", gnats_root, CATEGORIES); + + errno = 0; + fp = fopen (path, "r"); + if (fp == (FILE *) NULL) + { + fprintf (stderr, "%s: couldn't read the categories file %s: %s\n", + program_name, path, strerror (errno)); + exit (1); + } + + while ((c = next_category (fp))) + { + if (cat_list == NULL) + cat_list = cat_list_end = c; + else + { + cat_list_end->next = c; + cat_list_end = c; + } + + c->next = NULL; + } + + fclose (fp); + + return cat_list; + } + + void + main (argc, argv) + int argc; + char **argv; + { + int optc, i; + Categories *clist, *c; + + program_name = (char *) basename (argv[0]); + + while ((optc = getopt_long (argc, argv, "o:hd:nV", + long_options, (int *) 0)) != EOF) + { + switch (optc) + { + case 'd': + gnats_root = optarg; + break; + + case 'o': + outfile = fopen (optarg, "w+"); + if (outfile == (FILE *) NULL) + { + fprintf (stderr, "%s: can't write to %s:", program_name, + optarg, strerror (errno)); + exit (1); + } + break; + + case 'n': + sort_numerical = TRUE; + break; + + case 'V': + version (); + exit (0); + + case 'h': + /* Fall through. */ + + default: + usage (); + } + } + + init_gnats (); + + if (sort_numerical) + entries = (Entry *) xmalloc (max_entries * sizeof (Entry)); + + clist = get_categories (); + + for (c = clist ; c ; c = c->next) + do_category (c->c->key); + + if (sort_numerical) + { + qsort (entries, num_entries, sizeof (Entry), entry_cmp); + for (i = 0; i < num_entries; i++) + fprintf (outfile, "%s", entries[i].string); + } + + exit (0); + } + + void + usage () + { + fprintf (stderr, "\ + Usage: %s [-hnv] [-d directory] [-o outfile] [--directory=directory]\n\ + [--outfile=filename] [--numerical] [--version] [--help]", + program_name); + exit (1); + } + + void + version () + { + printf ("gen-index %s\n", version_string); + } diff -c2pr gnats-3.00/gnats/globals.h gnats-3.01/gnats/globals.h *** gnats-3.00/gnats/globals.h Mon Mar 8 18:35:39 1993 --- gnats-3.01/gnats/globals.h Wed Apr 14 13:31:02 1993 *************** extern int log_level; *** 107,110 **** --- 107,128 ---- /* Default size of char arrays. */ #define STR_MAX 255 + + /* Safely append a string. */ + #define APPEND_STRING(from, to, to_ptr, to_len, to_max, l, free_from) \ + { if (from) \ + { \ + (l) = strlen (from); \ + if ((to_len) + (l) > (to_max)) \ + { \ + (to_max) += BUFSIZ; \ + (to) = (char *) xrealloc ((to), (to_max)); \ + (to_ptr) = (to) + (to_len); \ + } \ + memcpy ((to_ptr), (from), (l)); \ + (to_len) += (l); \ + (to_ptr) += (l); \ + if (free_from) free (from); \ + } \ + } /* For struct tm. */ *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/gnats-dirs.h Wed Apr 14 13:31:12 1993 *************** *** 0 **** --- 1,42 ---- + /* Things needed to read and use directories. + Copyright (C) 1993 Free Software Foundation, Inc. + + This file is part of GNU GNATS. + + GNU GNATS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU GNATS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU GNATS; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + #if defined(DIRENT) || defined(_POSIX_VERSION) + #include + #define NLENGTH(direct) (strlen((direct)->d_name)) + #else /* not (DIRENT or _POSIX_VERSION) */ + #define dirent direct + #define NLENGTH(direct) ((direct)->d_namlen) + #ifdef SYSNDIR + #include + #endif /* SYSNDIR */ + #ifdef SYSDIR + #include + #endif /* SYSDIR */ + #ifdef NDIR + #include + #endif /* NDIR */ + #endif /* DIRENT or _POSIX_VERSION */ + + #ifdef VOID_CLOSEDIR + /* Fake a return value. */ + #define CLOSEDIR(d) (closedir (d), 0) + #else + #define CLOSEDIR(d) closedir (d) + #endif diff -c2pr gnats-3.00/gnats/gnats-el.in gnats-3.01/gnats/gnats-el.in *** gnats-3.00/gnats/gnats-el.in Mon Mar 8 18:35:53 1993 --- gnats-3.01/gnats/gnats-el.in Wed Apr 14 13:30:46 1993 *************** *** 188,192 **** (if (eq major-mode 'gnats-mode) (setq write-file-hooks ! (append write-file-hooks 'gnats-mode-write-file-hook))))) result)) --- 188,192 ---- (if (eq major-mode 'gnats-mode) (setq write-file-hooks ! (append write-file-hooks (list 'gnats-mode-write-file-hook)))))) result)) *************** Customize the variable `gnats-mailer' to *** 318,322 **** (progn (setq to (format "%s, %s" (gnats-get-reply-to) to)) (if (not (equal user responsible)) ! (setq cc (format "%s, %s" responsible cc)))))) (cond ((eq gnats-mailer 'mail) (mail-other-window nil to subject nil cc buffer)) --- 318,324 ---- (progn (setq to (format "%s, %s" (gnats-get-reply-to) to)) (if (not (equal user responsible)) ! (if (null cc) ! (setq cc responsible) ! (setq cc (format "%s, %s" responsible cc))))))) (cond ((eq gnats-mailer 'mail) (mail-other-window nil to subject nil cc buffer)) *************** Customize the variable `gnats-mailer' to *** 359,369 **** (goto-char (point-min)) (cond ((eq gnats-mailer 'mail) ! (setq from (mail-fetch-field "from" nil t) ! reply-to (mail-fetch-field "reply-to" nil t))) ((eq gnats-mailer 'mhe) (mh-find-path) (setq from (mh-get-field "From:") reply-to (mh-get-field "Reply-To:"))))) ! (if (string= reply-to "") from reply-to))) --- 361,372 ---- (goto-char (point-min)) (cond ((eq gnats-mailer 'mail) ! (setq from (mail-fetch-field "from" nil nil) ! reply-to (mail-fetch-field "reply-to" nil nil))) ((eq gnats-mailer 'mhe) (mh-find-path) (setq from (mh-get-field "From:") reply-to (mh-get-field "Reply-To:"))))) ! ; mail-fetch-field returns it as nil, mh-get-field returns "" ! (if (or (null reply-to) (string= reply-to "")) from reply-to))) *************** is supposed to type in the reason for th *** 535,540 **** (gnats-forward-eofield) (setq start (point-marker)) ! (insert (format "\n\n%s-Changed-From-To: %s-%s" what ! (gnats-nth-word old-value) (gnats-nth-word new-value))) (insert (format "\n%s-Changed-By: %s" what (user-login-name))) (insert (format "\n%s-Changed-When: %s" what (current-time-string))) --- 538,546 ---- (gnats-forward-eofield) (setq start (point-marker)) ! (if (string= what "Responsible") ! (insert (format "\n\n%s-Changed-From-To: %s->%s" what ! (gnats-nth-word old-value) (gnats-nth-word new-value))) ! (insert (format "\n\n%s-Changed-From-To: %s-%s" what ! (gnats-nth-word old-value) (gnats-nth-word new-value)))) (insert (format "\n%s-Changed-By: %s" what (user-login-name))) (insert (format "\n%s-Changed-When: %s" what (current-time-string))) *************** prompt. Returns the new value." *** 607,613 **** ;; "Search for a enum- or string-field `field'. ! Returns `nil', if field is not found, `t', if the value of the field is a ! comment or empty and otherwise the field value. ! If elem is an integer, then the elem-th word of the field is returned. Point is left at the beginning of the whole found field" ;; --- 613,617 ---- ;; "Search for a enum- or string-field `field'. ! If ELEM is an integer, then the ELEM-th word of the field is returned. Point is left at the beginning of the whole found field" ;; *************** Point is left at the beginning of the wh *** 623,628 **** (buffer-substring (match-beginning 0) (match-end 0)) elem)) ! t)) ! nil)) (defun gnats-patch-exec-path () --- 627,632 ---- (buffer-substring (match-beginning 0) (match-end 0)) elem)) ! "")) ! "")) (defun gnats-patch-exec-path () *************** has a generate-new-buffer-name function, *** 1002,1006 **** (insert-file (format "%s/%s" GNATS-ROOT pr)) (setq buffer-read-only t)) ! (message "edit-pr: PR %s does not exist." pr))))) (defun edit-pr (&optional id) --- 1006,1010 ---- (insert-file (format "%s/%s" GNATS-ROOT pr)) (setq buffer-read-only t)) ! (message "view-pr: PR %s does not exist." pr))))) (defun edit-pr (&optional id) *************** has a generate-new-buffer-name function, *** 1043,1051 **** (goto-char (point-min)) (if (re-search-forward "locked by \\([^\n]+\\)" nil t) ! (setq user (buffer-substring (match-beginning 1) ! (match-end 1))) ! (setq user "another user.")) ! (message ! (format "edit-pr: PR %s is locked by %s" pr user)) (kill-buffer gnats-pr-errors)))))) (message "edit-pr: PR %s does not exist." pr))))) --- 1047,1056 ---- (goto-char (point-min)) (if (re-search-forward "locked by \\([^\n]+\\)" nil t) ! (setq msg ! (format "edit-pr: PR %s is locked by %s" ! pr (buffer-substring (match-beginning 1) ! (match-end 1)))) ! (setq msg "edit-pr: GNATS is currently locked, try later.")) ! (message msg) (kill-buffer gnats-pr-errors)))))) (message "edit-pr: PR %s does not exist." pr))))) *************** has a generate-new-buffer-name function, *** 1054,1062 **** "Run query-pr, with user-specified args, and collect output in a buffer. While query-pr runs asynchronously, you can use the \\[next-error] command ! to find the text that grep hits refer to." (interactive "sRun query-pr (with args): ") (require 'compile) ! (compile1 (concat "query-pr " options ) ! "No more query-pr hits" "query-pr")) ;;;; end of gnats.el --- 1059,1072 ---- "Run query-pr, with user-specified args, and collect output in a buffer. While query-pr runs asynchronously, you can use the \\[next-error] command ! to find the text that the hits refer to." (interactive "sRun query-pr (with args): ") (require 'compile) ! ; emacs 19 uses compile-internal, emacs 18 uses compile1 ! (if (fboundp 'compile-internal) ! (compile-internal ! (concat "query-pr " options " -P") ! "No more query-pr hits" "query-pr") ! (compile1 (concat "query-pr " options " -P") ! "No more query-pr hits" "query-pr"))) ;;;; end of gnats.el diff -c2pr gnats-3.00/gnats/gnats-fc.eps gnats-3.01/gnats/gnats-fc.eps *** gnats-3.00/gnats/gnats-fc.eps Mon Mar 8 18:35:22 1993 --- gnats-3.01/gnats/gnats-fc.eps Wed Apr 14 13:30:45 1993 *************** *** 1,5 **** %! %%BoundingBox: 178 313 541 712 ! %%Title: gnats2.99-flowchart %%CreationDate: Mon Mar 8 16:01:23 1993 %%Creator: Tgif-2.12 by William Chia-Wei Cheng (william@cs.UCLA.edu) --- 1,5 ---- %! %%BoundingBox: 178 313 541 712 ! %%Title: gnats3.01-flowchart %%CreationDate: Mon Mar 8 16:01:23 1993 %%Creator: Tgif-2.12 by William Chia-Wei Cheng (william@cs.UCLA.edu) diff -c2pr gnats-3.00/gnats/gnats.info gnats-3.01/gnats/gnats.info *** gnats-3.00/gnats/gnats.info Mon Mar 8 18:37:23 1993 --- gnats-3.01/gnats/gnats.info Wed Apr 14 13:32:00 1993 *************** *** 1,4 **** This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats.texi. START-INFO-DIR-ENTRY --- 1,4 ---- This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats/gnats.texi. START-INFO-DIR-ENTRY *************** versions. *** 23,63 ****  Indirect: ! gnats.info-1: 831 ! gnats.info-2: 49024  Tag Table: (Indirect) ! Node: Top831 ! Node: Introduction3560 ! Node: paradigm4776 ! Node: data flow8057 ! Node: flowchart13493 ! Node: states16239 ! Node: fields17838 ! Node: Mail Header fields18007 ! Node: Problem Report fields18816 ! Node: Configuring and installing25884 ! Node: Configuring37670 ! Node: prefix38092 ! Node: objdir39502 ! Node: other flags40089 ! Node: networks40756 ! Node: config.h42293 ! Node: Admin Files44212 ! Node: categories44785 ! Node: responsible47822 ! Node: submitters49024 ! Node: index file51551 ! Node: current52100 ! Node: Usage52352 ! Node: Querying54968 ! Node: invoking query-pr55721 ! Node: example queries59030 ! Node: Editing60148 ! Node: edit-pr in Emacs60747 ! Node: edit-pr from the shell63468 ! Node: Management65010 ! Node: Configuring send-pr68822 ! Node: Index69631  End Tag Table --- 23,63 ----  Indirect: ! gnats.info-1: 837 ! gnats.info-2: 50117  Tag Table: (Indirect) ! Node: Top837 ! Node: Introduction3566 ! Node: paradigm4782 ! Node: data flow8063 ! Node: flowchart13659 ! Node: states16405 ! Node: fields18004 ! Node: Mail Header fields18173 ! Node: Problem Report fields18982 ! Node: Configuring and installing26066 ! Node: Configuring38231 ! Node: prefix38653 ! Node: objdir40067 ! Node: other flags40658 ! Node: networks41325 ! Node: config.h42861 ! Node: Admin Files45305 ! Node: categories45878 ! Node: responsible48915 ! Node: submitters50117 ! Node: index file52644 ! Node: current53193 ! Node: Usage53445 ! Node: Querying56510 ! Node: invoking query-pr57263 ! Node: example queries61246 ! Node: Editing62364 ! Node: edit-pr in Emacs62963 ! Node: edit-pr from the shell65706 ! Node: Management67389 ! Node: Configuring send-pr72501 ! Node: Index73310  End Tag Table diff -c2pr gnats-3.00/gnats/gnats.info-1 gnats-3.01/gnats/gnats.info-1 *** gnats-3.00/gnats/gnats.info-1 Mon Mar 8 18:37:23 1993 --- gnats-3.01/gnats/gnats.info-1 Wed Apr 14 13:32:00 1993 *************** *** 1,4 **** This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats.texi. START-INFO-DIR-ENTRY --- 1,4 ---- This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats/gnats.texi. START-INFO-DIR-ENTRY *************** of Problem Reports: states. *** 74,78 **** {ucbvax|mit-eddie|uunet}!prep.ai.mit.edu!bug-gnats ! This manual documents the 3.00 release of `GNATS'. * Menu: --- 74,78 ---- {ucbvax|mit-eddie|uunet}!prep.ai.mit.edu!bug-gnats ! This manual documents the 3.01 release of `GNATS'. * Menu: *************** and id-number in the Subject line of the *** 244,247 **** --- 244,250 ---- This message is automatically appended to the Problem Report in the `>Audit-Trail:'. Messages are recorded there in the order received. + If the the PR in question is being edited when a reply comes in, that + message is placed in the queue to be appended to the PR whenever + `queue-pr' is run again. In order to maintain consistency, any large code samples or test *************** receives it: *** 586,591 **** sub-fields: ! `State-Changed-From-To: OLDSTATE-NEWSTATE' ! `Responsible-Changed-From-To: OLDRESP-NEWRESP' ENUMERATED field containing the values the state or responsible was changed from and to. --- 589,594 ---- sub-fields: ! `State-Changed--: -' ! `Responsible-Changed--: -' ENUMERATED field containing the values the state or responsible was changed from and to. *************** to make a new account for `gnats', to al *** 624,631 **** 1. *First, unpack your distribution*. Whether the distribution you receive is on a tape or from the Net, ! all the sources reside in a directory called `gnats-3.00' when unpacked. We will call this the "top level" of the "source directory", or "srcdir". The sources for the `GNATS' tools are in ! the subdirectory `gnats-3.00/gnats/*'. Lists of files included in the distribution are in each directory --- 627,634 ---- 1. *First, unpack your distribution*. Whether the distribution you receive is on a tape or from the Net, ! all the sources reside in a directory called `gnats-3.01' when unpacked. We will call this the "top level" of the "source directory", or "srcdir". The sources for the `GNATS' tools are in ! the subdirectory `gnats-3.01/gnats/*'. Lists of files included in the distribution are in each directory *************** to make a new account for `gnats', to al *** 634,639 **** 2. *From the top level of the source directory, edit `gnats/Makefile.in'*. ! In the file `gnats-3.00/gnats/Makefile.in', set the following ! variables: `GNATS_ROOT' --- 637,642 ---- 2. *From the top level of the source directory, edit `gnats/Makefile.in'*. ! In the file `gnats-3.01/gnats/Makefile.in', set the following ! variables (*do not* edit any other `Makefile' in the distribution): `GNATS_ROOT' *************** to make a new account for `gnats', to al *** 666,672 **** release, or just leave it blank to set no default. This is the only `Makefile' you should edit in this distribution. ! 3. *Edit the file `gnats-3.00/gnats/config.h'*. This file contains variables which establish some behavior traits of `GNATS'. *Note The `config.h' file: config.h. --- 669,680 ---- release, or just leave it blank to set no default. + `DEFAULT_ORGANIZATION' + Used by your local `send-pr' as a default value for the + `>Organization:' field. Supply the name of your organization + here. + This is the only `Makefile' you should edit in this distribution. ! 3. *Edit the file `gnats-3.01/gnats/config.h'*. This file contains variables which establish some behavior traits of `GNATS'. *Note The `config.h' file: config.h. *************** to make a new account for `gnats', to al *** 674,686 **** 4. *Run `configure' at the top level*. You can nearly always run `configure' from the top level of the ! source directory, `gnats-3.00', with the command ! ./configure HOST ! (where HOST is your host) and the "Right Thing" will happen: ! `GNATS' will be configured in the same directory you unpacked it ! in; when built, it will be able to run on the machine you're ! building it on; and when installed, files which should be public ! will be installed in `/usr/local'. You may wish to build `GNATS' in a different directory from the --- 682,696 ---- 4. *Run `configure' at the top level*. You can nearly always run `configure' from the top level of the ! source directory, `gnats-3.01', with the command ! ./configure HOSTTYPE ! (where HOSTTYPE is your host type) and the "Right Thing" will ! happen: `GNATS' will be configured in the same directory you ! unpacked it in; when built, it will be able to run on the machine ! you're building it on; and when installed, files which should be ! public will be installed in `/usr/local'. You may omit HOSTTYPE on ! most platforms; `configure' has magical ways of finding out what ! kind of machine you're on. You may wish to build `GNATS' in a different directory from the *************** to make a new account for `gnats', to al *** 798,802 **** where GNATS_ROOT is the directory `GNATS' resides in, which you ! specified in the file `gnats-3.00/gnats/Makefile.in'. This configuration will archive mail in the file `GNATS_ROOT/bug.log', and also feed it to the program `queue-pr'. (Remember, `bug.log' --- 808,812 ---- where GNATS_ROOT is the directory `GNATS' resides in, which you ! specified in the file `gnats-3.01/gnats/Makefile.in'. This configuration will archive mail in the file `GNATS_ROOT/bug.log', and also feed it to the program `queue-pr'. (Remember, `bug.log' *************** to make a new account for `gnats', to al *** 823,827 **** 18. *Run `GNATS_ROOT/gnats-bin/mkcat'*. ! `mkdist' sets up the subdirectories of GNATS_ROOT which will contain submitted Problem Reports. Each subdirectory is named for the category its bugs will belong to; for instance, all bugs --- 833,837 ---- 18. *Run `GNATS_ROOT/gnats-bin/mkcat'*. ! `mkcat' sets up the subdirectories of GNATS_ROOT which will contain submitted Problem Reports. Each subdirectory is named for the category its bugs will belong to; for instance, all bugs *************** Changing the installation location *** 888,892 **** altered by invoking `configure' with ! ./configure HOST --prefix=INSTALL-DIR where INSTALL-DIR is the alternative installation directory. Nearly --- 898,902 ---- altered by invoking `configure' with ! ./configure HOSTTYPE --prefix=INSTALL-DIR where INSTALL-DIR is the alternative installation directory. Nearly *************** directory", then call `configure' from t *** 936,940 **** mkdir BUILD-DIRECTORY cd BUILD-DIRECTORY ! SRCDIR/configure HOST --srcdir=SRCDIR where SRCDIR is the top level of the directory holding the `GNATS' --- 946,950 ---- mkdir BUILD-DIRECTORY cd BUILD-DIRECTORY ! SRCDIR/configure HOSTTYPE --srcdir=SRCDIR where SRCDIR is the top level of the directory holding the `GNATS' *************** actually cause `configure' to configure *** 959,963 **** The documentation for `configure' is included with this distribution ! in the directory `SRCDIR/gnats-3.00/etc', and is installed when `GNATS' is installed. *Note What `configure' does: (configure)What configure does. --- 969,973 ---- The documentation for `configure' is included with this distribution ! in the directory `SRCDIR/gnats-3.01/etc', and is installed when `GNATS' is installed. *Note What `configure' does: (configure)What configure does. *************** Using `GNATS' over a network *** 972,979 **** `root' privileges on each host you wish to install on. ! 1. *Make sure the directory that in which `GNATS' resides is ! NFS-mounted* to each system that will need access to it, so ! GNATS_ROOT will be the same for each host. (This can be done with ! symbolic links as well.) 2. *Either NFS-mount your "source" and "build directories"*, or make --- 982,989 ---- `root' privileges on each host you wish to install on. ! 1. *Make sure the directory in which `GNATS' resides is NFS-mounted* ! to each system that will need access to it, so GNATS_ROOT will be ! the same for each host. (This can be done with symbolic links as ! well.) 2. *Either NFS-mount your "source" and "build directories"*, or make *************** Using `GNATS' over a network *** 983,987 **** 3. *For each host, do the following:* ! `configure HOST (*for the new HOST type*)' `make all GNATS=all-tools' `su root *on the new host*' --- 993,997 ---- 3. *For each host, do the following:* ! `configure HOSTTYPE (*for the new HOST type*)' `make all GNATS=all-tools' `su root *on the new host*' *************** The `config.h' file *** 1020,1024 **** =================== ! The file `gnats-3.00/gnats/config.h' is used as a header file where you may define certain local conventions you wish to implement or suppress. The only local conventions switchable by this file are the --- 1030,1034 ---- =================== ! The file `gnats-3.01/gnats/config.h' is used as a header file where you may define certain local conventions you wish to implement or suppress. The only local conventions switchable by this file are the *************** following: *** 1068,1071 **** --- 1078,1092 ---- `net' or `unknown'. + * Define the following: + #define KEEP_RECEIVED_HEADERS TRUE + + to specify whether `GNATS' should keep the `Received:' headers for + mail messages. Every email message has one or more `Received:' + headers to tell you how a message got from the sender to the + recipient. Define this to be TRUE if you want `GNATS' to preserve + all of those `Received:' headers. If you tend not to use the + information, define it to be FALSE so `GNATS' will only keep the + first `Received:' header. +  File: gnats.info, Node: Admin Files, Prev: config.h, Up: Configuring and installing diff -c2pr gnats-3.00/gnats/gnats.info-2 gnats-3.01/gnats/gnats.info-2 *** gnats-3.00/gnats/gnats.info-2 Mon Mar 8 18:37:23 1993 --- gnats-3.01/gnats/gnats.info-2 Wed Apr 14 13:32:00 1993 *************** *** 1,4 **** This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats.texi. START-INFO-DIR-ENTRY --- 1,4 ---- This is Info file gnats.info, produced by Makeinfo-1.52 from the input ! file gnats/gnats.texi. START-INFO-DIR-ENTRY *************** Invoking the `GNATS' tools *** 131,136 **** `mkcat' ! Used by the `GNATS' administrator when creating new categories. `mkdist' Used by the `GNATS' administrator when creating a distribution of --- 131,141 ---- `mkcat' ! Used by the `GNATS' administrator when creating new categories ! (*note The `categories' file: categories.). + `rmcat' + Does the opposite of `mkcat', i.e. removes categories (*note + Managing `GNATS': Management.). + `mkdist' Used by the `GNATS' administrator when creating a distribution of *************** Invoking the `GNATS' tools *** 138,141 **** --- 143,152 ---- Configuring send-pr for the outside world: Configuring send-pr.). + `gen-index' + Used by the `GNATS' administrator if the index file becomes + corrupted, or if an up-to-date copy of it is wanted for some + reason. `gen-index' builds an index and prints it to the standard + output (*note Managing `GNATS': Management.). + `queue-pr' Handles incoming bugs, first through a mail alias by queueing *************** Invoking the `GNATS' tools *** 164,172 **** Of these, only `send-pr', `query-pr', and `edit-pr' are installed in a public directory. The database itself is write-protected solely to ! maintain data consistency. `mkcat' and `mkdist' are designed for use ! by a database or system administrator, while `at-pr', `pr-edit', ! `pr-addr', `file-pr', and `queue-pr -q' are completely internal and not ! meant to be called by hand. `queue-pr -r' can be run by hand, but it ! is usually easiest to let it run periodically via `cron'. * Menu: --- 175,184 ---- Of these, only `send-pr', `query-pr', and `edit-pr' are installed in a public directory. The database itself is write-protected solely to ! maintain data consistency. `mkcat', `rmcat', `gen-index' and `mkdist' ! are designed for use by a database or system administrator, while ! `at-pr', `pr-edit', `pr-addr', `file-pr', and `queue-pr -q' are ! completely internal and not meant to be called by hand. `queue-pr -r' ! can be run by hand, but it is usually easiest to let it run ! periodically via `cron'. * Menu: *************** shell or from Emacs. From the shell, si *** 209,214 **** by any search parameters you wish to exercise. From Emacs, type `M-x query-pr', and you will be prompted for search parameters in the ! minibuffer. The usage for `query-pr' is: --- 221,231 ---- by any search parameters you wish to exercise. From Emacs, type `M-x query-pr', and you will be prompted for search parameters in the ! minibuffer. Use ! ! C-x ` *or* ! M-x next-error + to scroll through the matching PRs. + The usage for `query-pr' is: *************** minibuffer. *** 224,227 **** --- 241,246 ---- [-O ORIGINATOR | --originator=ORIGINATOR] [-o OUTFILE | --output=OUTFILE] + [-P | --print-path] + [-x | --skip-closed] [-q | --summary] [-V | --version] [-h | --help ] *************** the options listed may be included in th *** 292,295 **** --- 311,328 ---- Print all output to OUTFILE rather than to the standard output. + `-P' + `--print-path' + Prints the path which `query-pr' used to find the current PR. A + line of the form `DIRECTORY/NUMBER:NUMBER' will be printed before + each PR. You will probably never want to use this option; it is + automatically used from within Emacs to facilitate scrolling + through groups of PRs with `C-x `'. + + `-x' + `--skip-closed' + Omit closed PRs from the search path. This option is ignored if + you are doing a search on the `>State:' field (using `-s' or + `--state=STATE'). + `-q' `--summary' *************** wish to edit. *** 372,379 **** bindings provided. These are: ! `C-c C-c' `gnats-submit-pr' ! Submit the PR currently being edited. Do this when you're finished ! editing; if you simply kill the buffer, your changes will be lost. `C-c C-e' --- 405,413 ---- bindings provided. These are: ! `C-c C-s' `gnats-submit-pr' ! Save and submit the PR currently being edited. Do this when you're ! finished editing; if you simply kill the buffer, your changes will ! be lost. `C-c C-e' *************** bindings provided. These are: *** 400,404 **** `Audit-Trail' section of the PR as follows: ! `Responsible-Changed-From-To': Records the value change. `Responsible-Changed-By': Your name here. `Responsible-Changed-When': Records the current date. --- 434,438 ---- `Audit-Trail' section of the PR as follows: ! `Responsible-Changed--': Records the value change. `Responsible-Changed-By': Your name here. `Responsible-Changed-When': Records the current date. *************** bindings provided. These are: *** 415,419 **** the PR as follows: ! `State-Changed-From-To': Records the value change. `State-Changed-By': Your name here. `State-Changed-When': Records the current date. --- 449,453 ---- the PR as follows: ! `State-Changed--': Records the value change. `State-Changed-By': Your name here. `State-Changed-When': Records the current date. *************** You must first determine which PR you wa *** 459,467 **** `edit-pr' first examines the value you specify for GNATS-ID and locks the corresponding PR if it is not already locked. This is to ! prevent you from editing a PR at the same time as another user. ! `edit-pr' then calls the editor specified in your environment variable ! `EDITOR' on a temporary copy of that PR. (If you don't have the ! variable `EDITOR' defined in your environment, the default editor `vi' ! is used.) Edit the PR, changing any relevant fields or adding to existing --- 493,504 ---- `edit-pr' first examines the value you specify for GNATS-ID and locks the corresponding PR if it is not already locked. This is to ! prevent you from editing a PR at the same time as another user. If the ! PR you wish to edit is already in the process of being edited, ! `edit-pr' will tell you the name of the person who has it locked. ! ! `edit-pr' then calls the editor specified in your environment ! variable `EDITOR' on a temporary copy of that PR. (If you don't have ! the variable `EDITOR' defined in your environment, the default editor ! `vi' is used.) Edit the PR, changing any relevant fields or adding to existing *************** periodically: *** 518,521 **** --- 555,570 ---- information and redistribute it. + *removing categories* + To remove a category, you need to: + + * make sure the relevant subdirectory is empty (in other words, + make sure no PRs exist for the category you wish to remove); + + * remove the cateogry listing from the `categories' file; + + * invoke `rmcat CATEGORY' to remove CATEGORY (any number of + categories may be specified on the command line to `rmcat', so + long as they abide by the above constraints). + *building a distribution of `send-pr'* After you edit your `categories' file to reflect the nature of *************** periodically: *** 530,533 **** --- 579,611 ---- `send-pr' for the outside world: Configuring send-pr. + *building a new index* + If for some reason the `index' becomes corrupted, or if you wish to + generate a new one for some reason, use the program `gen-index' as + follows. + + gen-index [-n | --numeric] [-d DIR | --directory=DIR] + [-o FILE | --outfile=FILE] [-h | --help] + + With no options, `gen-index' generates an index that is ordered the + same as the order of the categories as they appear in the + `categories' file. The options are: + + `-n' + `--numeric' + Sort index entries numerically. + + `-d DIR' + `--directory=DIR' + Use DIR as the root directory. + + `-o FILE' + `--outfile=FILE' + Place output in the file FILE rather than sending it to + standard output. + + `-h' + `--help' + Print the usage for `gen-index'. + *removing file locks from failed editing sessions* `edit-pr' "locks" each file while the file is being edited. This *************** Index *** 597,608 **** * at-pr: data flow. * at and cron: Configuring and installing. - * configure: Configuring and installing. * configure: Configuring. * cron and at: Configuring and installing. * DEFAULT_RELEASE: Configuring and installing. * edit-pr: Editing. * edit-pr from the shell: edit-pr from the shell. * edit-pr in Emacs: edit-pr in Emacs. * mkcat: Configuring and installing. * mkdist: Management. * pending directory: data flow. --- 675,689 ---- * at-pr: data flow. * at and cron: Configuring and installing. * configure: Configuring. + * configure: Configuring and installing. * cron and at: Configuring and installing. + * DEFAULT_ORGANIZATION: Configuring and installing. * DEFAULT_RELEASE: Configuring and installing. * edit-pr: Editing. * edit-pr from the shell: edit-pr from the shell. * edit-pr in Emacs: edit-pr in Emacs. + * gen-index: Management. * mkcat: Configuring and installing. + * mkcat: Management. * mkdist: Management. * pending directory: data flow. *************** Index *** 611,614 **** --- 692,696 ---- * queue-pr -q: Configuring and installing. * queue-pr -r via cron: Configuring and installing. + * rmcat: Management. * root priviledges: Configuring and installing. * *analyzed* state: states. *************** Index *** 666,672 **** --- 748,756 ---- * Class field: Problem Report fields. * Confidential field: Problem Report fields. + * DEFAULT_SUBMITTER: config.h. * Description field: Problem Report fields. * Environment field: Problem Report fields. * How-To-Repeat field: Problem Report fields. + * KEEP_RECEIVED_HEADERS: config.h. * NOTIFY: config.h. * Organization field: Problem Report fields. *************** Index *** 674,685 **** * Priority field: Problem Report fields. * Release field: Problem Report fields. * Responsible-Changed-By: in Audit-Trail: Problem Report fields. - * Responsible-Changed-From-To: in Audit-Trail: Problem Report fields. * Responsible-Changed-When: in Audit-Trail: Problem Report fields. * Responsible-Changed-Why: in Audit-Trail: Problem Report fields. * Responsible field: Problem Report fields. * Severity field: Problem Report fields. * State-Changed-By: in Audit-Trail: Problem Report fields. - * State-Changed-From-To: in Audit-Trail: Problem Report fields. * State-Changed-When: in Audit-Trail: Problem Report fields. * State-Changed-Why: in Audit-Trail: Problem Report fields. --- 758,769 ---- * Priority field: Problem Report fields. * Release field: Problem Report fields. + * Responsible-Changed--: in Audit-Trail: Problem Report fields. * Responsible-Changed-By: in Audit-Trail: Problem Report fields. * Responsible-Changed-When: in Audit-Trail: Problem Report fields. * Responsible-Changed-Why: in Audit-Trail: Problem Report fields. * Responsible field: Problem Report fields. * Severity field: Problem Report fields. + * State-Changed--: in Audit-Trail: Problem Report fields. * State-Changed-By: in Audit-Trail: Problem Report fields. * State-Changed-When: in Audit-Trail: Problem Report fields. * State-Changed-Why: in Audit-Trail: Problem Report fields. *************** Index *** 699,702 **** --- 783,787 ---- * bug alias: Configuring and installing. * building a distribution of send-pr: Management. + * building a new index: Management. * changing the build directory: objdir. * changing the installation location: prefix. *************** Index *** 711,715 **** * database paradigm: paradigm. * database rationale: Introduction. - * DEFAULT_SUBMITTER: config.h. * duties for gnats-admin: Management. * editing gnats/config.h: Configuring and installing. --- 796,799 ---- *************** Index *** 741,746 **** * maintenance: paradigm. * managing GNATS: Management. - * networks: Configuring and installing. * networks: networks. * objdir: objdir. * other flags to configure: other flags. --- 825,830 ---- * maintenance: paradigm. * managing GNATS: Management. * networks: networks. + * networks: Configuring and installing. * objdir: objdir. * other flags to configure: other flags. *************** Index *** 758,761 **** --- 842,846 ---- * related mail: data flow. * reminder message: data flow. + * removing categories: Management. * removing file locks from failed editing sessions: Management. * running configure: Configuring and installing. *************** Index *** 788,792 **** * using query-pr: Querying. * utility installation locations: prefix. ! * version 3.00: Top. * visual map of data flow: flowchart. * why GNATS?: paradigm. --- 873,877 ---- * using query-pr: Querying. * utility installation locations: prefix. ! * version 3.01: Top. * visual map of data flow: flowchart. * why GNATS?: paradigm. diff -c2pr gnats-3.00/gnats/gnats.texi gnats-3.01/gnats/gnats.texi *** gnats-3.00/gnats/gnats.texi Mon Mar 8 18:36:17 1993 --- gnats-3.01/gnats/gnats.texi Wed Apr 14 13:31:58 1993 *************** *** 7,11 **** @set NAMELC gnats @c version number ! @set VERSION 3.00 @settitle Bug Management With @value{NAMEUC} --- 7,11 ---- @set NAMELC gnats @c version number ! @set VERSION 3.01 @settitle Bug Management With @value{NAMEUC} *************** Cc: @var{@value{NAMEUC} address} *** 357,361 **** This message is automatically appended to the Problem Report in the @samp{>Audit-Trail:}. Messages are recorded there in the order ! received. @cindex sample code --- 357,363 ---- This message is automatically appended to the Problem Report in the @samp{>Audit-Trail:}. Messages are recorded there in the order ! received. If the the PR in question is being edited when a reply comes ! in, that message is placed in the queue to be appended to the PR ! whenever @code{queue-pr} is run again. @cindex sample code *************** sub-fields: *** 823,830 **** @table @code ! @cindex @samp{State-Changed-From-To:} in @samp{Audit-Trail} ! @cindex @samp{Responsible-Changed-From-To:} in @samp{Audit-Trail} ! @item State-Changed-From-To: @var{oldstate}-@var{newstate} ! @itemx Responsible-Changed-From-To: @var{oldresp}-@var{newresp} @sc{Enumerated} field containing the values the state or responsible was changed from and to. --- 825,832 ---- @table @code ! @cindex @samp{State-Changed--:} in @samp{Audit-Trail} ! @cindex @samp{Responsible-Changed--:} in @samp{Audit-Trail} ! @item State-Changed--: <@var{oldstate}>-<@var{newstate}> ! @itemx Responsible-Changed--: <@var{oldresp}>-<@var{newresp}> @sc{Enumerated} field containing the values the state or responsible was changed from and to. *************** file @file{MANIFEST}. *** 892,896 **** @w{@file{@value{NAMELC}/Makefile.in}}}.@* In the file @w{@file{@value{NAMELC}-@value{VERSION}/@value{NAMELC}/Makefile.in}}, ! set the following variables: @table @code --- 894,899 ---- @w{@file{@value{NAMELC}/Makefile.in}}}.@* In the file @w{@file{@value{NAMELC}-@value{VERSION}/@value{NAMELC}/Makefile.in}}, ! set the following variables (@emph{do not} edit any other ! @file{Makefile} in the distribution): @table @code *************** Used by @code{send-pr} as a default valu *** 927,930 **** --- 930,938 ---- field. Use the name or release number of your most recent release, or just leave it blank to set no default. + + @item DEFAULT_ORGANIZATION + @cindex @code{DEFAULT_ORGANIZATION} + Used by your local @code{send-pr} as a default value for the + @samp{>Organization:} field. Supply the name of your organization here. @end table *************** run @code{configure} from the top level *** 947,959 **** @example ! ./configure @var{host} @end example @noindent ! (where @var{host} is your host) and the ``Right Thing'' will happen: ! @code{@value{NAMEUC}} will be configured in the same directory you ! unpacked it in; when built, it will be able to run on the machine you're ! building it on; and when installed, files which should be public will be ! installed in @file{/usr/local}. You may wish to build @code{@value{NAMEUC}} in a different directory --- 955,969 ---- @example ! ./configure @var{hosttype} @end example @noindent ! (where @var{hosttype} is your host type) and the ``Right Thing'' will ! happen: @code{@value{NAMEUC}} will be configured in the same directory ! you unpacked it in; when built, it will be able to run on the machine ! you're building it on; and when installed, files which should be public ! will be installed in @file{/usr/local}. You may omit @var{hosttype} on ! most platforms; @code{configure} has magical ways of finding out what ! kind of machine you're on. You may wish to build @code{@value{NAMEUC}} in a different directory *************** schematics, see @ref{Introduction, , Int *** 1216,1220 **** @cindex @code{mkcat} @emph{Run @kbd{@var{@value{NAMEUC}_ROOT}/@value{NAMELC}-bin/mkcat}}.@* ! @code{mkdist} sets up the subdirectories of @var{@value{NAMEUC}_ROOT} which will contain submitted Problem Reports. Each subdirectory is named for the category its bugs will belong to; for instance, all bugs --- 1226,1230 ---- @cindex @code{mkcat} @emph{Run @kbd{@var{@value{NAMEUC}_ROOT}/@value{NAMELC}-bin/mkcat}}.@* ! @code{mkcat} sets up the subdirectories of @var{@value{NAMEUC}_ROOT} which will contain submitted Problem Reports. Each subdirectory is named for the category its bugs will belong to; for instance, all bugs *************** altered by invoking @code{configure} wit *** 1297,1301 **** @example ! ./configure @var{host} --prefix=@var{install-dir} @end example --- 1307,1311 ---- @example ! ./configure @var{hosttype} --prefix=@var{install-dir} @end example *************** from the source code. In this case, you *** 1353,1357 **** mkdir @var{build-directory} cd @var{build-directory} ! @var{srcdir}/configure @var{host} --srcdir=@var{srcdir} @end example --- 1363,1367 ---- mkdir @var{build-directory} cd @var{build-directory} ! @var{srcdir}/configure @var{hosttype} --srcdir=@var{srcdir} @end example *************** need @code{root} privileges on each host *** 1396,1400 **** @enumerate 1 @item ! @emph{Make sure the directory that in which @code{@value{NAMEUC}} resides is NFS-mounted} to each system that will need access to it, so @var{@value{NAMEUC}_ROOT} will be the same for each host. (This can be --- 1406,1410 ---- @enumerate 1 @item ! @emph{Make sure the directory in which @code{@value{NAMEUC}} resides is NFS-mounted} to each system that will need access to it, so @var{@value{NAMEUC}_ROOT} will be the same for each host. (This can be *************** directory on each system you wish to bui *** 1410,1414 **** @table @kbd ! @item configure @var{host} (@emph{for the new @var{host} type}) @item make all @value{NAMEUC}=all-tools --- 1420,1424 ---- @table @kbd ! @item configure @var{hosttype} (@emph{for the new @var{host} type}) @item make all @value{NAMEUC}=all-tools *************** Arrival-Date: @var{arrival date} *** 1512,1516 **** @item Define the following: ! @cindex DEFAULT_SUBMITTER @example #define DEFAULT_SUBMITTER "@var{default}" --- 1522,1526 ---- @item Define the following: ! @cindex @samp{DEFAULT_SUBMITTER} @example #define DEFAULT_SUBMITTER "@var{default}" *************** so that @code{@value{NAMEUC}} may assign *** 1520,1523 **** --- 1530,1548 ---- PR that arrives without a @samp{Submitter-Id}. This value is usually either @samp{net} or @samp{unknown}. + + @item Define the following: + @cindex @samp{KEEP_RECEIVED_HEADERS} + @example + #define KEEP_RECEIVED_HEADERS TRUE + @end example + + @noindent + to specify whether @code{@value{NAMEUC}} should keep the + @samp{Received:} headers for mail messages. Every email message has one + or more @samp{Received:} headers to tell you how a message got from the + sender to the recipient. Define this to be TRUE if you want + @code{@value{NAMEUC}} to preserve all of those @samp{Received:} headers. + If you tend not to use the information, define it to be FALSE so + @code{@value{NAMEUC}} will only keep the first @samp{Received:} header. @end itemize *************** existing Problem Reports}). *** 1822,1826 **** @item mkcat Used by the @code{@value{NAMEUC}} administrator when creating new ! categories. @item mkdist --- 1847,1855 ---- @item mkcat Used by the @code{@value{NAMEUC}} administrator when creating new ! categories (@pxref{categories, , The @code{categories} file}). ! ! @item rmcat ! Does the opposite of @code{mkcat}, i.e. removes categories ! (@pxref{Management, , Managing @code{@value{NAMEUC}}}). @item mkdist *************** distribution of the program @code{send-p *** 1830,1833 **** --- 1859,1868 ---- world}). + @item gen-index + Used by the @code{@value{NAMEUC}} administrator if the index file + becomes corrupted, or if an up-to-date copy of it is wanted for some + reason. @code{gen-index} builds an index and prints it to the standard + output (@pxref{Management, , Managing @code{@value{NAMEUC}}}). + @item queue-pr Handles incoming bugs, first through a mail alias by queueing incoming *************** Used internally. *** 1860,1870 **** Of these, only @code{send-pr}, @code{query-pr}, and @code{edit-pr} are installed in a public directory. The database itself is write-protected ! solely to maintain data consistency. @code{mkcat} and @code{mkdist} are ! designed for use by a database or system administrator, while ! @code{at-pr}, @code{pr-edit}, @code{pr-addr}, ! @code{file-pr}, and @w{@samp{queue-pr -q}} are completely internal and ! not meant to be called by hand. @w{@samp{queue-pr -r}} can be run by ! hand, but it is usually easiest to let it run periodically via ! @code{cron}. @menu --- 1895,1905 ---- Of these, only @code{send-pr}, @code{query-pr}, and @code{edit-pr} are installed in a public directory. The database itself is write-protected ! solely to maintain data consistency. @code{mkcat}, @code{rmcat}, ! @code{gen-index} and @code{mkdist} are designed for use by a database or ! system administrator, while @code{at-pr}, @code{pr-edit}, ! @code{pr-addr}, @code{file-pr}, and @w{@samp{queue-pr -q}} are ! completely internal and not meant to be called by hand. ! @w{@samp{queue-pr -r}} can be run by hand, but it is usually easiest to ! let it run periodically via @code{cron}. @menu *************** shell or from Emacs. From the shell, si *** 1907,1911 **** followed by any search parameters you wish to exercise. From Emacs, type @w{@kbd{M-x query-pr}}, and you will be prompted for search ! parameters in the minibuffer. The usage for @code{query-pr} is: --- 1942,1954 ---- followed by any search parameters you wish to exercise. From Emacs, type @w{@kbd{M-x query-pr}}, and you will be prompted for search ! parameters in the minibuffer. Use ! ! @example ! C-x ` @emph{or} ! M-x next-error ! @end example ! ! @noindent ! to scroll through the matching PRs. The usage for @code{query-pr} is: *************** query-pr [@var{@value{NAMELC}-id}] [-i *** 1923,1926 **** --- 1966,1971 ---- [-O @var{originator} | --originator=@var{originator}] [-o @var{outfile} | --output=@var{outfile}] + [-P | --print-path] + [-x | --skip-closed] [-q | --summary] [-V | --version] [-h | --help ] *************** the index. *** 1994,1999 **** Print all output to @var{outfile} rather than to the standard output. @item -q ! @item --summary Print a short single-line summary of PR information. --- 2039,2058 ---- Print all output to @var{outfile} rather than to the standard output. + @item -P + @itemx --print-path + Prints the path which @code{query-pr} used to find the current PR. A + line of the form @samp{@var{directory}/@var{number}:@var{number}} will + be printed before each PR. You will probably never want to use this + option; it is automatically used from within Emacs to facilitate + scrolling through groups of PRs with @kbd{C-x `}. + + @item -x + @itemx --skip-closed + Omit closed PRs from the search path. This option is ignored if you are + doing a search on the @samp{>State:} field (using @samp{-s} or + @samp{--state=@var{state}}). + @item -q ! @itemx --summary Print a short single-line summary of PR information. *************** bindings provided. These are: *** 2087,2094 **** @table @code ! @item C-c C-c @itemx @value{NAMELC}-submit-pr ! Submit the PR currently being edited. Do this when you're finished ! editing; if you simply kill the buffer, your changes will be lost. @item C-c C-e --- 2146,2154 ---- @table @code ! @item C-c C-s @itemx @value{NAMELC}-submit-pr ! Save and submit the PR currently being edited. Do this when you're ! finished editing; if you simply kill the buffer, your changes will be ! lost. @item C-c C-e *************** responsible parties and the submitter, a *** 2116,2120 **** @table @asis ! @item @code{Responsible-Changed-From-To}: Records the value change. @item @code{Responsible-Changed-By}: Your name here. --- 2176,2180 ---- @table @asis ! @item @code{Responsible-Changed--}: Records the value change. @item @code{Responsible-Changed-By}: Your name here. *************** follows: *** 2135,2139 **** @table @asis ! @item @code{State-Changed-From-To}: Records the value change. @item @code{State-Changed-By}: Your name here. --- 2195,2199 ---- @table @asis ! @item @code{State-Changed--}: Records the value change. @item @code{State-Changed-By}: Your name here. *************** Prints the usage message shown above. *** 2188,2195 **** @var{@value{NAMELC}-id} and locks the corresponding PR if it is not already locked. This is to prevent you from editing a PR at the same ! time as another user. @code{edit-pr} then calls the editor specified in ! your environment variable @code{EDITOR} on a temporary copy of that PR. ! (If you don't have the variable @code{EDITOR} defined in your ! environment, the default editor @code{vi} is used.) Edit the PR, changing any relevant fields or adding to existing --- 2248,2259 ---- @var{@value{NAMELC}-id} and locks the corresponding PR if it is not already locked. This is to prevent you from editing a PR at the same ! time as another user. If the PR you wish to edit is already in the ! process of being edited, @code{edit-pr} will tell you the name of the ! person who has it locked. ! ! @code{edit-pr} then calls the editor specified in your environment ! variable @code{EDITOR} on a temporary copy of that PR. (If you don't ! have the variable @code{EDITOR} defined in your environment, the default ! editor @code{vi} is used.) Edit the PR, changing any relevant fields or adding to existing *************** originator's intentions. *** 2236,2239 **** --- 2300,2304 ---- @item adding new categories @cindex adding new categories + @cindex @code{mkcat} To add a new category, simply insert a new line in the @w{@file{categories}} file and then run the program @code{mkcat}. This *************** distribution you provided, or you must b *** 2251,2254 **** --- 2316,2338 ---- @code{send-pr} with this new information and redistribute it. + @item removing categories + @cindex removing categories + @cindex @code{rmcat} + To remove a category, you need to: + + @itemize @bullet + @item + make sure the relevant subdirectory is empty (in other words, make sure + no PRs exist for the category you wish to remove); + + @item + remove the cateogry listing from the @file{categories} file; + + @item + invoke @samp{rmcat @var{category}} to remove @var{category} (any number + of categories may be specified on the command line to @code{rmcat}, so + long as they abide by the above constraints). + @end itemize + @item building a distribution of @code{send-pr} @cindex building a distribution of @code{send-pr} *************** supports, and all @code{send-pr} documen *** 2265,2268 **** --- 2349,2388 ---- send-pr, , Configuring @code{send-pr} for the outside world}. + @item building a new index + @cindex building a new index + @cindex @code{gen-index} + If for some reason the @file{index} becomes corrupted, or if you wish to + generate a new one for some reason, use the program @code{gen-index} as + follows. + + @example + gen-index [-n | --numeric] [-d @var{dir} | --directory=@var{dir}] + [-o @var{file} | --outfile=@var{file}] [-h | --help] + @end example + + @noindent + With no options, @code{gen-index} generates an index that is ordered the + same as the order of the categories as they appear in the + @file{categories} file. The options are: + + @table @code + @item -n + @itemx --numeric + Sort index entries numerically. + + @item -d @var{dir} + @itemx --directory=@var{dir} + Use @var{dir} as the root directory. + + @item -o @var{file} + @itemx --outfile=@var{file} + Place output in the file @var{file} rather than sending it to standard + output. + + @item -h + @itemx --help + Print the usage for @code{gen-index}. + @end table + @item removing file locks from failed editing sessions @cindex removing file locks from failed editing sessions diff -c2pr gnats-3.00/gnats/headers.c gnats-3.01/gnats/headers.c *** gnats-3.00/gnats/headers.c Mon Mar 8 18:35:40 1993 --- gnats-3.01/gnats/headers.c Wed Apr 14 13:31:03 1993 *************** the Free Software Foundation, 675 Mass A *** 22,26 **** #include ! #ifdef HAVE_LIMITS_h #include #endif --- 22,26 ---- #include ! #ifdef HAVE_LIMITS_H #include #endif *************** the Free Software Foundation, 675 Mass A *** 32,35 **** --- 32,36 ---- #include "headers.h" #include "gnats.h" + #include "config.h" typedef struct *************** typedef struct *** 43,58 **** Header header[NUM_HEADER_ITEMS]; ! static short lookup_header PARAMS((char *)); void read_header (fp) FILE *fp; { ! int i; bool received = FALSE; bool headers_found = FALSE; char *l; ! char line[STR_MAX]; char token[STR_MAX]; while (read_string (line, fp) != -1) --- 44,106 ---- Header header[NUM_HEADER_ITEMS]; ! /* Look to see if STRING is a mail header we know about. */ ! static short ! lookup_header (string) ! char *string; ! { ! Header_Name i; ! ! for (i = (Header_Name) 0; i < NUM_HEADER_ITEMS; i++) ! if ((header[i].name != NULL && string != NULL) ! && (strncasecmp (header[i].name, string, strlen (string)) == 0)) ! return i; ! ! return -1; ! } + /* If there's more than one instance of a given header, keep + the first one and ignore any future ones. There's one + exception to this rule: the `Received:' header. We are likely + to get many of them, so just drop them down into the "value" + of the first received header. */ + static void + set_continued_header (i, buf) + Header_Name i; + char *buf; + { + char *b; + + if (header[i].value != NULL) + { + if (KEEP_RECEIVED_HEADERS && i == RECEIVED) + { + b = (char *) xmalloc (strlen (header[i].value) + 10 + + strlen (buf) + 1); + if (*buf == ' ') + sprintf (b, "%sReceived:%s", header[i].value, buf); + else + sprintf (b, "%sReceived: %s", header[i].value, buf); + free (header[i].value); + free (buf); + header[i].value = b; + } + } + else + header[i].value = buf; + } + void read_header (fp) FILE *fp; { ! int j, l1; ! Header_Name i; bool received = FALSE; bool headers_found = FALSE; char *l; ! char line[STR_MAX], temp[STR_MAX]; char token[STR_MAX]; + char *b, *buf; + int buf_len, buf_max; while (read_string (line, fp) != -1) *************** read_header (fp) *** 65,112 **** l = get_token (line, token); i = lookup_header (token); ! switch (i) ! { ! case -1: /* error from lookup_header */ ! /* no need to print an error for a unknown msg header */ ! break; ! case RECEIVED: ! /* Only save one `Received:' line. */ ! if (received == FALSE) ! { ! char temp[STR_MAX]; ! char *b; ! /* If it begins with a tab, it's a typical `Received:' header ! which provides you with mailer id information. */ ! read_string (temp, fp); ! if (*temp != '\t') ! { ! header[i].value = (char *) strdup (l); ! strcpy (line, temp); ! goto keep_going; ! } ! ! b = (char *) xmalloc (strlen (l) + strlen (temp) + 2); ! sprintf (b, "%s%s", l, temp); ! header[i].value = (char *) strdup (b); ! free (b); ! received = TRUE; ! } ! else { ! /* Swallow every `Received:' header after we've gotten our ! first one. Only swallow the line after it if it begins ! with a tab, otherwise we could end up eating a From: ! line or something equally disastrous. */ ! read_string (line, fp); ! if (*line != '\t') ! goto keep_going; } ! break; ! default: ! headers_found = TRUE; ! header[i].value = (char *) strdup (l); } } --- 113,148 ---- l = get_token (line, token); i = lookup_header (token); ! if (i == -1) ! continue; ! headers_found = TRUE; ! j = read_string (temp, fp); ! if (j != -1 && temp[0] == '\t') ! { ! j = strlen (l) + strlen (temp) + 1; ! buf_max = j + BUFSIZ; ! buf_len = strlen (l); ! buf = (char *) xmalloc (buf_max); ! memcpy (buf, l, buf_len); ! b = buf + buf_len; ! ! do { ! APPEND_STRING (temp, buf, b, buf_len, buf_max, l1, 0); ! j = read_string (temp, fp); } ! while (j != -1 && temp[0] == '\t'); ! ! *b = '\0'; ! set_continued_header (i, buf); } + else + set_continued_header (i, strdup (l)); + + if (j == -1) + break; + strcpy (line, temp); + goto keep_going; } *************** write_header (fp, string) *** 121,141 **** Header_Name string; { ! register int i; if (string != NUM_HEADER_ITEMS) fprintf (fp, "%s %s", header[string].name, header[string].value); else ! for (i = 0; i < NUM_HEADER_ITEMS; i++) if (header[i].value != NULL) { ! if (i == SM_FROM) ! fprintf (fp, "%s%s", header[i].name, header[i].value); ! else { ! if (*header[i].value) fprintf (fp, "%s %s", header[i].name, header[i].value); else ! fprintf (fp, "%s\n", header[i].name); } } } --- 157,177 ---- Header_Name string; { ! Header_Name i; if (string != NUM_HEADER_ITEMS) fprintf (fp, "%s %s", header[string].name, header[string].value); else ! for (i = (Header_Name) 0; i < NUM_HEADER_ITEMS; i++) if (header[i].value != NULL) { ! if (*header[i].value) { ! if (*header[i].value != ' ') fprintf (fp, "%s %s", header[i].name, header[i].value); else ! fprintf (fp, "%s%s", header[i].name, header[i].value); } + else + fprintf (fp, "%s\n", header[i].name); } } *************** init_header () *** 164,182 **** header[X_SEND_PR].name = "X-Send-Pr-Version:"; } - - /* Look to see if STRING is a mail header we know about. */ - static short - lookup_header (string) - char *string; - { - int i; - - for (i = 0; i < NUM_HEADER_ITEMS; i++) - if ((header[i].name != NULL && string != NULL) - && (strncasecmp (header[i].name, string, strlen (string)) == 0)) - return i; - - return -1; - } char * --- 200,203 ---- *************** header_name (name) *** 184,188 **** Header_Name name; { ! if (name < 0 || name >= NUM_HEADER_ITEMS) return NULL; else --- 205,209 ---- Header_Name name; { ! if (name < 0 || name >= (int) NUM_HEADER_ITEMS) return NULL; else *************** header_value (name) *** 194,198 **** Header_Name name; { ! if (name < 0 || name >= NUM_HEADER_ITEMS) return NULL; else --- 215,219 ---- Header_Name name; { ! if (name < 0 || name >= (int) NUM_HEADER_ITEMS) return NULL; else diff -c2pr gnats-3.00/gnats/index.c gnats-3.01/gnats/index.c *** gnats-3.00/gnats/index.c Mon Mar 8 18:35:41 1993 --- gnats-3.01/gnats/index.c Wed Apr 14 13:31:04 1993 *************** create_index_entry (buf) *** 39,43 **** resp = (char *) strdup (resp); ! r = strchr (resp, ' '); if (r != NULL) *r = '\0'; --- 39,43 ---- resp = (char *) strdup (resp); ! r = (char *) strchr (resp, ' '); if (r != NULL) *r = '\0'; *************** next_index_entry (fp) *** 66,70 **** start = b; ! end = strchr (start, '/'); if (end == NULL) goto no_entry; --- 66,70 ---- start = b; ! end = (char *) strchr (start, '/'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 73,77 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 73,77 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 80,84 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 80,84 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 87,91 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 87,91 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 94,98 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 94,98 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 101,105 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 101,105 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 108,112 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) goto no_entry; --- 108,112 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) goto no_entry; *************** next_index_entry (fp) *** 115,119 **** start = end + 1; ! end = strchr (start, '\n'); if (end == NULL) goto no_entry; --- 115,119 ---- start = end + 1; ! end = (char *) strchr (start, '\n'); if (end == NULL) goto no_entry; *************** find_pr_category (fp, number) *** 150,154 **** start = b; ! end = strchr (start, '/'); if (end == NULL) return NULL; --- 150,154 ---- start = b; ! end = (char *) strchr (start, '/'); if (end == NULL) return NULL; *************** find_pr_category (fp, number) *** 157,161 **** start = end + 1; ! end = strchr (start, ':'); if (end == NULL) return NULL; --- 157,161 ---- start = end + 1; ! end = (char *) strchr (start, ':'); if (end == NULL) return NULL; diff -c2pr gnats-3.00/gnats/internal.c gnats-3.01/gnats/internal.c *** gnats-3.00/gnats/internal.c Mon Mar 8 18:35:42 1993 --- gnats-3.01/gnats/internal.c Wed Apr 14 13:31:05 1993 *************** the Free Software Foundation, 675 Mass A *** 20,24 **** */ ! #ifdef __STDC__ #include #define VA_START(args, lastarg) va_start(args, lastarg) --- 20,24 ---- */ ! #if defined(__STDC__) || defined(_AIX) #include #define VA_START(args, lastarg) va_start(args, lastarg) *************** write_index (index_start) *** 48,59 **** FILE *fp; - char *tmppath = (char *) xmalloc (PATH_MAX); char *path = (char *) xmalloc (PATH_MAX); ! char *tmpfile; Index *i; ! sprintf (tmppath, "%s/gnats-adm/", gnats_root); sprintf (path, "%s/gnats-adm/%s", gnats_root, INDEX); ! tmpfile = tempnam (tmppath, "ind"); fp = fopen (tmpfile, "w"); --- 48,58 ---- FILE *fp; char *path = (char *) xmalloc (PATH_MAX); ! char *tmpfile = (char *) xmalloc (PATH_MAX); Index *i; ! sprintf (tmpfile, "%s/gnats-adm/indXXXXXX", gnats_root); sprintf (path, "%s/gnats-adm/%s", gnats_root, INDEX); ! mktemp (tmpfile); fp = fopen (tmpfile, "w"); *************** unlock_gnats () *** 241,245 **** /* VARARGS */ void ! #ifdef __STDC__ punt (int die, ...) #else --- 240,244 ---- /* VARARGS */ void ! #if defined(__STDC__) || defined(_AIX) punt (int die, ...) #else diff -c2pr gnats-3.00/gnats/main.c gnats-3.01/gnats/main.c *** gnats-3.00/gnats/main.c Mon Mar 8 18:35:43 1993 --- gnats-3.01/gnats/main.c Wed Apr 14 13:31:05 1993 *************** the Free Software Foundation, 675 Mass A *** 30,33 **** --- 30,37 ---- #include + #ifdef HAVE_UNISTD_H + #include + #endif + #include "config.h" #include "gnats.h" *************** main (argc, argv) *** 227,231 **** pr_path = check_if_reply (fp); if (pr_path) ! append_report (fp, pr_path); else gnats (fp); --- 231,246 ---- pr_path = check_if_reply (fp); if (pr_path) ! { ! /* Before inserting the reply, see if someone's got the PR ! locked; if they do, then try it at the next run of the queue. */ ! char *buf = (char *) xmalloc (strlen (pr_path) + 6); ! sprintf (buf, "%s.lock", pr_path); ! if (access (buf, R_OK) == 0) ! { ! unlock_gnats (); ! exit (1); ! } ! append_report (fp, pr_path); ! } else gnats (fp); diff -c2pr gnats-3.00/gnats/man/Makefile.in gnats-3.01/gnats/man/Makefile.in *** gnats-3.00/gnats/man/Makefile.in Mon Mar 8 18:35:59 1993 --- gnats-3.01/gnats/man/Makefile.in Wed Apr 14 13:31:17 1993 *************** INSTALL_DATA = $(INSTALL) *** 56,61 **** SRCS1= edit-pr.1 query-pr.1 MAN1= edit-pr.man query-pr.man ! SRCS8= mkcat.8 mkdist.8 queue-pr.8 file-pr.8 ! MAN8 = mkcat.man mkdist.man queue-pr.man file-pr.man SRCSL= gnats.l MANL = gnats.man --- 56,61 ---- SRCS1= edit-pr.1 query-pr.1 MAN1= edit-pr.man query-pr.man ! SRCS8= mkcat.8 mkdist.8 queue-pr.8 file-pr.8 rmcat.8 gen-index.8 ! MAN8 = mkcat.man mkdist.man queue-pr.man file-pr.man rmcat.man gen-index.man SRCSL= gnats.l MANL = gnats.man diff -c2pr gnats-3.00/gnats/man/edit-pr.man gnats-3.01/gnats/man/edit-pr.man *** gnats-3.00/gnats/man/edit-pr.man Mon Mar 8 18:35:59 1993 --- gnats-3.01/gnats/man/edit-pr.man Wed Apr 14 13:31:18 1993 *************** *** 2,6 **** .\" See section COPYING for conditions for redistribution .\" edit-pr, editing function for GNATS - Jeffrey Osier ! .TH edit-pr 1 "February 1993" "GNATS @VERSION@" "GNATS User Utilities" .de BP .sp --- 2,6 ---- .\" See section COPYING for conditions for redistribution .\" edit-pr, editing function for GNATS - Jeffrey Osier ! .TH edit-pr 1 "April 1993" "GNATS @VERSION@" "GNATS User Utilities" .de BP .sp *************** and *** 70,73 **** --- 70,75 ---- .BR queue-pr (8), .BR mkcat (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH COPYING diff -c2pr gnats-3.00/gnats/man/file-pr.man gnats-3.01/gnats/man/file-pr.man *** gnats-3.00/gnats/man/file-pr.man Mon Mar 8 18:36:00 1993 --- gnats-3.01/gnats/man/file-pr.man Wed Apr 14 13:31:19 1993 *************** *** 1,5 **** .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH file-pr 8 "February 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp --- 1,5 ---- .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH file-pr 8 "April 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp *************** and *** 87,90 **** --- 87,92 ---- .BR queue-pr (8), .BR mkcat (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH COPYING *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/man/gen-index.man Wed Apr 14 13:31:19 1993 *************** *** 0 **** --- 1,114 ---- + .\" Copyright (c) 1993 Free Software Foundation, Inc. + .\" See section COPYING for conditions for redistribution + .TH gen-index 8 "April 1993" "GNATS @VERSION@" "GNATS Admininstration Utilities" + .de BP + .sp + .ti -.2i + \(** + .. + .SH NAME + gen\-index \- build an index from a current GNATS installation + .SH SYNOPSIS + .hy 0 + .na + .B gen\-index + .RS + [ + .B -n + | + .B --numeric + ] + [ + .B -d + .I dir + | + .BI --directory= dir + ] + .br + [ + .B -o + .I outfile + | + .BI --outfile= outfile + ] + [ + .B -h + | + .B --help + ] + .br + [ + .B -V + | + .B --version + ] + .ad b + .hy 1 + .SH DESCRIPTION + Builds an index from a current + .B GNATS + installation. Prints by default to the standard output. + .SH OPTIONS + .TP 0.5i + .B -n, --numeric + Sorts index entries numerically rather than by their order in the + .B `categories' + file. + .TP + .B -d \fIdir\fB, --directory=\fIdir\fR + Uses + .I dir + rather than the default + .B GNATS + installation directory. + .TP + .B -o \fIoutfile\fB, --outfile=\fIoutfile\fR + Prints to + .I outfile + rather than to the standard output. + .TP + .B -h, --help + Prints usage for + .BR gen\-index . + .TP + .B -V, --version + Prints the version number of + .B gen\-index + and exits. + .SH "SEE ALSO" + .B gnats.texi + and + .BR send-pr.texi , + which are also installed as GNU + .B Info + files + .B gnats.info + and + .BR send-pr.info ; + .LP + .BR gnats (l), + .BR send-pr (1), + .BR edit-pr (1), + .BR query-pr (1), + .BR file-pr (8), + .BR queue-pr (8), + .BR mkdist (8), + .BR mkcat (8), + .BR rmcat (8). + .SH COPYING + Copyright (c) 1993 Free Software Foundation, Inc. + .PP + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission notice + are preserved on all copies. + .PP + Permission is granted to copy and distribute modified versions of this + manual under the conditions for verbatim copying, provided that the + entire resulting derived work is distributed under the terms of a + permission notice identical to this one. + .PP + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for modified + versions, except that this permission notice may be included in + translations approved by the Free Software Foundation instead of in + the original English. diff -c2pr gnats-3.00/gnats/man/gnats.man gnats-3.01/gnats/man/gnats.man *** gnats-3.00/gnats/man/gnats.man Mon Mar 8 18:36:02 1993 --- gnats-3.01/gnats/man/gnats.man Wed Apr 14 13:31:17 1993 *************** *** 2,6 **** .\" --------------------------------------------------------------------------- .\" man page for GNATS (by Heinz G. Seidl, hgs@cygnus.com) ! .\" updated Feb 1993 for GNATS @VERSION@ by Jeffrey Osier, jeffrey@cygnus.com .\" .\" This file is part of the GNU Problem Report Management System (GNATS) --- 2,6 ---- .\" --------------------------------------------------------------------------- .\" man page for GNATS (by Heinz G. Seidl, hgs@cygnus.com) ! .\" updated April 1993 for GNATS @VERSION@ by Jeffrey Osier, jeffrey@cygnus.com .\" .\" This file is part of the GNU Problem Report Management System (GNATS) *************** *** 23,27 **** .\" --------------------------------------------------------------------------- .\" ! .TH GNATS l "February 1993" "GNATS @VERSION@" "Problem Report Management System" .SH NAME .B GNATS --- 23,27 ---- .\" --------------------------------------------------------------------------- .\" ! .TH GNATS l "April 1993" "GNATS @VERSION@" "Problem Report Management System" .SH NAME .B GNATS *************** and *** 193,196 **** --- 193,198 ---- .BR queue-pr (8), .BR mkcat (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH HISTORY diff -c2pr gnats-3.00/gnats/man/mkcat.man gnats-3.01/gnats/man/mkcat.man *** gnats-3.00/gnats/man/mkcat.man Mon Mar 8 18:36:01 1993 --- gnats-3.01/gnats/man/mkcat.man Wed Apr 14 13:31:20 1993 *************** *** 1,5 **** .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH mkcat 8 "February 1993" "GNATS @VERSION@" "GNATS Admininstration Utilities" .de BP .sp --- 1,5 ---- .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH mkcat 8 "April 1993" "GNATS @VERSION@" "GNATS Admininstration Utilities" .de BP .sp *************** and *** 48,51 **** --- 48,53 ---- .BR file-pr (8), .BR queue-pr (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH COPYING diff -c2pr gnats-3.00/gnats/man/mkdist.man gnats-3.01/gnats/man/mkdist.man *** gnats-3.00/gnats/man/mkdist.man Mon Mar 8 18:36:02 1993 --- gnats-3.01/gnats/man/mkdist.man Wed Apr 14 13:31:20 1993 *************** *** 1,5 **** .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH mkdist 8 "February 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp --- 1,5 ---- .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH mkdist 8 "April 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp *************** and *** 89,92 **** --- 89,94 ---- .BR file-pr (8), .BR queue-pr (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkcat (8). .SH COPYING diff -c2pr gnats-3.00/gnats/man/query-pr.man gnats-3.01/gnats/man/query-pr.man *** gnats-3.00/gnats/man/query-pr.man Mon Mar 8 18:36:03 1993 --- gnats-3.01/gnats/man/query-pr.man Wed Apr 14 13:31:21 1993 *************** *** 1,5 **** .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution .in +0.9i ! .TH query-pr 1 "February 1993" "GNATS @VERSION@" "GNATS User Utilities" .de BP .sp --- 1,5 ---- .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution .in +0.9i ! .TH query-pr 1 "April 1993" "GNATS @VERSION@" "GNATS User Utilities" .de BP .sp *************** and *** 206,209 **** --- 206,211 ---- .BR queue-pr (8), .BR mkcat (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH COPYING diff -c2pr gnats-3.00/gnats/man/queue-pr.man gnats-3.01/gnats/man/queue-pr.man *** gnats-3.00/gnats/man/queue-pr.man Mon Mar 8 18:36:04 1993 --- gnats-3.01/gnats/man/queue-pr.man Wed Apr 14 13:31:21 1993 *************** *** 1,5 **** .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH queue-pr 8 "February 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp --- 1,5 ---- .\" Copyright (c) 1993 Free Software Foundation, Inc. .\" See section COPYING for conditions for redistribution ! .TH queue-pr 8 "April 1993" "GNATS @VERSION@" "GNATS Administration Utilities" .de BP .sp *************** and *** 111,114 **** --- 111,116 ---- .BR file-pr (8), .BR mkcat (8), + .BR rmcat (8), + .BR gen-index (8), .BR mkdist (8). .SH COPYING *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/man/rmcat.man Wed Apr 14 13:31:22 1993 *************** *** 0 **** --- 1,82 ---- + .\" Copyright (c) 1993 Free Software Foundation, Inc. + .\" See section COPYING for conditions for redistribution + .TH rmcat 8 "April 1993" "GNATS @VERSION@" "GNATS Admininstration Utilities" + .de BP + .sp + .ti -.2i + \(** + .. + .SH NAME + rmcat \- remove GNATS categories + .SH SYNOPSIS + .hy 0 + .na + .TP + .B mkcat + .I category + [ + .I category... + ] + .ad b + .hy 1 + .SH DESCRIPTION + Removes any named + .I category + from the + .B GNATS + installation. + .I category + must be removed from the + .B @GNATS_ROOT@/gnats-adm/categories + file, and all problem reports associated with + .I category + must be moved or removed (i.e., + .IR category 's + subdirectory must be empty). + Also updates current local list of categories for + .BR send-pr . + .SH FILES + .B @GNATS_ROOT@/gnats-adm/categories + .br + Removes + .B @GNATS_ROOT@/\fIcategory\fR + .br + Updates + .B @LIBDIR@/gnats/@GNATS_SITE@ + .SH "SEE ALSO" + .B gnats.texi + and + .BR send-pr.texi , + which are also installed as GNU + .B Info + files + .B gnats.info + and + .BR send-pr.info ; + .LP + .BR gnats (l), + .BR send-pr (1), + .BR edit-pr (1), + .BR query-pr (1), + .BR file-pr (8), + .BR queue-pr (8), + .BR gen-index (8), + .BR mkcat (8), + .BR mkdist (8). + .SH COPYING + Copyright (c) 1993 Free Software Foundation, Inc. + .PP + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission notice + are preserved on all copies. + .PP + Permission is granted to copy and distribute modified versions of this + manual under the conditions for verbatim copying, provided that the + entire resulting derived work is distributed under the terms of a + permission notice identical to this one. + .PP + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for modified + versions, except that this permission notice may be included in + translations approved by the Free Software Foundation instead of in + the original English. diff -c2pr gnats-3.00/gnats/misc.c gnats-3.01/gnats/misc.c *** gnats-3.00/gnats/misc.c Mon Mar 8 18:35:44 1993 --- gnats-3.01/gnats/misc.c Wed Apr 14 13:31:06 1993 *************** the Free Software Foundation, 675 Mass A *** 24,28 **** #endif ! #ifdef __STDC__ #include #define VA_START(args, lastarg) va_start(args, lastarg) --- 24,28 ---- #endif ! #if defined(__STDC__) || defined(_AIX) #include #define VA_START(args, lastarg) va_start(args, lastarg) *************** init_gnats () *** 67,71 **** /* VARARGS */ void ! #ifdef __STDC__ log_msg (int severity, int has_arg, ...) #else --- 67,71 ---- /* VARARGS */ void ! #if defined(__STDC__) || defined(_AIX) log_msg (int severity, int has_arg, ...) #else *************** open_mail_file (recipients) *** 114,119 **** { FILE *fp; ! char *buffer = (char *) xmalloc(256); /* Can't use log_msg here, since gnats_logfile is being set by this first thing. */ --- 114,124 ---- { FILE *fp; ! char *buffer; + if (recipients != NULL) + buffer = (char *) xmalloc (strlen (MAIL_AGENT) + strlen (recipients) + 2); + else + buffer = (char *) xmalloc (strlen (MAIL_AGENT) + 1); + /* Can't use log_msg here, since gnats_logfile is being set by this first thing. */ diff -c2pr gnats-3.00/gnats/mkdist.sh gnats-3.01/gnats/mkdist.sh *** gnats-3.00/gnats/mkdist.sh Mon Mar 8 18:35:46 1993 --- gnats-3.01/gnats/mkdist.sh Wed Apr 14 13:31:07 1993 *************** *** 20,28 **** # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ! GNATS_ROOT=@GNATS_ROOT@ ! VERSION=@VERSION@ ! GNATS_SITE=@GNATS_SITE@ ! FILES="COPYING README send-pr.sh install-sid.sh send-pr.elisp send-pr.texi \ send-pr.man send-pr.info texinfo.tex categories" --- 20,28 ---- # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ! GNATS_ROOT=XGNATS_ROOTX ! VERSION=XVERSIONX ! GNATS_SITE=XGNATS_SITEX ! FILES="COPYING README send-pr.sh install-sid.sh send-pr-el.in send-pr.texi \ send-pr.man send-pr.info texinfo.tex categories" *************** for f in $FILES; do *** 56,68 **** done ! cat > $1/Makefile << __EOF__ # # Makefile for building a standalone send-pr. # ! VERSION=$VERSION ! RELEASE=$2 prefix = /usr/local bindir = $(prefix)/bin infodir = $(prefix)/info lispdir = $(prefix)/emacs/lisp --- 56,69 ---- done ! cat > $1/Makefile << '__EOF__' # # Makefile for building a standalone send-pr. # ! VERSION=YVERSIONY ! RELEASE=YRELEASEY prefix = /usr/local bindir = $(prefix)/bin + libdir = $(prefix)/lib infodir = $(prefix)/info lispdir = $(prefix)/emacs/lisp *************** send-pr: send-pr.sh *** 76,86 **** -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' send-pr.sh > send-pr ! send-pr.el: send-pr.elisp sed -e 's/@VERSION@/$(VERSION)/g' \ ! -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' send-pr.elisp > send-pr.el install-sid: install-sid.sh sed -e 's/@VERSION@/$(VERSION)/g' \ ! -e 's/@BINDIR@/$(bindir)/g' install-sid.sh > install-sid install: all --- 77,87 ---- -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' send-pr.sh > send-pr ! send-pr.el: send-pr-el.in sed -e 's/@VERSION@/$(VERSION)/g' \ ! -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' send-pr-el.in > send-pr.el install-sid: install-sid.sh sed -e 's/@VERSION@/$(VERSION)/g' \ ! -e 's,@BINDIR@,$(bindir),g' install-sid.sh > install-sid install: all *************** install: all *** 98,102 **** if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi if [ -d $(libdir)/gnats ] ; then true ; else mkdir $(libdir)/gnats ; fi ! cp categories $(libdir)/gnats/$(GNATS_SITE) -parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \ if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi --- 99,103 ---- if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi if [ -d $(libdir)/gnats ] ; then true ; else mkdir $(libdir)/gnats ; fi ! cp categories $(libdir)/gnats/@GNATS_SITE@ -parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \ if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi *************** clean: *** 109,111 **** --- 110,117 ---- __EOF__ + sed -e 's/YGNATS_SITEY/$GNATS_SITE/g' \ + -e "s/YVERSIONY/$VERSION/1" \ + -e "s/YRELEASEY/$2/" $1/Makefile > $1/Makefile.tmp + mv -f $1/Makefile.tmp $1/Makefile + exit 0 diff -c2pr gnats-3.00/gnats/pr-edit.c gnats-3.01/gnats/pr-edit.c *** gnats-3.00/gnats/pr-edit.c Mon Mar 8 18:35:48 1993 --- gnats-3.01/gnats/pr-edit.c Wed Apr 14 13:31:09 1993 *************** main (argc, argv) *** 148,152 **** break; case CHECK: ! check_pr (fp); break; default: --- 148,152 ---- break; case CHECK: ! result = check_pr (fp); break; default: *************** modify_pr (fp) *** 190,196 **** if (new_index->responsible) { ! p = strchr (new_index->responsible, ' '); if (p != NULL) ! *p = '\0'; } new_index->state = field_value (STATE); --- 190,206 ---- if (new_index->responsible) { ! p = (char *) strchr (new_index->responsible, ' '); if (p != NULL) ! { ! int x = (int) (p - new_index->responsible); ! ! /* Copy it instead of chopping off the full name in ! the responsible field's value itself, so the PR ! gets written out with what was read in. */ ! p = (char *) strdup (new_index->responsible); ! new_index->responsible = p; ! p += x; ! *p = '\0'; ! } } new_index->state = field_value (STATE); *************** get_path (fname) *** 438,442 **** return NULL; ! p = strchr (fname, '/'); if (p == NULL) { --- 448,452 ---- return NULL; ! p = (char *) strchr (fname, '/'); if (p == NULL) { diff -c2pr gnats-3.00/gnats/pr.c gnats-3.01/gnats/pr.c *** gnats-3.00/gnats/pr.c Mon Mar 8 18:35:49 1993 --- gnats-3.01/gnats/pr.c Wed Apr 14 13:31:10 1993 *************** read_pr (fp, prune) *** 76,80 **** l = get_token (line, token); if (token[0] == PR_START_FIELD && token[1]) ! i = field_name (token); } --- 76,80 ---- l = get_token (line, token); if (token[0] == PR_START_FIELD && token[1]) ! i = (int) field_name (token); } *************** check_enum_types (check) *** 332,339 **** struct bad_enum *bad_enums = NULL, *bad_enums_end = NULL; ! while (++i < NUM_PR_ITEMS) { found = FALSE; ! if (pr[i].datatype != 0 && pr[i].datatype == Enum) { if (pr[i].value == NULL || *pr[i].value == '\0') --- 332,339 ---- struct bad_enum *bad_enums = NULL, *bad_enums_end = NULL; ! while (++i < (int) NUM_PR_ITEMS) { found = FALSE; ! if (pr[i].datatype != (PR_Type) 0 && pr[i].datatype == Enum) { if (pr[i].value == NULL || *pr[i].value == '\0') *************** field_name (string) *** 400,408 **** if (*string == '\0') ! return -1; len = strlen(string); ! for (i = 0; i < NUM_PR_ITEMS; i++) if ((pr[i].name != NULL && string != NULL) && (strncmp (pr[i].name, string, len) == 0)) --- 400,408 ---- if (*string == '\0') ! return (PR_Name) -1; len = strlen(string); ! for (i = (PR_Name) 0; i < NUM_PR_ITEMS; i++) if ((pr[i].name != NULL && string != NULL) && (strncmp (pr[i].name, string, len) == 0)) *************** field_name (string) *** 415,419 **** return SUBMITTER; ! return -1; } --- 415,419 ---- return SUBMITTER; ! return (PR_Name) -1; } *************** field_value (name) *** 424,428 **** PR_Name name; { ! if (name < 0 || name >= NUM_PR_ITEMS) return NULL; --- 424,428 ---- PR_Name name; { ! if (name < (PR_Name) 0 || name >= NUM_PR_ITEMS) return NULL; *************** set_field (name, string) *** 446,450 **** bool found = FALSE; ! if (name < 0 || name >= NUM_PR_ITEMS || string == NULL) return found; --- 446,450 ---- bool found = FALSE; ! if (name < (PR_Name) 0 || name >= NUM_PR_ITEMS || string == NULL) return found; diff -c2pr gnats-3.00/gnats/pr.h gnats-3.01/gnats/pr.h *** gnats-3.00/gnats/pr.h Mon Mar 8 18:35:50 1993 --- gnats-3.01/gnats/pr.h Wed Apr 14 13:31:10 1993 *************** typedef enum *** 46,53 **** } PR_Name; ! enum PR_Type { Nil, Text, MultiText, Enum, Integral, Receiver ! }; typedef struct --- 46,53 ---- } PR_Name; ! typedef enum { Nil, Text, MultiText, Enum, Integral, Receiver ! } PR_Type; typedef struct *************** typedef struct *** 62,66 **** char *enum_values; /* type of data that will be accepted */ ! enum PR_Type datatype; } PR_entry; --- 62,66 ---- char *enum_values; /* type of data that will be accepted */ ! PR_Type datatype; } PR_entry; diff -c2pr gnats-3.00/gnats/query-pr.c gnats-3.01/gnats/query-pr.c *** gnats-3.00/gnats/query-pr.c Mon Mar 8 18:35:54 1993 --- gnats-3.01/gnats/query-pr.c Wed Apr 14 13:31:13 1993 *************** int full_report = 0; *** 48,51 **** --- 48,59 ---- int sql_format = 0; + /* If 1, don't talk about closed PRs. */ + int skip_closed = 0; /* FIXME: This doesn't make sense when we have + configurable state names. */ + + /* If 1, print a string like "/gnats/GNATS/g++/145:0:" for the + emacs next-error function. */ + int print_path = 0; + /* If 1, emit a summary of the PR. */ int summary = 0; *************** struct option long_options[] = *** 70,77 **** --- 78,87 ---- {"severity", 1, NULL, 'e'}, {"priority", 1, NULL, 'p'}, + {"print-path", 1, NULL, 'P'}, {"output", 1, NULL, 'o'}, {"version", 0, NULL, 'V'}, {"full", 0, NULL, 'F'}, {"sql", 0, NULL, 'i'}, + {"skip-closed", 0, NULL, 'x'}, {"help", 0, NULL, 'h'}, {"summary", 0, NULL, 'q'}, *************** get_category (p) *** 160,171 **** fp = open_index (); category = find_pr_category (fp, p); if (category == NULL) ! { ! fprintf (stderr, "%s: couldn't find PR %s in the index\n", ! program_name, p); ! return NULL; ! } close_index (fp); --- 170,181 ---- fp = open_index (); + if (fp == (FILE *)NULL) + return NULL; + category = find_pr_category (fp, p); if (category == NULL) ! return NULL; ! close_index (fp); *************** print_pr (path, p, opened) *** 219,223 **** { /* Trim `foo (Full Foo)' to just `foo'. */ ! char *q = strchr (pr[RESPONSIBLE].value, ' '); if (q != NULL) *q = '\0'; --- 229,233 ---- { /* Trim `foo (Full Foo)' to just `foo'. */ ! char *q = (char *) strchr (pr[RESPONSIBLE].value, ' '); if (q != NULL) *q = '\0'; *************** print_pr (path, p, opened) *** 250,253 **** --- 260,268 ---- else { + /* Print this out for emacs when people do `M-x query-pr' and want + to be able to use the next-error function on the buffer. */ + if (print_path) + fprintf (outfile, "%s:0:\n", path); + write_pr (outfile, NUMBER); write_pr (outfile, CATEGORY); *************** print_pr (path, p, opened) *** 262,265 **** --- 277,281 ---- write_pr (outfile, ORIGINATOR); write_pr (outfile, RELEASE); + write_pr (outfile, ARRIVAL_DATE); } *************** pr_matches (s, i) *** 293,297 **** /* Possibly print out a PR, checking if we want to verify the originator first. */ ! void do_pr (i) Index *i; --- 309,313 ---- /* Possibly print out a PR, checking if we want to verify the originator first. */ ! int do_pr (i) Index *i; *************** do_pr (i) *** 305,315 **** { if (! get_pr (path, i->number)) ! return; if (pr[ORIGINATOR].value == NULL ! || strncmp (pr[ORIGINATOR].value, ! originator, ! strlen (originator)) != 0) ! return; pr_loaded = 1; } --- 321,331 ---- { if (! get_pr (path, i->number)) ! return 0; if (pr[ORIGINATOR].value == NULL ! || strncasecmp (pr[ORIGINATOR].value, ! originator, ! strlen (originator)) != 0) ! return 0; pr_loaded = 1; } *************** do_pr (i) *** 317,323 **** print_pr (path, i->number, pr_loaded); free (path); } ! void query_pr (p, s) char *p; --- 333,341 ---- print_pr (path, i->number, pr_loaded); free (path); + + return 1; } ! int query_pr (p, s) char *p; *************** query_pr (p, s) *** 329,337 **** if (p == NULL) { for (i = index_chain; i ; i = i->next) if ((!searching && !s) || pr_matches (s, i)) { ! do_pr (i); ! fprintf (outfile, "\n"); } } --- 347,363 ---- if (p == NULL) { + /* We weren't given a list of PRs to check, so we do the + whole shooting match. */ for (i = index_chain; i ; i = i->next) if ((!searching && !s) || pr_matches (s, i)) { ! /* Only skip closed PRs if we aren't searching ! the state of a PR. */ ! if (skip_closed && (!s || !s->state) ! && strcmp (i->state, "closed") == 0) ! continue; ! ! if (do_pr (i)) ! fprintf (outfile, "\n"); } } *************** query_pr (p, s) *** 340,347 **** --- 366,378 ---- if (searching) { + /* Search in the problem report P for a satisfying condition. :) */ for (i = index_chain; i ; i = i->next) if ((strcmp (i->number, p) == 0) && pr_matches (s, i)) { + if (skip_closed && (!s || !s->state) + && strcmp (i->state, "closed") == 0) + continue; + do_pr (i); break; *************** query_pr (p, s) *** 350,353 **** --- 381,386 ---- else { + /* They did a plain query-pr with a list of PRs, just print + this one out. */ path = p; if (((char *) strchr (p, '/')) == NULL) *************** query_pr (p, s) *** 359,369 **** } ! print_pr (path, p, 0); ! free (path); } - - return; } } --- 392,414 ---- } ! if (path) ! { ! if (get_pr (path, p) ! && ! (skip_closed ! && strcmp (pr[STATE].value, "closed") == 0)) ! print_pr (path, p, 1); ! free (path); ! } ! else ! { ! fprintf (stderr, "%s: couldn't find PR %s\n", ! program_name, p); ! return 1; ! } } } + + return 0; } *************** main (argc, argv) *** 375,378 **** --- 420,424 ---- int optc; Index *s = (Index *) xmalloc (sizeof (Index)); + int errors = 0; program_name = (char *) basename (argv[0]); *************** main (argc, argv) *** 380,384 **** memset (s, 0, sizeof (Index)); ! while ((optc = getopt_long (argc, argv, "c:C:d:e:o:O:p:s:S:r:VFihq", long_options, (int *) 0)) != EOF) { --- 426,430 ---- memset (s, 0, sizeof (Index)); ! while ((optc = getopt_long (argc, argv, "c:C:d:e:o:O:p:Ps:S:r:VFixhq", long_options, (int *) 0)) != EOF) { *************** main (argc, argv) *** 426,429 **** --- 472,479 ---- break; + case 'P': + print_path = 1; + break; + case 's': s->state = optarg; *************** main (argc, argv) *** 448,451 **** --- 498,505 ---- break; + case 'x': + skip_closed = 1; + break; + case 'q': summary = 1; *************** main (argc, argv) *** 475,481 **** { if (! searching) ! query_pr ((char *) NULL, (Index *) NULL); else ! query_pr ((char *) NULL, s); } else --- 529,535 ---- { if (! searching) ! errors += query_pr ((char *) NULL, (Index *) NULL); else ! errors += query_pr ((char *) NULL, s); } else *************** main (argc, argv) *** 484,497 **** { found_match = 0; ! query_pr (argv[optind], searching ? s : (Index *) NULL); if ((++optind < argc) && found_match) fprintf (outfile, "\n"); } ! if (sql_format && found_match) fprintf (outfile, "\n"); } ! exit (0); } --- 538,552 ---- { found_match = 0; ! errors += query_pr (argv[optind], searching ? s : (Index *) NULL); if ((++optind < argc) && found_match) fprintf (outfile, "\n"); } ! if (found_match && (summary || sql_format)) fprintf (outfile, "\n"); } ! /* Exit non-zero if there were any troubles. */ ! exit (errors != 0); } *************** usage () *** 500,509 **** { fprintf (stderr, "\ ! Usage: %s [-iqFV] [-d directory] [-c category] [-S submitter]\n\ [-r responsible] [-s state] [-C confidential] [-e severity]\n\ ! [-p priority] [-o outfile] [--sql] [--full] [--version] [--help]\n\ ! [--category=category] [--confidential=[yes|no]] [--output=outfile]\n\ ! [--priority=level] [--responsible=person] [--severity=severity]\n\ ! [--state=state] [--submitter=submitter] [--summary] [PR]\n", program_name); exit (1); } --- 555,567 ---- { fprintf (stderr, "\ ! Usage: %s [-iqxFPV] [-d directory] [-c category] [-S submitter]\n\ [-r responsible] [-s state] [-C confidential] [-e severity]\n\ ! [-p priority] [-o outfile] [-O originator] [--sql] [--full]\n\ ! [--version] [--help] [--category=category] [--confidential=[yes|no]]\n\ ! [--output=outfile] [--originator=name] [--print-path]\n\ ! [--priority=level] [--responsible=person] [--severity=severity]\n\ ! [--state=state] [--skip-closed] [--submitter=submitter]\n\ ! [--summary] [PR]\n", ! program_name); exit (1); } diff -c2pr gnats-3.00/gnats/queue-pr.c gnats-3.01/gnats/queue-pr.c *** gnats-3.00/gnats/queue-pr.c Mon Mar 8 18:35:54 1993 --- gnats-3.01/gnats/queue-pr.c Wed Apr 14 13:31:13 1993 *************** the Free Software Foundation, 675 Mass A *** 27,34 **** #endif ! #include "queue.h" #include "config.h" #include "globals.h" #include "gnats.h" #ifndef MAXBSIZE /* FIXME - from params.h */ --- 27,42 ---- #endif ! #ifdef HAVE_UNISTD_H ! #include ! #endif ! ! #include /* FIXME */ ! #include /* FIXME: gets MAXBSIZE */ ! ! #include "gnats-dirs.h" #include "config.h" #include "globals.h" #include "gnats.h" + #include "pathmax.h" #ifndef MAXBSIZE /* FIXME - from params.h */ *************** fork_gnats (filename) *** 88,92 **** int fd; ! gnats_bin = (char *) xmalloc (strlen (GNATS_ROOT) + strlen (BINDIR) + 7); strcpy (gnats_bin, GNATS_ROOT); strcat (gnats_bin, BINDIR); --- 96,100 ---- int fd; ! gnats_bin = (char *) xmalloc (strlen (GNATS_ROOT) + strlen (BINDIR) + 9); strcpy (gnats_bin, GNATS_ROOT); strcat (gnats_bin, BINDIR); *************** drop_msg () *** 195,201 **** int fd[2]; char *tmpdir; ! char *bug_file; ! int r, w; /* XXX ssize_t */ char *buf = (char *) xmalloc (MAXBSIZE); if (queue_file) --- 203,210 ---- int fd[2]; char *tmpdir; ! char *bug_file = (char *) xmalloc (PATH_MAX); ! int r; /* XXX ssize_t */ char *buf = (char *) xmalloc (MAXBSIZE); + char *base, *new_name; if (queue_file) *************** drop_msg () *** 211,216 **** tmpdir = getenv ("TMPDIR"); if (tmpdir == NULL) ! tmpdir = "/tmp"; ! bug_file = tempnam (tmpdir, "gnats"); fd[1] = open (bug_file, O_WRONLY|O_CREAT, 0664); --- 220,226 ---- tmpdir = getenv ("TMPDIR"); if (tmpdir == NULL) ! tmpdir = "/tmp"; /* FIXME */ ! sprintf (bug_file, "%s/gnatsXXXXXX", tmpdir); ! mktemp (bug_file); fd[1] = open (bug_file, O_WRONLY|O_CREAT, 0664); *************** drop_msg () *** 220,224 **** while ((r = read (fd[0], buf, MAXBSIZE)) > 0) ! if ((w = write (fd[1], buf, r)) < 0) { if (fd[0]) --- 230,234 ---- while ((r = read (fd[0], buf, MAXBSIZE)) > 0) ! if (write (fd[1], buf, r) < 0) { if (fd[0]) *************** drop_msg () *** 241,256 **** errno = 0; ! if (rename (bug_file, queue_dir) < 0) { - char *base, *new_name; - if (errno != EXDEV) punt (1, "%s: could not rename %s into the queue dir: %s\n", program_name, bug_file, strerror (errno)); - base = basename (bug_file); - new_name = (char *) xmalloc (strlen (queue_dir) + 1 + strlen (bug_file) + 1); - sprintf (new_name, "%s/%s", queue_dir, base); - copy_file (bug_file, new_name); --- 251,263 ---- errno = 0; ! base = basename (bug_file); ! new_name = (char *) xmalloc (strlen (queue_dir) + 1 + strlen (bug_file) + 1); ! sprintf (new_name, "%s/%s", queue_dir, base); ! if (rename (bug_file, new_name) < 0) { if (errno != EXDEV) punt (1, "%s: could not rename %s into the queue dir: %s\n", program_name, bug_file, strerror (errno)); copy_file (bug_file, new_name); *************** main (argc, argv) *** 316,320 **** if (! queue_dir) { ! queue_dir = (char *) xmalloc (strlen (GNATS_ROOT) + 12); strcpy (queue_dir, GNATS_ROOT); strcat (queue_dir, "/gnats-queue"); --- 323,327 ---- if (! queue_dir) { ! queue_dir = (char *) xmalloc (strlen (GNATS_ROOT) + 13); strcpy (queue_dir, GNATS_ROOT); strcat (queue_dir, "/gnats-queue"); *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/gnats/rmcat.sh Wed Apr 14 13:31:15 1993 *************** *** 0 **** --- 1,68 ---- + #!/bin/sh + # Delete a category from GNATS. + # Copyright (C) 1993 Free Software Foundation, Inc. + # Contributed by Brendan Kehoe (brendan@cygnus.com). + # + # This file is part of GNU GNATS. + # + # GNU GNATS is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + # + # GNU GNATS is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with GNU GNATS; see the file COPYING. If not, write to + # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + + GNATS_ROOT=@GNATS_ROOT@ + GNATS_SITE=@GNATS_SITE@ + LIBDIR=@LIBDIR@ + + if [ $# -eq 0 ]; then + echo "usage: $0 category [category...]" + exit 1 + fi + + if [ ! -d $GNATS_ROOT/gnats-dist ]; then + echo "$0: No directory $GNATS_ROOT/gnats-dist!" + exit 1 + fi + + if [ ! -d $LIBDIR/gnats ]; then + echo "$0: $LIBDIR/gnats/$GNATS_SITE doesn't exist" + exit 1 + fi + + for i in $*; do + + c=`grep "^$1:" $GNATS_ROOT/gnats-adm/categories` + if [ "$c" != "" ]; then + echo "$0: category $1 is still in the categories file, please remove it." + continue + fi + if [ ! -d $GNATS_ROOT/$1 ]; then + echo "$0: no directory for category $1" + continue + fi + if [ "`ls $GNATS_ROOT/$1/*`" != "" ]; then + echo "$0: bug reports are still in $1, remove them or recategorize them." + continue + fi + echo Trying to delete $1... + if rmdir $GNATS_ROOT/$1 ; then + echo "$0: could not remove $GNATS_ROOT/$1" + continue + fi + sed -e "/^$1$/D" $GNATS_ROOT/gnats-dist/categories > $GNATS_ROOT/gnats-dist/categories.tmp + mv -f $GNATS_ROOT/gnats-dist/categories.tmp $GNATS_ROOT/gnats-dist/categories + sed -e "/^$1$/D" $LIBDIR/gnats/$GNATS_SITE > $LIBDIR/gnats/$GNATS_SITE.tmp + mv -f $LIBDIR/gnats/$GNATS_SITE.tmp $LIBDIR/gnats/$GNATS_SITE + + done + + exit 0 diff -c2pr gnats-3.00/include/ChangeLog gnats-3.01/include/ChangeLog *** gnats-3.00/include/ChangeLog Tue Mar 2 17:51:34 1993 --- gnats-3.01/include/ChangeLog Thu Apr 8 10:54:23 1993 *************** *** 1,2 **** --- 1,57 ---- + Thu Apr 8 10:53:47 1993 Ian Lance Taylor (ian@cygnus.com) + + * ansidecl.h: If no ANSI, define const to be empty. + + Thu Apr 1 09:00:10 1993 Jim Kingdon (kingdon@cygnus.com) + + * dis-asm.h: Declare a29k and i960 print_insn_*. + + * dis-asm.h: Add print_address_func and related stuff. + + * dis-asm.h (dis_asm_read_memory): Fix prototype. + + Wed Mar 31 17:40:16 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * dis-asm.h: Add print_insn_sparc. + + Wed Mar 31 17:51:42 1993 Ian Lance Taylor (ian@cygnus.com) + + * bfd.h: Updated for BFD_RELOC_MIPS_GPREL and bfd_[gs]et_gp_size + prototypes. + + Wed Mar 31 16:35:12 1993 Stu Grossman (grossman@cygnus.com) + + * dis-asm.h: (disassemble_info): Fix typo in prototype of + dis_asm_memory_error(). + + Tue Mar 30 19:09:23 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * dis-asm.h (disassembler_info): Add read_memory_func, + memory_error_func, buffer, and length. + ({GDB_,}INIT_DISASSEMBLE_INFO): Set them. + print_insn_*: Remove second argument. + + Tue Mar 30 14:48:55 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * bfd.h: Update for lma field of section. + + Tue Mar 30 12:22:55 1993 Jim Kingdon (kingdon@cygnus.com) + + * ansidecl.h: Use ANSI versions on AIX regardless of __STDC__. + + Fri Mar 19 14:49:49 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * dis-asm.h: Add h8500. + + Thu Mar 18 13:49:09 1993 Per Bothner (bothner@rtl.cygnus.com) + + * ieee-float.h: Moved from ../gdb. + * dis-asm.h: New file. Interface to dis-assembler. + + Thu Mar 11 10:52:57 1993 Fred Fish (fnf@cygnus.com) + + * demangle.h (DMGL_NO_OPTS): Add define (set to 0) to use + in place of bare 0, for readability reasons. + Tue Mar 2 17:50:11 1993 Fred Fish (fnf@cygnus.com) diff -c2pr gnats-3.00/include/ansidecl.h gnats-3.01/include/ansidecl.h *** gnats-3.00/include/ansidecl.h Mon Nov 9 23:56:25 1992 --- gnats-3.01/include/ansidecl.h Thu Apr 8 10:54:24 1993 *************** Foundation, Inc., 675 Mass Ave, Cambridg *** 25,33 **** PTR `void *' `char *' LONG_DOUBLE `long double' `double' - CONST `const' `' VOLATILE `volatile' `' SIGNED `signed' `' PTRCONST `void *const' `char *' DEFUN (name, arglist, args) --- 25,34 ---- PTR `void *' `char *' LONG_DOUBLE `long double' `double' VOLATILE `volatile' `' SIGNED `signed' `' PTRCONST `void *const' `char *' + CONST is also defined, but is obsolete. Just use const. + DEFUN (name, arglist, args) *************** Foundation, Inc., 675 Mass Ave, Cambridg *** 89,93 **** ! #ifdef __STDC__ #define PTR void * --- 90,96 ---- ! #if defined (__STDC__) || defined (_AIX) ! /* All known AIX compilers implement these things (but don't always define ! __STDC__). */ #define PTR void * *************** Foundation, Inc., 675 Mass Ave, Cambridg *** 118,121 **** --- 121,125 ---- #define NOARGS #define CONST + #define const #define VOLATILE #define SIGNED diff -c2pr gnats-3.00/include/demangle.h gnats-3.01/include/demangle.h *** gnats-3.00/include/demangle.h Tue Mar 2 17:51:32 1993 --- gnats-3.01/include/demangle.h Thu Mar 11 10:56:45 1993 *************** *** 24,27 **** --- 24,28 ---- /* Options passed to cplus_demangle (in 2nd parameter). */ + #define DMGL_NO_OPTS 0 /* For readability... */ #define DMGL_PARAMS (1 << 0) /* Include function args */ #define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */ *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/include/ieee-float.h Thu Mar 18 14:00:04 1993 *************** *** 0 **** --- 1,65 ---- + /* IEEE floating point support declarations, for GDB, the GNU Debugger. + Copyright (C) 1991 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + #if !defined (IEEE_FLOAT_H) + #define IEEE_FLOAT_H 1 + + #include "ansidecl.h" + + /* Parameters for extended float format: */ + + struct ext_format { + unsigned totalsize; /* Total size of extended number */ + unsigned signbyte; /* Byte number of sign bit */ + unsigned char signmask; /* Mask for sign bit */ + unsigned expbyte_h; /* High byte of exponent */ + unsigned expbyte_l; /* Low byte of exponent */ + unsigned manbyte_h; /* High byte of mantissa */ + unsigned manbyte_l; /* Low byte of mantissa */ + }; + + #define TOTALSIZE ext_format->totalsize + #define SIGNBYTE ext_format->signbyte + #define SIGNMASK ext_format->signmask + #define EXPBYTE_H ext_format->expbyte_h + #define EXPBYTE_L ext_format->expbyte_l + #define MANBYTE_H ext_format->manbyte_h + #define MANBYTE_L ext_format->manbyte_l + + /* Actual ext_format structs for various machines are in the *-tdep.c file + for each machine. */ + + #define EXT_EXP_NAN 0x7FFF /* Exponent value that indicates NaN */ + #define EXT_EXP_BIAS 0x3FFF /* Amount added to "true" exponent for ext */ + #define DBL_EXP_BIAS 0x3FF /* Ditto, for doubles */ + + /* Convert an IEEE extended float to a double. + FROM is the address of the extended float. + Store the double in *TO. */ + + extern void + ieee_extended_to_double PARAMS ((const struct ext_format *, char *, double *)); + + /* The converse: convert the double *FROM to an extended float + and store where TO points. */ + + extern void + double_to_ieee_extended PARAMS ((const struct ext_format *, double *, char *)); + + #endif /* defined (IEEE_FLOAT_H) */ diff -c2pr gnats-3.00/libiberty/ChangeLog gnats-3.01/libiberty/ChangeLog *** gnats-3.00/libiberty/ChangeLog Tue Mar 2 17:49:46 1993 --- gnats-3.01/libiberty/ChangeLog Fri Mar 26 12:50:38 1993 *************** *** 1,2 **** --- 1,19 ---- + Fri Mar 26 12:01:26 1993 Jim Kingdon (kingdon@cygnus.com) + + * strsignal.c: Add some AIX signals. + + Thu Mar 25 15:17:23 1993 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in (MAKEOVERRIDES): Define to be empty. + + Wed Mar 24 01:59:25 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) + + * Makefile.in: add installcheck & dvi targets + + Thu Mar 18 14:05:44 1993 Per Bothner (bothner@rtl.cygnus.com) + + * ieee-float.c: New file, moved from ../gdb (since it is + needed by ../opcode/m68k-dis.c). + Tue Mar 2 17:47:31 1993 Fred Fish (fnf@cygnus.com) diff -c2pr gnats-3.00/libiberty/Makefile.in gnats-3.01/libiberty/Makefile.in *** gnats-3.00/libiberty/Makefile.in Sat Feb 20 21:42:49 1993 --- gnats-3.01/libiberty/Makefile.in Thu Mar 25 15:18:10 1993 *************** MAKEINFO = makeinfo *** 66,69 **** --- 66,71 ---- RANLIB = ranlib + MAKEOVERRIDES = + XTRAFLAGS = *************** EXTRA_OFILES = *** 89,94 **** all: $(TARGETLIB) ! .PHONY: check ! check: --- 91,96 ---- all: $(TARGETLIB) ! .PHONY: check installcheck ! check installcheck: *************** check: *** 102,106 **** # However, the automatic configuration (in config/mh_default). # first causes it to figure out the objects missing in libc. ! info install-info clean-info: # NOTE: If you add new files to the library, edit 'functions.def' --- 104,108 ---- # However, the automatic configuration (in config/mh_default). # first causes it to figure out the objects missing in libc. ! info install-info clean-info dvi: # NOTE: If you add new files to the library, edit 'functions.def' *************** info install-info clean-info: *** 108,112 **** CFILES = alloca.c argv.c basename.c bcmp.c bcopy.c bzero.c concat.c \ cplus-dem.c fdmatch.c getcwd.c getopt.c getopt1.c getpagesize.c \ ! index.c insque.c memchr.c memcmp.c memcpy.c memmove.c memset.c \ obstack.c random.c rename.c rindex.c sigsetmask.c spaces.c \ strchr.c strdup.c strerror.c strrchr.c strsignal.c \ --- 110,115 ---- CFILES = alloca.c argv.c basename.c bcmp.c bcopy.c bzero.c concat.c \ cplus-dem.c fdmatch.c getcwd.c getopt.c getopt1.c getpagesize.c \ ! ieee-float.c index.c insque.c \ ! memchr.c memcmp.c memcpy.c memmove.c memset.c \ obstack.c random.c rename.c rindex.c sigsetmask.c spaces.c \ strchr.c strdup.c strerror.c strrchr.c strsignal.c \ *************** CFILES = alloca.c argv.c basename.c bcmp *** 114,118 **** # These are always included in the library. REQUIRED_OFILES = argv.o basename.o concat.o cplus-dem.o fdmatch.o \ ! getopt.o getopt1.o obstack.o spaces.o strerror.o strsignal.o # Do we want/need any config overrides? --- 117,121 ---- # These are always included in the library. REQUIRED_OFILES = argv.o basename.o concat.o cplus-dem.o fdmatch.o \ ! getopt.o getopt1.o ieee-float.o obstack.o spaces.o strerror.o strsignal.o # Do we want/need any config overrides? *** /dev/null Wed Apr 14 13:44:46 1993 --- gnats-3.01/libiberty/ieee-float.c Thu Mar 18 14:10:28 1993 *************** *** 0 **** --- 1,148 ---- + /* IEEE floating point support routines, for GDB, the GNU Debugger. + Copyright (C) 1991 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + #include "ieee-float.h" + #include /* ldexp */ + + /* Convert an IEEE extended float to a double. + FROM is the address of the extended float. + Store the double in *TO. */ + + void + ieee_extended_to_double (ext_format, from, to) + CONST struct ext_format *ext_format; + char *from; + double *to; + { + unsigned char *ufrom = (unsigned char *)from; + double dto; + unsigned long mant0, mant1, exponent; + + memcpy (&mant0, &from[MANBYTE_H], 4); + memcpy (&mant1, &from[MANBYTE_L], 4); + exponent = ((ufrom[EXPBYTE_H] & (unsigned char)~SIGNMASK) << 8) | ufrom[EXPBYTE_L]; + + #if 0 + /* We can't do anything useful with a NaN anyway, so ignore its + difference. It will end up as Infinity or something close. */ + if (exponent == EXT_EXP_NAN) { + /* We have a NaN source. */ + dto = 0.123456789; /* Not much else useful to do -- we don't know if + the host system even *has* NaNs, nor how to + generate an innocuous one if it does. */ + } else + #endif + if (exponent == 0 && mant0 == 0 && mant1 == 0) { + dto = 0; + } else { + /* Build the result algebraically. Might go infinite, underflow, etc; + who cares. */ + mant0 |= 0x80000000; + dto = ldexp ((double)mant0, exponent - EXT_EXP_BIAS - 31); + dto += ldexp ((double)mant1, exponent - EXT_EXP_BIAS - 31 - 32); + if (ufrom[EXPBYTE_H] & SIGNMASK) /* If negative... */ + dto = -dto; /* ...negate. */ + } + *to = dto; + } + + /* The converse: convert the double *FROM to an extended float + and store where TO points. */ + + void + double_to_ieee_extended (ext_format, from, to) + CONST struct ext_format *ext_format; + double *from; + char *to; + { + double dfrom = *from; + unsigned long twolongs[2]; + unsigned long mant0, mant1, exponent; + unsigned char tobytes[8]; + + memset (to, 0, TOTALSIZE); + if (dfrom == 0) + return; /* Result is zero */ + if (dfrom != dfrom) { + /* From is NaN */ + to[EXPBYTE_H] = (unsigned char)(EXT_EXP_NAN >> 8); + to[EXPBYTE_L] = (unsigned char)EXT_EXP_NAN; + to[MANBYTE_H] = 1; /* Be sure it's not infinity, but NaN value is irrel */ + return; /* Result is NaN */ + } + if (dfrom < 0) + to[SIGNBYTE] |= SIGNMASK; /* Set negative sign */ + /* How to tell an infinity from an ordinary number? FIXME-someday */ + + /* The following code assumes that the host has IEEE doubles. FIXME-someday. + It also assumes longs are 32 bits! FIXME-someday. */ + memcpy (twolongs, from, 8); + memcpy (tobytes, from, 8); + #if HOST_BYTE_ORDER == BIG_ENDIAN + exponent = ((tobytes[1] & 0xF0) >> 4) | (tobytes[0] & 0x7F) << 4; + mant0 = (twolongs[0] << 11) | twolongs[1] >> 21; + mant1 = (twolongs[1] << 11); + #else + exponent = ((tobytes[6] & 0xF0) >> 4) | (tobytes[7] & 0x7F) << 4; + mant0 = (twolongs[1] << 11) | twolongs[0] >> 21; + mant1 = (twolongs[0] << 11); + #endif + + /* Fiddle with leading 1-bit, implied in double, explicit in extended. */ + if (exponent == 0) + mant0 &= 0x7FFFFFFF; + else + mant0 |= 0x80000000; + + exponent -= DBL_EXP_BIAS; /* Get integer exp */ + exponent += EXT_EXP_BIAS; /* Offset for extended */ + + /* OK, now store it in extended format. */ + to[EXPBYTE_H] |= (unsigned char)(exponent >> 8); /* Retain sign */ + to[EXPBYTE_L] = (unsigned char) exponent; + + memcpy (&to[MANBYTE_H], &mant0, 4); + memcpy (&to[MANBYTE_L], &mant1, 4); + } + + + #ifdef IEEE_DEBUG + + /* Test some numbers to see that extended/double conversion works for them. */ + + ieee_test (n) + int n; + { + union { double d; int i[2]; } di; + double result; + int i; + char exten[16]; + extern struct ext_format ext_format_68881; + + for (i = 0; i < n; i++) { + di.i[0] = (random() << 16) | (random() & 0xffff); + di.i[1] = (random() << 16) | (random() & 0xffff); + double_to_ieee_extended (&ext_format_68881, &di.d, exten); + ieee_extended_to_double (&ext_format_68881, exten, &result); + if (di.d != result) + printf ("Differ: %x %x %g => %x %x %g\n", di.d, di.d, result, result); + } + } + + #endif diff -c2pr gnats-3.00/libiberty/strsignal.c gnats-3.01/libiberty/strsignal.c *** gnats-3.00/libiberty/strsignal.c Thu Feb 18 23:01:32 1993 --- gnats-3.01/libiberty/strsignal.c Fri Mar 26 13:04:56 1993 *************** static const struct signal_info signal_t *** 193,196 **** --- 193,214 ---- SIGLWP, "SIGLWP", "Signal LWP", #endif + #if defined (SIGDANGER) + SIGDANGER, "SIGDANGER", "Swap space dangerously low", + #endif + #if defined (SIGGRANT) + SIGGRANT, "SIGGRANT", "Monitor mode granted", + #endif + #if defined (SIGRETRACT) + SIGRETRACT, "SIGRETRACT", "Need to relinguish monitor mode", + #endif + #if defined (SIGMSG) + SIGMSG, "SIGMSG", "Monitor mode data available", + #endif + #if defined (SIGSOUND) + SIGSOUND, "SIGSOUND", "Sound completed", + #endif + #if defined (SIGSAK) + SIGSAK, "SIGSAK", "Secure attention", + #endif 0, NULL, NULL }; diff -c2pr gnats-3.00/send-pr/ChangeLog gnats-3.01/send-pr/ChangeLog *** gnats-3.00/send-pr/ChangeLog Mon Mar 8 18:36:05 1993 --- gnats-3.01/send-pr/ChangeLog Wed Apr 14 13:31:48 1993 *************** *** 1,2 **** --- 1,55 ---- + Tue Apr 13 16:52:24 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * Makefile.in (all-gnats): Add rule, same as install-norm; hack for + now to make top-level builds work that don't pass GNATS=foo down + because they don't need all of GNATS. + + Wed Apr 7 13:41:04 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * send-pr.sh (ORGANIZATION): If they don't have an ORGANIZATION + environment variable, then try for DEFAULT_ORGANIZATION, then + $HOME/.organization, before going for their .signature. + + * Makefile.in (install-sid): Use `tmp-inst-sid' instead of + `tmp-install-sid' to avoid filename length limits. + (DEFAULT_ORGANIZATION): New variable. + (send-pr): Substitute it. + (stamp-gnats): Substitute DEFAULT_ORGANIZATION in. + + Tue Mar 30 16:00:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * send-pr.sh (PRINT_INTERN): Add missing `$'. + + Mon Mar 29 16:46:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * install-sid.sh (traps): Add them in. + + Thu Mar 25 17:01:43 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * send-pr.sh (ORIGINATOR): Look in the NIS maps if they've got + them. In any case, strip off anything following a comma, since + they might have phone nos or other info. + + Wed Mar 24 17:56:15 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) + + * Makefile.in: define MAKEINFO, define & use TEXI2DVI + + Fri Mar 19 17:44:01 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * send-pr-el.in (send-pr-start-up): Check that send-pr-mode worked + (aka, running send-pr worked). + (send-pr-mode): Make sure the category list was set. + (gnats-set-variable-from-shell): Instead of using a temp buffer, + refuse to continue if send-pr couldn't give us a valid categories + list. This will change when the send-pr and gnats elisp stuff are + rationalized properly. + + * send-pr.sh (editing the PR): Use EDIT, not EDITOR. + (SUBMITTER unknown): Fix the message. + + Mon Mar 15 14:31:58 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * send-pr.sh (FROM, REPLY_TO): Check for LOGNAME then USER. + Sat Mar 6 15:26:37 1993 Brendan Kehoe (brendan@lisa.cygnus.com) diff -c2pr gnats-3.00/send-pr/Makefile.in gnats-3.01/send-pr/Makefile.in *** gnats-3.00/send-pr/Makefile.in Mon Mar 8 18:36:07 1993 --- gnats-3.01/send-pr/Makefile.in Wed Apr 14 13:31:49 1993 *************** GNATS_ADDR = *** 31,34 **** --- 31,37 ---- DEFAULT_RELEASE = + # The default organization for this send-pr. + DEFAULT_ORGANIZATION = + # The default GNATS site for send-pr. GNATS_SITE = *************** RANLIB = @RANLIB@ *** 45,48 **** --- 48,54 ---- TEXIDIR = $(srcdir)/../texinfo + MAKEINFO = makeinfo + TEXI2DVI = texi2dvi + INSTALL = cp INSTALL_PROGRAM = $(INSTALL) *************** send-pr: send-pr.sh Makefile *** 97,100 **** --- 103,107 ---- -e 's,@GNATS_ADDR@,$(GNATS_ADDR),' \ -e 's,@GNATS_SITE@,$(GNATS_SITE),' \ + -e "s%@DEFAULT_ORGANIZATION@%$(DEFAULT_ORGANIZATION)%" \ -e "s,@DEFAULT_RELEASE@,$(DEFAULT_RELEASE)," \ -e 's,@LIBDIR@,$(libdir),' $(srcdir)/send-pr.sh > tmp-send-pr *************** send-pr: send-pr.sh Makefile *** 104,109 **** install-sid: install-sid.sh Makefile sed -e 's,@BINDIR@,$(bindir),g' \ ! -e 's,@VERSION@,$(VERSION),g' $(srcdir)/install-sid.sh > tmp-install-sid ! mv tmp-install-sid install-sid chmod 755 install-sid --- 111,116 ---- install-sid: install-sid.sh Makefile sed -e 's,@BINDIR@,$(bindir),g' \ ! -e 's,@VERSION@,$(VERSION),g' $(srcdir)/install-sid.sh > tmp-inst-sid ! mv tmp-inst-sid install-sid chmod 755 install-sid *************** install: $(GNATS) *** 120,124 **** install-tools: install-norm install-gnats: install-norm install-gnats-dist ! install-norm: if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; fi $(INSTALL_PROGRAM) send-pr $(bindir) --- 127,133 ---- install-tools: install-norm install-gnats: install-norm install-gnats-dist ! # We have all-gnats here for builds with don't pass GNATS=foo down, and ! # rely upon the default from the top-level Makefile. ! install-norm all-gnats: if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; fi $(INSTALL_PROGRAM) send-pr $(bindir) *************** send-pr.info: $(srcdir)/send-pr.texi *** 199,205 **** send-pr.dvi: $(srcdir)/send-pr.texi ! TEXINPUTS=$(TEXIDIR):.:$$TEXINPUTS tex $(srcdir)/send-pr.texi ! texindex send-pr.?? ! TEXINPUTS=$(TEXIDIR):.:$$TEXINPUTS tex $(srcdir)/send-pr.texi # When building GNATS, this target is used to communicate information --- 208,212 ---- send-pr.dvi: $(srcdir)/send-pr.texi ! TEXINPUTS=.:$(srcdir):$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/send-pr.texi # When building GNATS, this target is used to communicate information *************** stamp-gnats: ../gnats/Makefile *** 212,215 **** --- 219,223 ---- -e 's,^GNATS_SITE =.*,GNATS_SITE = $(GNATS_SITE),' \ -e 's,^DEFAULT_RELEASE =.*,DEFAULT_RELEASE = $(DEFAULT_RELEASE),' \ + -e 's%^DEFAULT_ORGANIZATION =.*%DEFAULT_ORGANIZATION = $(DEFAULT_ORGANIZATION)%' \ -e 's,^VERSION =.*,VERSION = $(VERSION),' Makefile > Makefile.tmp mv Makefile.tmp Makefile diff -c2pr gnats-3.00/send-pr/install-sid.sh gnats-3.01/send-pr/install-sid.sh *** gnats-3.00/send-pr/install-sid.sh Mon Mar 8 18:36:10 1993 --- gnats-3.01/send-pr/install-sid.sh Wed Apr 14 13:31:52 1993 *************** else *** 57,62 **** fi ! #trap 'rm -f $TEMP ; exit 0' 0 ! #trap 'echo "$COM: Aborting ..."; rm -f $TEMP ; exit 1' 1 2 3 13 15 sed -e "s/^SUBMITTER=.*/SUBMITTER=${SUBMITTER}/" $SPPATH > $TEMP --- 57,62 ---- fi ! trap 'rm -f $TEMP ; exit 0' 0 ! trap 'echo "$COM: Aborting ..."; rm -f $TEMP ; exit 1' 1 2 3 13 15 sed -e "s/^SUBMITTER=.*/SUBMITTER=${SUBMITTER}/" $SPPATH > $TEMP diff -c2pr gnats-3.00/send-pr/send-pr-el.in gnats-3.01/send-pr/send-pr-el.in *** gnats-3.00/send-pr/send-pr-el.in Mon Mar 8 18:36:11 1993 --- gnats-3.01/send-pr/send-pr-el.in Wed Apr 14 13:31:53 1993 *************** to send the PR with `send-pr -f -'." *** 158,180 **** (shell-command "send-pr -P" t) (set-buffer-modified-p nil) ! (send-pr-mode) ! (switch-to-buffer send-pr-buffer) ! (gnats-completing-read-and-replace ">Category:" ! gnats-categories gnats-default-category t) ! (gnats-completing-read-and-replace ">Confidential:" ! gnats-confidential gnats-default-confidential t) ! (gnats-completing-read-and-replace ">Severity:" ! gnats-severities gnats-default-severity t) ! (gnats-completing-read-and-replace ">Priority:" ! gnats-priorities gnats-default-priority t) ! (gnats-completing-read-and-replace ">Class:" ! gnats-classes gnats-default-class t) ! (gnats-completing-read-and-replace ">Release:" ! gnats-releases gnats-default-release) ! (message ! (substitute-command-keys "To send the problem report use: \\[do-send-pr]")) ! (goto-char (point-min)) ! (re-search-forward "^Subject:") ! (forward-char)) (defun do-send-pr () --- 158,184 ---- (shell-command "send-pr -P" t) (set-buffer-modified-p nil) ! (if (null (send-pr-mode)) ! (progn ! (kill-buffer (current-buffer)) ! (kill-buffer (get-buffer send-pr-err-buffer))) ! (progn ! (switch-to-buffer send-pr-buffer) ! (gnats-completing-read-and-replace ">Category:" ! gnats-categories gnats-default-category t) ! (gnats-completing-read-and-replace ">Confidential:" ! gnats-confidential gnats-default-confidential t) ! (gnats-completing-read-and-replace ">Severity:" ! gnats-severities gnats-default-severity t) ! (gnats-completing-read-and-replace ">Priority:" ! gnats-priorities gnats-default-priority t) ! (gnats-completing-read-and-replace ">Class:" ! gnats-classes gnats-default-class t) ! (gnats-completing-read-and-replace ">Release:" ! gnats-releases gnats-default-release) ! (message ! (substitute-command-keys "To send the problem report use: \\[do-send-pr]")) ! (goto-char (point-min)) ! (re-search-forward "^Subject:") ! (forward-char)))) (defun do-send-pr () *************** if it is not nil." *** 274,286 **** (gnats-patch-exec-path) (gnats-set-categories) ! (put 'send-pr-mode 'mode-class 'special) ! (kill-all-local-variables) ! (setq major-mode 'send-pr-mode) ! (setq mode-name "send-pr") ! (use-local-map send-pr-mode-map) ! (set-syntax-table text-mode-syntax-table) ! (setq local-abbrev-table text-mode-abbrev-table) ! (setq buffer-offer-save t) ! (run-hooks 'send-pr-mode-hook)) (if send-pr-mode-map --- 278,294 ---- (gnats-patch-exec-path) (gnats-set-categories) ! (if (null gnats-categories) ! nil ! (progn ! (put 'send-pr-mode 'mode-class 'special) ! (kill-all-local-variables) ! (setq major-mode 'send-pr-mode) ! (setq mode-name "send-pr") ! (use-local-map send-pr-mode-map) ! (set-syntax-table text-mode-syntax-table) ! (setq local-abbrev-table text-mode-abbrev-table) ! (setq buffer-offer-save t) ! (run-hooks 'send-pr-mode-hook) ! t))) (if send-pr-mode-map *************** Uses `send-pr-err-buffer'." *** 502,506 **** ;; (if (eq (symbol-value variable) nil) ! (let ((err-buffer (get-buffer-create send-pr-err-buffer))) (save-excursion (set-buffer err-buffer) --- 510,514 ---- ;; (if (eq (symbol-value variable) nil) ! (let ((err-buffer (get-buffer-create send-pr-err-buffer))) (save-excursion (set-buffer err-buffer) *************** Uses `send-pr-err-buffer'." *** 513,521 **** (goto-char (point-min)) (set variable (read err-buffer))) ! (error ! (with-output-to-temp-buffer err-buffer ! (format "%s: %s" (car var) (cdr (cdr var)))) ! (sit-for 3) ! (bury-buffer))) (erase-buffer))))) --- 521,525 ---- (goto-char (point-min)) (set variable (read err-buffer))) ! (setq variable nil)) (erase-buffer))))) diff -c2pr gnats-3.00/send-pr/send-pr.input gnats-3.01/send-pr/send-pr.input *** gnats-3.00/send-pr/send-pr.input Mon Mar 8 15:32:16 1993 --- gnats-3.01/send-pr/send-pr.input Tue Apr 13 18:31:47 1993 *************** Complete this field with a terse descrip *** 144,148 **** @item From: Usually supplied automatically by your mailer; should contain your ! electronic mail address. @item Reply-To: --- 144,149 ---- @item From: Usually supplied automatically by your mailer; should contain your ! electronic mail address. (This is found via the environment variable ! @code{LOGNAME}, or @code{USER} if @code{LOGNAME} is not present.) @item Reply-To: *************** field.) *** 199,211 **** @cindex @samp{Originator} field (@sc{String}) Your real name. The default is the value of the ! environment variable @code{NAME}. @item >Organization: @cindex @samp{Organization} field ! (@sc{Text}) The address of your organization. The default value is the ! contents of the environment variable @code{ORGANIZATION}, or the ! contents of the file @file{.signature} in your home directory if ! @code{ORGANIZATION} isn't set. @item >Confidential: @cindex @samp{Confidential} field --- 200,230 ---- @cindex @samp{Originator} field (@sc{String}) Your real name. The default is the value of the ! environment variable @code{NAME}; if this is not present, the contents ! of the file @file{.fullname} in your home directory are used. If ! neither of these is present, the field is left blank. @item >Organization: @cindex @samp{Organization} field ! (@sc{Text}) The name of your organization. The default value is the ! contents of the environment variable @code{ORGANIZATION}; if this ! variable is not set, the information is sought in the following order: + @itemize @bullet + @item + if @code{DEFAULT_ORGANIZATION} was set when your local @code{send-pr} + was installed, this value is used; otherwise, + + @item + if your home directory contains the file @file{.organization}, its + contents are used; otherwise, + + @item + if your home directory contains the file @file{.signature}, its contents + are used; otherwise, + + @item + the field is blank by default. + @end itemize + @item >Confidential: @cindex @samp{Confidential} field *************** and we're greeted with the following scr *** 1021,1025 **** @cartouche @smallexample - @group SEND-PR: -*- text -*- SEND-PR: Lines starting with `SEND-PR' will be removed --- 1040,1043 ---- *************** Architecture: sun4 *** 1076,1080 **** @end iftex >Category: other[] - @end group @end smallexample @end cartouche --- 1094,1097 ---- diff -c2pr gnats-3.00/send-pr/send-pr.sh gnats-3.01/send-pr/send-pr.sh *** gnats-3.00/send-pr/send-pr.sh Mon Mar 8 18:36:15 1993 --- gnats-3.01/send-pr/send-pr.sh Wed Apr 14 13:31:56 1993 *************** MAIL_AGENT=/bin/mail *** 42,45 **** --- 42,48 ---- DEFAULT_RELEASE="@DEFAULT_RELEASE@" + # The default organization. + DEFAULT_ORGANIZATION="@DEFAULT_ORGANIZATION@" + # The default site to look for. GNATS_SITE=@GNATS_SITE@ *************** if [ -z "$HOSTNAME" ]; then *** 57,62 **** fi ! FROM="$LOGNAME@$HOSTNAME" ! REPLY_TO="$LOGNAME@$HOSTNAME" # Find out the name of the originator of this PR. --- 60,73 ---- fi ! if [ -z "$LOGNAME" -a -n "$USER" ]; then ! LOGNAME=$USER ! fi ! if [ -z "$LOGNAME" ]; then ! FROM= ! REPLY_TO= ! else ! FROM="$LOGNAME@$HOSTNAME" ! REPLY_TO="$LOGNAME@$HOSTNAME" ! fi # Find out the name of the originator of this PR. *************** if [ -n "$NAME" ]; then *** 65,70 **** elif [ -f $HOME/.fullname ]; then ORIGINATOR="`sed -e '1q' $HOME/.fullname`" ! else ! ORIGINATOR="`grep '^$LOGNAME:' /etc/passwd | cut -f5 -d':'`" fi --- 76,87 ---- elif [ -f $HOME/.fullname ]; then ORIGINATOR="`sed -e '1q' $HOME/.fullname`" ! elif [ -f /bin/domainname ]; then ! if [ "`/bin/domainname`" != "" -a -f /usr/bin/ypcat ]; then ! ORIGINATOR="`/usr/bin/ypcat passwd | cat - /etc/passwd | grep '^$LOGNAME:' /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//'`" ! fi ! fi ! ! if [ "$ORIGINATOR" = "" ]; then ! ORIGINATOR="`grep '^$LOGNAME:' /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//'`" fi *************** if [ -n "$ORGANIZATION" ]; then *** 74,78 **** fi else ! if [ -f $HOME/.signature ]; then ORGANIZATION="`cat $HOME/.signature`" fi --- 91,99 ---- fi else ! if [ -n "$DEFAULT_ORGANIZATION" ]; then ! ORGANIZATION="$DEFAULT_ORGANIZATION" ! elif [ -f $HOME/.organization ]; then ! ORGANIZATION="`cat $HOME/.organization`" ! elif [ -f $HOME/.signature ]; then ORGANIZATION="`cat $HOME/.signature`" fi *************** if [ "$SUBMITTER" = "unknown" -a -z "$RE *** 151,156 **** cat << '__EOF__' It seems that send-pr is not installed with your unique submitter-id. ! ! FIXME This message should be written. __EOF__ exit 1 --- 172,177 ---- cat << '__EOF__' It seems that send-pr is not installed with your unique submitter-id. ! Please use the program install-sid to modify send-pr to include your ! ID with each report you submit. __EOF__ exit 1 *************** __EOF__ *** 291,295 **** fi ! if [ "$PRINT" = true -o "PRINT_INTERN" = true ]; then cat $TEMP exit 0 --- 312,316 ---- fi ! if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then cat $TEMP exit 0 *************** __EOF__ *** 298,302 **** chmod u+w $TEMP if [ -z "$REQUEST_ID" ]; then ! eval $EDITOR $TEMP else ed -s $TEMP << '__EOF__' --- 319,323 ---- chmod u+w $TEMP if [ -z "$REQUEST_ID" ]; then ! eval $EDIT $TEMP else ed -s $TEMP << '__EOF__' diff -c2pr gnats-3.00/send-pr/send-pr.texi gnats-3.01/send-pr/send-pr.texi *** gnats-3.00/send-pr/send-pr.texi Mon Mar 8 18:36:15 1993 --- gnats-3.01/send-pr/send-pr.texi Wed Apr 14 13:31:56 1993 *************** *** 10,14 **** @set NAMELC gnats @c version number ! @set VERSION 3.00 @ifinfo --- 10,14 ---- @set NAMELC gnats @c version number ! @set VERSION 3.01 @ifinfo diff -c2pr gnats-3.00/test-build.mk gnats-3.01/test-build.mk *** gnats-3.00/test-build.mk Tue Mar 2 22:47:53 1993 --- gnats-3.01/test-build.mk Sat Apr 10 12:05:20 1993 *************** CVS_MODULE := latest *** 44,48 **** ### Historically, this was identical to CVS_TAG. This is changing. ! RELEASE_TAG := latest-930302 ### Historically, binaries were installed here. This is changing. --- 44,48 ---- ### Historically, this was identical to CVS_TAG. This is changing. ! RELEASE_TAG := latest-930319 ### Historically, binaries were installed here. This is changing. *************** release_root := $(ROOTING)/$(RELEASE_TAG *** 53,58 **** TIME := time ! GCC := gcc -O -g ! GNUC := "CC=$(GCC)" CFLAGS := -g GNU_MAKE := /usr/latest/bin/make -w --- 53,58 ---- TIME := time ! GCC := gcc -O ! GNUC := CC="$(GCC)" CFLAGS := -g GNU_MAKE := /usr/latest/bin/make -w *************** FLAGS_TO_PASS := \ *** 69,73 **** "TIME=$(TIME)" \ "MF=$(MF)" \ ! "host=$(host)" ifneq '$(CC)' 'cc' --- 69,74 ---- "TIME=$(TIME)" \ "MF=$(MF)" \ ! "host=$(host)" \ ! "RELEASE_TAG=$(RELEASE_TAG)" ifneq '$(CC)' 'cc' *************** endif *** 76,83 **** ! prefixes = --prefix=$(release_root) --exec_prefix=$(release_root)/H-$(host) relbindir = $(release_root)/H-$(host)/bin - ### general config stuff WORKING_DIR := $(host)-objdir --- 77,83 ---- ! prefixes = --prefix=$(release_root) --exec-prefix=$(release_root)/H-$(host) relbindir = $(release_root)/H-$(host)/bin ### general config stuff WORKING_DIR := $(host)-objdir *************** ifdef target *** 100,107 **** ## arch = $(host)-x-$(target) ! config = $(host) -target=$(target) ! NATIVEDIR := $(arch)-native-objdir ! CYGNUSDIR := $(arch)-cygnus-objdir ! LATESTDIR := $(arch)-latest-objdir FLAGS_TO_PASS := $(FLAGS_TO_PASS) "target=$(target)" --- 100,104 ---- ## arch = $(host)-x-$(target) ! config = -target=$(target) FLAGS_TO_PASS := $(FLAGS_TO_PASS) "target=$(target)" *************** all: do-native do-latest *** 109,120 **** --- 106,137 ---- build-all: build-native build-latest + ifeq ($(target),mips-idt-ecoff) + configargs = -with-gnu-as + else + configargs = + endif + else ## ## This is a native compilation ## + arch = $(host) + config = all: $(host)-stamp-3stage-done #all: in-place do1 do2 do3 comparison + + ifeq ($(subst mips-sgi-irix4,mips-dec-ultrix,$(host)),mips-dec-ultrix) + configargs = -with-gnu-as + else + configargs = + endif + endif + NATIVEDIR := $(arch)-native-objdir + CYGNUSDIR := $(arch)-cygnus-objdir + LATESTDIR := $(arch)-latest-objdir + + everything: do-cross #everything: in-place do1 do2 do3 comparison do-cygnus *************** $(arch)-stamp-native-built: $(host)-stam *** 147,151 **** $(arch)-stamp-native-configured: $(host)-stamp-holes [ -d $(NATIVEDIR) ] || mkdir $(NATIVEDIR) ! $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 164,168 ---- $(arch)-stamp-native-configured: $(host)-stamp-holes [ -d $(NATIVEDIR) ] || mkdir $(NATIVEDIR) ! $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** $(arch)-stamp-cygnus-built: $(host)-sta *** 178,182 **** $(arch)-stamp-cygnus-configured: $(host)-stamp-holes [ -d $(CYGNUSDIR) ] || mkdir $(CYGNUSDIR) ! $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 195,199 ---- $(arch)-stamp-cygnus-configured: $(host)-stamp-holes [ -d $(CYGNUSDIR) ] || mkdir $(CYGNUSDIR) ! $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(GNUC) $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** $(arch)-stamp-latest: *** 189,193 **** touch $(arch)-stamp-latest ! $(arch)-stamp-latest-installed: $(arch)-stamp-latest-checked $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install-info --- 206,210 ---- touch $(arch)-stamp-latest ! $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install-info *************** $(arch)-stamp-latest-built: $(arch)-stam *** 205,210 **** $(arch)-stamp-latest-configured: [ -d $(LATESTDIR) ] || mkdir $(LATESTDIR) ! $(SET_LATEST_PATH) cd $(LATESTDIR) ; \ ! $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 222,226 ---- $(arch)-stamp-latest-configured: [ -d $(LATESTDIR) ] || mkdir $(LATESTDIR) ! $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(GNUC) $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** $(host)-stamp-in-place-built: $(host)-st *** 240,244 **** $(host)-stamp-in-place-configured: $(host)-stamp-in-place-cp ! cd $(INPLACEDIR) ; $(TIME) ./configure $(host) -v $(prefixes) touch $@ --- 256,260 ---- $(host)-stamp-in-place-configured: $(host)-stamp-in-place-cp ! cd $(INPLACEDIR) ; $(TIME) ./configure $(config) -v $(prefixes) $(configargs) touch $@ *************** $(host)-stamp-stage1-installed: $(host)- *** 276,280 **** $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install-info host=$(host) ifeq ($(host),rs6000-ibm-aix) ! -rm -f $(relbindir)/make endif touch $@ --- 292,296 ---- $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install-info host=$(host) ifeq ($(host),rs6000-ibm-aix) ! rm $(relbindir)/make endif touch $@ *************** $(host)-stamp-stage1-configured: *** 292,296 **** [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; \ ! $(TIME) ../$(TREE)/configure $(host) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 308,312 ---- [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; \ ! $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** $(host)-stamp-stage2-configured: *** 326,330 **** [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ ! $(TIME) ../$(TREE)/configure $(host) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 342,346 ---- [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ ! $(GNUC) $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** $(host)-stamp-stage3-configured: *** 360,364 **** [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ ! $(TIME) ../$(TREE)/configure $(host) -v --srcdir=../$(TREE) $(prefixes) touch $@ --- 376,380 ---- [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ ! $(GNUC) $(TIME) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) touch $@ *************** HOLES := \ *** 410,413 **** --- 426,430 ---- tr \ true \ + uname \ uudecode \ wc \ *************** ifeq (sparc-sun-solaris2,$(host)) *** 425,441 **** SET_NATIVE_HOLES := SHELL=sh ; PATH=/opt/SUNWspro/bin:`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; HOLE_DIRS := /usr/ccs/bin ! CC_HOLE := endif - ### rs6000 as is busted. We cache a patched version in unsupported. - ifeq ($(host),rs6000-ibm-aix) - AS_HOLE := as - else - AS_HOLE := - endif - ### These things are also needed by a three-stage, but in this case, the GNU version of the tool is required. PARTIAL_HOLES := \ - $(AS_HOLE) \ $(MAKE_HOLE) \ $(CC_HOLE) \ --- 442,451 ---- SET_NATIVE_HOLES := SHELL=sh ; PATH=/opt/SUNWspro/bin:`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; HOLE_DIRS := /usr/ccs/bin ! CC_HOLE := ! NUKEM := cc endif ### These things are also needed by a three-stage, but in this case, the GNU version of the tool is required. PARTIAL_HOLES := \ $(MAKE_HOLE) \ $(CC_HOLE) \ *************** $(host)-stamp-holes: *** 495,498 **** --- 505,511 ---- esac ; \ done + ifdef NUKEM + cd $(HOLESDIR); rm -f $(NUKEM) + endif touch $@ diff -c2pr gnats-3.00/texinfo/texinfo.tex gnats-3.01/texinfo/texinfo.tex *** gnats-3.00/texinfo/texinfo.tex Fri Feb 26 14:58:45 1993 --- gnats-3.01/texinfo/texinfo.tex Tue Mar 16 18:20:46 1993 *************** where each line of input produces a line *** 558,561 **** --- 558,562 ---- \let\ref = \relax \let\xref = \relax + \let\printindex = \relax \let\pxref = \relax \let\settitle = \relax