#!/bin/sh # This is a shell archive (produced by GNU sharutils 4.2c). # To extract the files from this archive, save it to some FILE, remove # everything before the `!/bin/sh' line above, then type `sh FILE'. # # Made on 1999-10-21 10:09 MDT by . # Source directory was `/export/home/0074/sy/beebe/tex/bibparse/bibparse-1.04'. # # Existing files will *not* be overwritten unless `-c' is specified. # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 1762 -rwxr-xr-x BUILD-BIBPARSE.sh # 4249 -rw-r--r-- ChangeLog # 21072 -rw-r--r-- Makefile.in # 34797 -rw-r--r-- README # 76322 -rw-r--r-- README.html # 202 -rw-r--r-- acconfig.h # 338 -rw-r--r-- args.h # 987 -rw-r--r-- bibdup.awk # 554 -rwxr-xr-x bibdup.sin # 4316 -rw-r--r-- bibdup.man # 779 -rw-r--r-- bibfiles.sok # 457 -r--r--r-- biblex.dat # 13061 -rw-r--r-- biblex.l # 7101 -rw-r--r-- biblex.man # 1622 -r--r--r-- biblex.ok # 15645 -rw-r--r-- bibparse.man # 13927 -rw-r--r-- bibparse.y # 9604 -rw-r--r-- bibunlex.l # 4123 -rw-r--r-- bibunlex.man # 1418 -rw-r--r-- bibyydcl.h # 82621 -rwxrwxr-x configure # 6234 -rw-r--r-- configure.in # 516 -rw-r--r-- config.hin # 1223 -rw-r--r-- lexmain.c # 1528 -rw-r--r-- token.h # 2418 -r--r--r-- test/check.bat # 1599 -r-xr-xr-x test/docheck.sh # 457 -r--r--r-- test/lex001.in # 331 -r--r--r-- test/lex002.in # 457 -r--r--r-- test/lex003.in # 427150 -r--r--r-- test/lex004.in # 81416 -r--r--r-- test/lex005.in # 0 -r--r--r-- test/okay/lex001.err # 1682 -r--r--r-- test/okay/lex001.out # 0 -r--r--r-- test/okay/lex002.err # 896 -r--r--r-- test/okay/lex002.out # 0 -r--r--r-- test/okay/lex003.err # 3576 -r--r--r-- test/okay/lex003.out # 0 -r--r--r-- test/okay/lex004.err # 1369101 -r--r--r-- test/okay/lex004.out # 0 -r--r--r-- test/okay/lex005.err # 242991 -r--r--r-- test/okay/lex005.out # 0 -r--r--r-- test/okay/parse001.err # 0 -r--r--r-- test/okay/parse001.out # 0 -r--r--r-- test/okay/parse002.err # 0 -r--r--r-- test/okay/parse002.out # 0 -r--r--r-- test/okay/parse003.err # 0 -r--r--r-- test/okay/parse003.out # 1298 -r--r--r-- test/okay/parse004.err # 0 -r--r--r-- test/okay/parse004.out # 0 -r--r--r-- test/okay/parse005.err # 0 -r--r--r-- test/okay/parse005.out # 84 -r--r--r-- test/okay/parse006.err # 0 -r--r--r-- test/okay/parse006.out # 55 -r--r--r-- test/okay/parse007.err # 0 -r--r--r-- test/okay/parse007.out # 0 -r--r--r-- test/okay/parse008.err # 0 -r--r--r-- test/okay/parse008.out # 0 -r--r--r-- test/okay/parse009.err # 0 -r--r--r-- test/okay/parse009.out # 0 -r--r--r-- test/okay/parse010.err # 0 -r--r--r-- test/okay/parse010.out # 55 -r--r--r-- test/okay/parse011.err # 0 -r--r--r-- test/okay/parse011.out # 55 -r--r--r-- test/okay/parse012.err # 0 -r--r--r-- test/okay/parse012.out # 0 -r--r--r-- test/okay/parse013.err # 0 -r--r--r-- test/okay/parse013.out # 0 -r--r--r-- test/okay/parse014.err # 0 -r--r--r-- test/okay/parse014.out # 0 -r--r--r-- test/okay/parse015.err # 0 -r--r--r-- test/okay/parse015.out # 0 -r--r--r-- test/okay/unlex001.err # 401 -r--r--r-- test/okay/unlex001.out # 0 -r--r--r-- test/okay/unlex002.err # 350 -r--r--r-- test/okay/unlex002.out # 0 -r--r--r-- test/okay/unlex003.err # 522 -r--r--r-- test/okay/unlex003.out # 0 -r--r--r-- test/okay/unlex004.err # 387933 -r--r--r-- test/okay/unlex004.out # 0 -r--r--r-- test/okay/unlex005.err # 74532 -r--r--r-- test/okay/unlex005.out # 1682 -r--r--r-- test/parse001.in # 896 -r--r--r-- test/parse002.in # 3576 -r--r--r-- test/parse003.in # 1369101 -r--r--r-- test/parse004.in # 242991 -r--r--r-- test/parse005.in # 275 -r--r--r-- test/parse006.in # 12 -r--r--r-- test/parse007.in # 311 -r--r--r-- test/parse008.in # 59076 -r--r--r-- test/parse009.in # 4170 -r--r--r-- test/parse010.in # 579 -r--r--r-- test/parse011.in # 126 -r--r--r-- test/parse012.in # 1287 -r--r--r-- test/parse013.in # 228690 -r--r--r-- test/parse014.in # 15060 -r--r--r-- test/parse015.in # 1682 -r--r--r-- test/unlex001.in # 896 -r--r--r-- test/unlex002.in # 3576 -r--r--r-- test/unlex003.in # 1369101 -r--r--r-- test/unlex004.in # 242991 -r--r--r-- test/unlex005.in # 1388 -r-xr-xr-x test/update.sh # 6082 -rw-r--r-- bibdup.html # 9251 -rw-r--r-- biblex.html # 18652 -rw-r--r-- bibparse.html # 5862 -rw-r--r-- bibunlex.html # 5062 -rw-r--r-- bibdup.pdf # 8413 -rw-r--r-- biblex.pdf # 15548 -rw-r--r-- bibparse.pdf # 4937 -rw-r--r-- bibunlex.pdf # 8552 -rw-r--r-- bibdup.ps # 13362 -rw-r--r-- biblex.ps # 24440 -rw-r--r-- bibparse.ps # 8295 -rw-r--r-- bibunlex.ps # 2565 -rw-r--r-- bibdup.txt # 6146 -rw-r--r-- biblex.txt # 13970 -rw-r--r-- bibparse.txt # 2482 -rw-r--r-- bibunlex.txt # 21083 -r--r--r-- save/Makefile # 27073 -r--r--r-- save/biblex.c # 20947 -r--r--r-- save/bibunlex.c # 30959 -r--r--r-- save/bibparse.c # 602 -r--r--r-- save/config.h # 82621 -r-xr-xr-x save/configure # save_IFS="${IFS}" IFS="${IFS}:" gettext_dir=FAILED locale_dir=FAILED first_param="$1" for dir in $PATH do if test "$gettext_dir" = FAILED && test -f $dir/gettext \ && ($dir/gettext --version >/dev/null 2>&1) then set `$dir/gettext --version 2>&1` if test "$3" = GNU then gettext_dir=$dir fi fi if test "$locale_dir" = FAILED && test -f $dir/shar \ && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) then locale_dir=`$dir/shar --print-text-domain-dir` fi done IFS="$save_IFS" if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED then echo=echo else TEXTDOMAINDIR=$locale_dir export TEXTDOMAINDIR TEXTDOMAIN=sharutils export TEXTDOMAIN echo="$gettext_dir/gettext -s" fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then shar_n= shar_c=' ' else shar_n=-n shar_c= fi else shar_n= shar_c='\c' fi touch -am 1231235999 $$.touch >/dev/null 2>&1 if test ! -f 1231235999 && test -f $$.touch; then shar_touch=touch else shar_touch=: echo $echo 'WARNING: not restoring timestamps. Consider getting and' $echo "installing GNU \`touch', distributed in GNU File Utilities..." echo fi rm -f 1231235999 $$.touch # $echo $shar_n 'x -' 'lock directory' "\`_sh27754': "$shar_c if mkdir _sh27754; then $echo 'created' else $echo 'failed to create' exit 1 fi # ============= BUILD-BIBPARSE.sh ============== if test -f 'BUILD-BIBPARSE.sh' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'BUILD-BIBPARSE.sh' '(file already exists)' else $echo 'x -' extracting 'BUILD-BIBPARSE.sh' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'BUILD-BIBPARSE.sh' && #! /bin/sh # This script configures and builds an optimized version of bibparse on # all local systems at the University of Utah Mathematics and Physics # Departments. # # Usage: # ./BUILD-BIBPARSE.sh # # [08-May-1999] X # Default C compiler CC=c89 YACC=yacc X # Adjustments for particular systems X case "`uname -s`" in X AIX) X CC=c89 X OPT='-O3 -qarch=ppc' X # Don't use -qarch=ppc: AIX doesn't emulate those extra instructions X # on older models that lack them, sigh... Sun does a much better job X OPT='-O3' X ;; X HP-UX) X CC=c89 X OPT='+O4' X ;; X IRIX) X CC='cc -cckr' X OPT='-O2' X # IRIX 5.3 yacc quits with ``Redeclaration of precedence of ASGNOP, line 75'' X # so switch to bison, sigh... X YACC='bison -y' X ;; X IRIX64) X CC=c89 X OPT='-O2' X ;; X Linux) X CC=gcc X OPT='-O3' X ;; X Mach) X CC=gcc X OPT='-O3 -m68030' X ;; X OSF1) X CC=c89 X OPT=-O4 X ;; X SunOS) X case "`uname -r`" in X 4.*) X CC='acc' X OPT='-O2 -dalign -libmil -cg89' X ;; X 5.5) X CC="gcc -ansi" X CC=c89 X OPT='-xO5 -dalign -xlibmil -fsimple=2 -fns -xsafe=mem -xtarget=ultra1/2200' X ;; X 5.*) X CC="gcc -ansi" X CC=c89 X OPT='-xO5 -dalign -xlibmil -fsimple=2 -fns -xsafe=mem -xtarget=ultra2/2300' X ;; X *) X echo "Unrecognized SunOS version...proceeding with defaults and fingers crossed :^)" X CC=c89 X OPT='-O' X ;; X esac X ;; X *) X echo "Unrecognized operating system...proceeding with defaults and fingers crossed :^)" X OPT='-O' X ;; esac X if test -f Makefile then X make distclean else X rm -f *.o config.cache config.log config.status awklex maketab \ X proctab.c ytab.c ytab.h fi X echo 'CC =' $CC echo 'OPT =' $OPT echo 'YACC =' $YACC X env CC="${CC}" ./configure && make OPT="$OPT" YACC="${YACC}" all check SHAR_EOF $shar_touch -am 0508145899 'BUILD-BIBPARSE.sh' && chmod 0755 'BUILD-BIBPARSE.sh' || $echo 'restore of' 'BUILD-BIBPARSE.sh' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'BUILD-BIBPARSE.sh:' 'MD5 check failed' b1f6627a14dc50f70449c1c64392f910 BUILD-BIBPARSE.sh SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'BUILD-BIBPARSE.sh'`" test 1762 -eq "$shar_count" || $echo 'BUILD-BIBPARSE.sh:' 'original size' '1762,' 'current size' "$shar_count!" fi fi # ============= ChangeLog ============== if test -f 'ChangeLog' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'ChangeLog' '(file already exists)' else $echo 'x -' extracting 'ChangeLog' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'ChangeLog' && 1999-05-26 Nelson H. F. Beebe X X * Release version 1.04. Its major new feature for users is the X ability of bibparse to handle BibTeX files directly, as well as X the lexical token streams from biblex and bibclean that previous X versions expected. This version has been tested under more than X 460 combinations of lex (AT&T lex and GNU flex) and yacc (AT&T X yacc, Berkeley byacc, and GNU bison) implementations, and C and X C++ compilers, and the enhancements to the autoconfig process X make it likely to be successful on almost all UNIX platforms, as X well as providing for simple builds on Microsoft Windows 9x and X NT systems. Binaries are provided for IBM PC DOS and Windows X systems. X X * bibyydcl.h: add function prototype for yylex(void). X X * Makefile.in: substantial rewrite with many small changes X too numerous to document here. X X * bibdup.sin: new file from which bibdup.sh (installed as bibdup) X is derived automatically. X X * config.hin: add #undef statements for HAVE_LIBFL and HAVE_LIBL. X X * configure.in: substantial rewirte with many new checks for X programs, more complex tests for lex/flex library variations X to handle GNU/Linux and C++ variations better, and generation X of bibdup.sh from bibdup.sin. X X * biblex.l: token printing now happens only when global variable X do_lex_output is nonzero, so that biblex can be embedded in X bibparse. X X * biblex.l, bibparse.y, bibunlex.l: define YYLMAX in terms of X BIBYYLMAX, which is now set in just a single place, in X Makefile.in. X X * biblex.l: add test against EOF as well as EOFILE, so flex can be X used reliably in place of lex. X X * bibparse.y: extend docstring in file comment header. X X * bibparse.y: add support for direct internal parsing of BibTeX X files, using a renamed biblex() parser linked into bibparse, so X that either token streams or BibTeX files can be used as input; X recognition of the input type is automatic. X X * bibparse.y: add new function zzlex() to handle input of token X stream. Function xxlex() (renamed from yylex() at compile time X in biblex) handles input of BibTeX files. Simple lookahead at X file beginning distinguishes between the two input types, and X pyylex is set to either xxlex or zzlex, and yylex() is defined X to call (*pyylex)(), so that yyparse() continues to work X unmodified, without knowledge of how its token stream was X obtained. X X * *.man: update author address in file comment header and AUTHOR X section. X X * *.man: add additional cross-references to newer BibTeX tools in X SEE ALSO section. X X * bibparse.man: document new direct BibTeX-file input support. X X * bibparse.man: substantially extend DESCRIPTION section. X X * bibparse.man: add entirely new OPTIONS section. X X * bibparse.man: add entirely new BIBTEX GRAMMAR section, so that X the user does not need to refer to the original TUGboat paper, X or the bibparse source code, to find the grammar. X X * bibparse.man: add entirely new PERFORMANCE section. X 1998-06-01 Nelson H. F. Beebe X X * Update biblex/bibparse/bibunlex distribution to use GNU X autoconfigure. This work added new files Makefile.in and X configure.in, from which autoconf produces configure, and X autoheader produces config.hin. When configure is run at the X installer's site, it produces config.h and Makefile. X X * Add new file arg.h with common header code from biblex.l, X bibparse.y, bibunlex.l, and lexmain.c. X X * Add support for flex in place of lex, and bison in place of X yacc. The choice is made by configure, with lex being X preferred. However, some Linux systems lack lex and yacc. X This required a few minor changes in biblex.l to get a lex X description acceptable to both lex and flex, and additional X support in bibyydcl.h for flex. X X * Add subdirectory save/ with backup copies of generated files X Makefile, biblex.c, bibparse.c, bibunlex.c, config.h, and X configure from the author's Sun Solaris 2.6 system. X X * Add .html and .pdf files to the distribution. X X * Update Makefile.in targets to match current GNU conventions. X X * Add ChangeLog and INSTALL files to the distribution. X X * Move symbolic token names into new token.h file to avoid X duplication. SHAR_EOF $shar_touch -am 0526073699 'ChangeLog' && chmod 0644 'ChangeLog' || $echo 'restore of' 'ChangeLog' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'ChangeLog:' 'MD5 check failed' 18adfbb26ea5ee48952895d9dab8cb90 ChangeLog SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'ChangeLog'`" test 4249 -eq "$shar_count" || $echo 'ChangeLog:' 'original size' '4249,' 'current size' "$shar_count!" fi fi # ============= Makefile.in ============== if test -f 'Makefile.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'Makefile.in' '(file already exists)' else $echo 'x -' extracting 'Makefile.in' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile.in' && # ====================================================================== # Makefile for biblex (lexically analyze BibTeX file), bibparse (parse # BibTeX file according to prototype grammar), and bibunlex # (reconstruct BibTeX file from lexical token stream). biblex and # bibunlex are lex/flex-based, and bibparse is yacc/bison-based. # # Current target list: # all (default) make biblex and test # biblex lex-based BibTeX lexer # biblex.o # bibparse.c # bibparse.o # bibparse yacc-based BibTeX parser # bibparse.jar Java Jar distribution archive # bibparse.shr shar bundle of distribution archive # bibparse.tar UNIX tar distribution archive # bibparse.txt ASCII text of formatted manual pages # bibparse.zip InfoZIP distribution archive # bibparse.zoo Zoo distribution archive # bibunlex filter to convert biblex token stream to # BibTeX format # bibunlex.c # bibunlex.o # check same as check-programs # check-docs spelling and doubled-word checks on # documentation # check-programs run validation suite # clean clean up trash and object files # clobber same as distclean # configure regenerate configure script (NB: # requires GNU autoheader and autoconf) # configure.time-stamp dummy file to record that patches # have been applied to the configure script # distclean clean up everything for a rebuild or # redistribution # docs make HTML, PostScript, PDF, and formatted # text files from man pages # dw doubled-word check on manual pages # html-files make HTML files from manual pages # install install bibdup, biblex, bibparse, and # bibunlex in system directories # install-ftp install distributions at author's ftp site # lexmain.o # maintainer-clean remove everything that can be rebuilt # with tools available at the author's # site (for maintainer only: do NOT do this # yourself!) # mostlyclean same as clean # pdf-files make PDF files from PostScript files # programs compile and link executable programs # ps-files make PostScript files from man pages # spell spell check manual pages # TAGS GNU Emacs tags file for fast editing # test-version check version number extraction for # other make targets # txt-files make ASCII text files from man pages # uninstall remove all files installed in system # directories by "make install" # # [08-May-1999] -- update for bibparse version 1.04 release # [01-Jun-1998] -- update for use with GNU autoconfigure # [16-Jan-1993] # ====================================================================== X prefix = /usr/local X # Change these to suit local conventions: BINDIR = $(prefix)/bin FTPDIR = /u/ftp/pub/tex/bib SHRLIBDIR = $(prefix)/share/lib/bibdup MANDIR = $(prefix)/man MANEXT = 1 X # Use lcc or gcc with extra flags for extensive error checking, or use # C++ compiler (g++ or CC). DO NOT CHANGE ANY OF THESE VALUES: # instead, copy one of these to the end of the CC list to select your # compiler. You may also set the DEFINES value below too, though that # is rarely necessary. X ## # NB: On SGI IRIX 4.0.x, if you do not have C++, then you must use ## # 'CC = cc -cckr' to compile biblex.c and bibunlex.c, because the ## # lex-generated code contains a line ## # FILE *yyin = {stdin}, *yyout = {stdout}; ## # which will not compile when the c89 version of stdio.h is used. ## ## CC = c89 ## DEC Alpha OSF/1 Standard C compiler ## CC = cxx ## DEC Alpha OSF/1 C++ compiler ## CC = CC ## C++ for BSD 4.3 UNIX on HP 370 ## CC = CC +a1 -xansi +w ## C++ for SGI IRIX 4.0 (see LOADLIBES below) ## CC = cc -ansiposix -fullwarn -woff 22,24,183,205,262,269,302,303 ## ## C for SGI IRIX 4.0 ## CC = CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ -D_BSD -D_AIX -Dps2 \ ## -DHAVE_TERMIO_H ## ## C++ on AIX 370 and PS/2: +a1 (ANSI ## ## declarations), +p (no anachronisms), +w ## ## (warnings) -D-BSD (to get toupper() and ## ## tolower() declared in ctype.h). ## ## Need -DHAVE_TERMIO_H because termios.h ## ## has wrong prototypes for C++ ## CC = CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ -D_BSD -D_AIX -D_AIX370 ## ## C++ on AIX 370 ## CC = cc -Hansi -D_POSIX_SOURCE ## cc on AIX 370 and AIX PS/2 ## CC = /usr/CC/sun4/CC -I/usr/CC/incl -D__SUNCC__ ## C++ on SunOS 4.1.1 ## CC = acc -Xc -vc -strconst -D__ACC__ -D_POSIX_SOURCE -DHAVE_TERMIOS_H ## ## SunOS Standard C compiler (neither ## ## -DHAVE_SGTTY_H nor -DHAVE_TERMIO_H gives ## ## char-at-a-time input, sigh...; they work ## ## fine on other systems). ## CC = c89 -D_POSIX_SOURCE -D_ALL_SOURCE ## IBM RS/6000 ## CC = xlC ## IBM RS/6000 C++ ## CC = c89 -D_HPUX_SOURCE ## HP 9000/8xx HP-UX A.08 ## CC = cc ## most systems ## CC = cc ## Stardent (NB: remove -g in OPT below) ## CC = cc -systype bsd43 -D__CC__ ## MIPS RCxxxx RISCos 4.52 and 5.2: ## CC = cc $(GCCFLAGS) ## NeXT (cc is really GNU C compiler) ## CC = g++ $(GCCFLAGS) ## GNU C++ ## CC = lcc -A -A -n ## Princeton/AT&T Standard C compiler ## CC = gcc $(GCCFLAGS) ## GNU C ## ## # Compiler for this site: ## CC = g++ $(GCCFLAGS) ## GNU C++ ## CC = gcc $(GCCFLAGS) ## GNU C ## CC = cc -Xc -D__ACC__ -D__solaris ## Sun Solaris 2.x ## X # These values are set when configure is run: CC = @CC@ CXX = @CXX@ CFLAGS = @CFLAGS@ $(DEFINES) $(INCLUDES) $(OPT) CXXFLAGS = @CXXFLAGS@ $(DEFINES) $(INCLUDES) $(OPT) X # ====================================================================== # The remainder of this Makefile should not need changes X # Need new awk (nawk) or gawk here: AWK = @AWK@ X # Where the executables are during "make check": BIBLEX = ../biblex X BIBPARSE = ../bibparse X BIBUNLEX = ../bibunlex X # Because we need to support rather long BibTeX tokens (e.g., a long # abstract string), we need a MUCH larger yytext[] token buffer than the # default, which is often just 512 or 1024. # # Unfortunately, some lex implementations (e.g., Sun Solaris 2.x) emit # use of YYLMAX before the code from the %{...%} section of the .l file, # or without allowing a command-line definition to set it, so even # though biblex.l redefines YYLMAX internally, that definition may be # too late. # # Thus, we must also define it on the compiler command line, and use it # in $(SEDFILTER) below. # # These values MUST all match, so we call them all BIBYYLMAX. This # is now the ONLY place where the magic value is set, so it can be # trivially redefined at make time if needed. # # Note: For a long time, this value was 40960 (or 32768 on IBM PC # systems). However, a few bibliographies in the TeX User Group # collection have even longer strings, and setting it to 81920 proved # to be big enough for all of them. To allow for growth, we set it # even larger, to 128K. BIBYYLMAX = 131072 X CHMOD = @CHMOD@ X # Extra flags for gcc and g++ to get maximal checking GCCFLAGS = -Wall -Wshadow -Wcast-qual -Wpointer-arith -Wwrite-strings X COMPRESS = @COMPRESS@ X CP = @CP@ X DEFINES = @DEFINES@ -DBIBYYLMAX=$(BIBYYLMAX) X DEROFF = @DEROFF@ X DIFF = @DIFF@ X DISTILL = @DISTILL@ X DITROFF = @DITROFF@ X ETAGS = @ETAGS@ X EXPAND = @EXPAND@ X INCLUDES = -I. X JAR = @JAR@ X LDFLAGS = @LDFLAGS@ X LIBS = @LIBS@ X # For flex, need to manually remove the %a and %o table size lines LEX = @LEX@ X LN = @LN@ -s X LS = @LS@ X # man2html is available at ftp://ftp.math.utah.edu/pub/sgml/man2html-x.yy.* MAN2HTML = @MAN2HTML@ X MKDIR = @MKDIR@ -p X MV = @MV@ X NROFF = @NROFF@ X # This variable defined to be empty, with the intent that the user can # set it on the make command line at build time to choose fancy # compiler-dependent optimization switches. OPT = X # NB: Put bibparse before biblex to avoid unnecessary recompilation # of biblex: bibparse creates a special temporary version of biblex.o PROGRAMS = bibparse biblex bibunlex X RM = @RM@ -f X RMDIR = @RMDIR@ X SED = @SED@ X # See above for why we need to substitute YYLMAX by BIBYYLMAX in the # first sed pattern. # # The peculiar second sed pattern removes a line generated by HP HP-UX # 10.x lex which causes a fatal compilation error because of an # argument mismatch with the real definition of main(). # # The third sed pattern resets any definition of YYLMAX to make it # equal to BIBYYLMAX, in case it gets used before it is reset later. # # The fourth sed pattern removes an erroneous declation of getenv() by # yacc on GNU/Linux systems. SEDFILTER = $(SED) -e 's/char *yytext *\[YYLMAX\]/char yytext[$(BIBYYLMAX)]/' \ X -e '/static void __yy__unused() { main(); }/d' \ X -e 's/\#[ ]*define[ ]*YYLMAX.*$$/\#define YYLMAX BIBYYLMAX/' \ X -e '/extern[ ]*char[ ]*[*]getenv[ ]*[(][ ]*[)]/d' X SHAR = @SHAR@ X # This variable is not used directly, but some make implementations # (e.g., SGI IRIX) use it to decide what shell to invoke commands in. # We require the original Bourne shell, sh (or a syntax-compatible # variant, such as ksh or bash). SHELL = /bin/sh X SPELL = @SPELL@ +bibfiles.sok X TAR = @TAR@ X TOUCH = @TOUCH@ X UNZIP = @UNZIP@ X VERSION = `$(AWK) '/^[ \t]*version *= *"[0-9.]+", *$$/ \ X { gsub(/[^0-9.]/,"",$$3); print $$3 }' bibparse.y` X YACC = @YACC@ X YFLAGS = -v @YFLAGS@ X ZIP = @ZIP@ X ZOO = @ZOO@ X #======================================================================= # File lists: X BASEPROGS = $(PROGRAMS) bibdup X CHECK-FILES = test/check.bat test/docheck.sh test/lex001.in \ X test/lex002.in test/lex003.in test/lex004.in test/lex005.in \ X test/okay/lex001.err test/okay/lex001.out \ X test/okay/lex002.err test/okay/lex002.out \ X test/okay/lex003.err test/okay/lex003.out \ X test/okay/lex004.err test/okay/lex004.out \ X test/okay/lex005.err test/okay/lex005.out \ X test/okay/parse001.err test/okay/parse001.out \ X test/okay/parse002.err test/okay/parse002.out \ X test/okay/parse003.err test/okay/parse003.out \ X test/okay/parse004.err test/okay/parse004.out \ X test/okay/parse005.err test/okay/parse005.out \ X test/okay/parse006.err test/okay/parse006.out \ X test/okay/parse007.err test/okay/parse007.out \ X test/okay/parse008.err test/okay/parse008.out \ X test/okay/parse009.err test/okay/parse009.out \ X test/okay/parse010.err test/okay/parse010.out \ X test/okay/parse011.err test/okay/parse011.out \ X test/okay/parse012.err test/okay/parse012.out \ X test/okay/parse013.err test/okay/parse013.out \ X test/okay/parse014.err test/okay/parse014.out \ X test/okay/parse015.err test/okay/parse015.out \ X test/okay/unlex001.err test/okay/unlex001.out \ X test/okay/unlex002.err test/okay/unlex002.out \ X test/okay/unlex003.err test/okay/unlex003.out \ X test/okay/unlex004.err test/okay/unlex004.out \ X test/okay/unlex005.err test/okay/unlex005.out \ X test/parse001.in test/parse002.in test/parse003.in \ X test/parse004.in test/parse005.in test/parse006.in \ X test/parse007.in test/parse008.in test/parse009.in \ X test/parse010.in test/parse011.in test/parse012.in \ X test/parse013.in test/parse014.in test/parse015.in \ X test/unlex001.in test/unlex002.in test/unlex003.in \ X test/unlex004.in test/unlex005.in test/update.sh X # These variables list the basenames of the test files. Those named XXX*.in # are input files for bibXXX, those named okay/XXX*.out contain correct # output on stdout from bibXXX for comparison with the .out files created by # "make check", and those named okay/XXX*.err contain correct output on # stderr from bibXXX for comparison with the XXX*.err files created by "make # check". All of these tests are done in the test subdirectory. X CHECK-NAMES-LEX = lex001 lex002 lex003 lex004 lex005 X CHECK-NAMES-PARSE = parse001 parse002 parse003 parse004 parse005 \ X parse006 parse007 parse008 parse009 parse010 \ X parse011 parse012 parse013 parse014 parse015 X CHECK-NAMES-UNLEX = unlex001 unlex002 unlex003 unlex004 unlex005 X # This is the list of everything that is distributed in the various # archive formats installed in the ftp tree: X DIST-FILES = BUILD-BIBPARSE.sh ChangeLog Makefile.in README README.html \ X acconfig.h args.h bibdup.awk bibdup.sin bibdup.man \ X bibfiles.sok biblex.dat biblex.l biblex.man biblex.ok \ X bibparse.man bibparse.y bibunlex.l bibunlex.man bibyydcl.h \ X configure configure.in config.hin lexmain.c token.h \ X $(CHECK-FILES) $(HTML-FILES) $(PDF-FILES) $(PS-FILES) \ X $(TXT-FILES) save/Makefile save/biblex.c save/bibunlex.c \ X save/bibparse.c save/config.h save/configure X HTML-FILES = $(MAN-FILES:.man=.html) X MAN-FILES = bibdup.man biblex.man bibparse.man bibunlex.man X PDF-FILES = $(MAN-FILES:.man=.pdf) X PS-FILES = $(MAN-FILES:.man=.ps) X TAGS-FILES = biblex.l bibparse.y bibunlex.l X TXT-FILES = $(MAN-FILES:.man=.txt) X #======================================================================= X X.SUFFIXES: .html .pdf .ps .txt .man .i .c .y X X.c.i: X $(CC) -E $(CFLAGS) $< >$@ X X.l.c: X $(LEX) -t $< | $(SEDFILTER) > $@ X X.man.html: X $(MAN2HTML) $< X X.ps.pdf: X $(DISTILL) $< X X.y.c: X $(YACC) $(YFLAGS) $< X $(SEDFILTER) < y.tab.c > $@ X -$(RM) y.tab.c X X.y.i: X $(MAKE) $*.c X $(MAKE) $*.i X -$(RM) $*.c X X.man.ps: X $(DITROFF) -Tps -man $? >$@ X X.man.txt: X $(DITROFF) -Tascii -man $? >$@ X #======================================================================= X all: programs X bibdup.sh: bibdup.sin Makefile X -$(RM) -f $@ X $(SED) -e 's=_LIBDIR_=$(SHRLIBDIR)=g' \ X -e 's=_BINDIR_=$(BINDIR)=g' \ X -e 's=_AWK_=$(AWK)=g' \ X $@ X $(CHMOD) 555 $@ X biblex: lexmain.c biblex.c args.h bibyydcl.h token.h X $(CC) $(CFLAGS) -o biblex lexmain.c biblex.c $(LDFLAGS) $(LIBS) X biblex.c: biblex.l X bibparse.c: bibparse.y X # We create a temporary empty yacc.h file to avoid a compilation # error from HP's version, and g++'s failure to find it at all. # This is harmless on other systems. bibparse.o: bibparse.c args.h bibyydcl.h X @$(TOUCH) yacc.h X $(CC) $(CFLAGS) -c bibparse.c X @-$(RM) yacc.h X # We make this dependency on biblex.c, not biblex.o, because we need # to recompile it with yylex changed to xxlex for use inside bibparse bibparse: bibparse.o biblex.c args.h bibyydcl.h token.h X $(CC) $(CFLAGS) -Dyylex=xxlex -o bibparse bibparse.o biblex.c $(LDFLAGS) $(LIBS) X @-$(RM) biblex.o X bibparse.jar: $(DIST-FILES) X -$(RM) bibparse.jar bibparse.jar-lst X $(JAR) cf bibparse.jar $(DIST-FILES) X -$(MKDIR) bibparse-$(VERSION) X cd bibparse-$(VERSION); $(JAR) xf ../bibparse.jar X $(JAR) cf bibparse-$(VERSION).jar bibparse-$(VERSION) X -$(RM) -rf bibparse-$(VERSION) X -$(RM) bibparse.jar X $(LN) bibparse-$(VERSION).jar bibparse.jar X # The shar bundle intentionally omits the leading directory name, # bibparse-x.y.z, because shar bundles can be extracted on other systems # (e.g., IBM PC DOS) which do not permit multiple periods in file names, or # seriously limit the length of file names. bibparse.shr: $(DIST-FILES) X -$(RM) bibparse*.shr X $(SHAR) $(DIST-FILES) >bibparse-$(VERSION).shr X $(LN) bibparse-$(VERSION).shr bibparse.shr X bibparse.tar: $(DIST-FILES) X -$(RM) bibparse.tar bibparse.tar-lst X $(TAR) chf bibparse.tar $(DIST-FILES) X -$(MKDIR) bibparse-$(VERSION) X cd bibparse-$(VERSION); tar xf ../bibparse.tar X $(TAR) cf bibparse-$(VERSION).tar bibparse-$(VERSION) X -$(RM) -r bibparse-$(VERSION) X -$(RM) bibparse.tar X $(LN) bibparse-$(VERSION).tar bibparse.tar X bibparse.txt: bibparse.man X $(NROFF) -man bibparse.man | col -b | $(EXPAND) >$@ X bibparse.zip: $(DIST-FILES) X -$(RM) bibparse*.zip bibparse*.zip-lst X $(ZIP) bibparse-$(VERSION).zip $(DIST-FILES) X $(UNZIP) -v bibparse-$(VERSION).zip >bibparse-$(VERSION).zip-lst X $(LN) bibparse-$(VERSION).zip bibparse.zip X bibparse.zoo: $(DIST-FILES) X -$(RM) bibparse*.zoo bibparse*.zoo-lst X $(ZOO) a bibparse-$(VERSION).zoo $(DIST-FILES) X $(ZOO) v bibparse-$(VERSION).zoo >bibparse-$(VERSION).zoo-lst X $(LN) bibparse-$(VERSION).zoo bibparse.zoo X bibunlex: bibunlex.c X $(CC) $(CFLAGS) -o bibunlex bibunlex.c $(LDFLAGS) $(LIBS) X bibunlex.c: bibunlex.l X check: check-programs X check-docs: dw spell X check-programs: check-biblex check-bibparse check-bibunlex X check-biblex: biblex X @echo "" X @echo "The following checks should produce no output, other than their names" X @cd test; ./docheck.sh $(BIBLEX) $(CHECK-NAMES-LEX) X check-bibparse: bibparse X @echo "" X @echo "The following checks should produce no output, other than their names" X @cd test; ./docheck.sh $(BIBPARSE) $(CHECK-NAMES-PARSE) X check-bibunlex: bibunlex X @echo "" X @echo "The following checks should produce no output, other than their names" X @cd test; ./docheck.sh $(BIBUNLEX) $(CHECK-NAMES-UNLEX) X clean: X -$(RM) *.i X -$(RM) *.o X -$(RM) *~ X -$(RM) \#* X -$(RM) biblex.tmp X -$(RM) bibparse.output X -$(RM) core X -$(RM) lex.yy.c X -$(RM) y.output X -$(RM) yacc.h X clobber: distclean X configure: X autoconf X autoheader X -$(RM) config.cache X $(MAKE) configure.time-stamp X # Work around a serious flaw in GNU configure: it always inserts -g # -O2 in CFLAGS and CXXFLAGS. -g cannot be used with $(OPT) on many # systems, and -O2 is not supported on many systems. configure.time-stamp: configure Makefile.in X $(MV) configure configure.tmp X $(SED) \ X -e 's/CFLAGS=" *-g */CFLAGS="/' \ X -e 's/CFLAGS=" *-O2 */CFLAGS="/' \ X -e 's/CXXFLAGS=" *-g */CXXFLAGS="/' \ X -e 's/CXXFLAGS=" *-O2 */CXXFLAGS="/' \ X < configure.tmp > configure X $(CHMOD) 775 configure X $(TOUCH) configure.time-stamp X -$(RM) configure.tmp X distclean: mostlyclean X -$(RM) $(PROGRAMS) bibdup.sh X -$(RM) Makefile X -$(RM) TAGS X -$(RM) bibparse.output X -$(RM) bibparse*.jar X -$(RM) bibparse*.jar-lst X -$(RM) bibparse*.shr X -$(RM) bibparse.tab.c X -$(RM) bibparse*.tar X -$(RM) bibparse*.tar-lst X -$(RM) bibparse*.zip X -$(RM) bibparse*.zip-lst X -$(RM) bibparse*.zoo X -$(RM) bibparse*.zoo-lst X -$(RM) config.cache X -$(RM) config.h X -$(RM) config.log X -$(RM) config.status X -$(RM) y.output X -$(RM) y.tab.c X docs: html-files ps-files pdf-files txt-files X dw: X @for f in $(MAN-FILES) ; \ X do \ X echo "==================== doubled words in $$f\ ====================" ; \ X $(DEROFF) $$f | dw ; \ X done X html-files: $(HTML-FILES) X install: install-programs install-lib install-man install-show X install-ftp: bibparse.jar bibparse.shr bibparse.tar bibparse.zip \ X bibparse.zoo uninstall-ftp X $(CP) bibparse-$(VERSION).jar $(FTPDIR) X $(JAR) tvf bibparse-$(VERSION).jar 2>$(FTPDIR)/bibparse-$(VERSION).jar-lst X $(CP) bibparse-$(VERSION).shr $(FTPDIR) X $(TAR) tvf bibparse-$(VERSION).tar >$(FTPDIR)/bibparse-$(VERSION).tar-lst X $(COMPRESS) $(FTPDIR)/bibparse-$(VERSION).tar.gz X $(CP) bibparse-$(VERSION).zip $(FTPDIR) X $(CP) bibparse-$(VERSION).zip-lst $(FTPDIR) X $(CP) bibparse-$(VERSION).zoo $(FTPDIR) X $(CP) bibparse-$(VERSION).zoo-lst $(FTPDIR) X $(LS) -l $(FTPDIR)/bibparse-$(VERSION)* X install-lib: uninstall-lib X -$(MKDIR) $(SHRLIBDIR) X $(CP) bibdup.awk $(SHRLIBDIR)/bibdup.awk X $(CHMOD) 664 $(SHRLIBDIR)/bibdup.awk X install-man: uninstall-man X for program in $(BASEPROGS) ; \ X do \ X $(CP) $$program.man $(MANDIR)/man$(MANEXT)/$$program.1 ; \ X $(CHMOD) 664 $(MANDIR)/man$(MANEXT)/$$program.1 ; \ X done X install-programs: $(PROGRAMS) bibdup.sh uninstall-programs X for program in $(PROGRAMS) ; \ X do \ X $(CP) $$program $(BINDIR)/$$program ; \ X $(CHMOD) 775 $(BINDIR)/$$program ; \ X done ; \ X $(CP) bibdup.sh $(BINDIR)/bibdup ; \ X $(CHMOD) 775 $(BINDIR)/bibdup X install-show: X @echo '' X @echo Installed files... X @for program in $(BASEPROGS) ; \ X do \ X $(LS) -l $(BINDIR)/$$program ; \ X done X @for program in $(BASEPROGS) ; \ X do \ X $(LS) -l $(MANDIR)/man$(MANEXT)/$$program.$(MANEXT) ; \ X done X @if test -d $(SHRLIBDIR) ; then $(LS) -lR $(SHRLIBDIR)/* ; fi X @echo '' X maintainer-clean: distclean X @echo "This command is intended for maintainers to use;" X @echo "it deletes files that may require special tools to rebuild." X -for f in $(PROGRAMS) ; \ X do \ X $(RM) $$.html ; \ X $(RM) $$.ps ; \ X $(RM) $$.pdf ; \ X $(RM) $$.txt ; \ X done X -$(RM) config.hin X -$(RM) configure X -$(RM) configure.time-stamp X mostlyclean: clean X -$(RM) biblex.c X -$(RM) bibparse.c X -$(RM) bibunlex.c X pdf-files: $(PDF-FILES) X programs: $(PROGRAMS) X ps-files: $(PS-FILES) X spell: X @for f in $(MAN-FILES) ; \ X do \ X echo "==================== spelling exceptions in $$f\ ====================" ; \ X $(DEROFF) $$f | $(SPELL) ; \ X done X TAGS: $(TAGS-FILES) X $(ETAGS) $(TAGS-FILES) X test-version: Makefile X @echo "Version number is ""'"$(VERSION)"'" X txt-files: $(TXT-FILES) X uninstall: uninstall-programs uninstall-lib uninstall-man X uninstall-ftp: X -$(RM) $(FTPDIR)/bibparse-$(VERSION).jar X -$(RM) $(FTPDIR)/bibparse-$(VERSION).jar-lst X -$(RM) $(FTPDIR)/bibparse-$(VERSION).shr X -$(RM) $(FTPDIR)/bibparse-$(VERSION).tar-lst X -$(RM) $(FTPDIR)/bibparse-$(VERSION).tar.gz X -$(RM) $(FTPDIR)/bibparse-$(VERSION).zip X -$(RM) $(FTPDIR)/bibparse-$(VERSION).zip-lst X -$(RM) $(FTPDIR)/bibparse-$(VERSION).zoo X -$(RM) $(FTPDIR)/bibparse-$(VERSION).zoo-lst X uninstall-lib: X -$(RM) $(SHRLIBDIR)/bibdup.awk X -$(RMDIR) $(SHRLIBDIR) X uninstall-man: X -for program in $(BASEPROGS) ; \ X do \ X $(RM) $(MANDIR)/man$(MANEXT)/$$program.1 ; \ X $(RM) $(MANDIR)/man$(MANEXT)/../cat$(MANEXT)/$$program.1 ; \ X done X uninstall-programs: X -for program in $(BASEPROGS) ; \ X do \ X $(RM) $(BINDIR)/$$program ; \ X done SHAR_EOF $shar_touch -am 1021100899 'Makefile.in' && chmod 0644 'Makefile.in' || $echo 'restore of' 'Makefile.in' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'Makefile.in:' 'MD5 check failed' 0b047e36da0a076645154b03704ad8ba Makefile.in SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'Makefile.in'`" test 21072 -eq "$shar_count" || $echo 'Makefile.in:' 'original size' '21072,' 'current size' "$shar_count!" fi fi # ============= README ============== if test -f 'README' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'README' '(file already exists)' else $echo 'x -' extracting 'README' '(binary)' sed 's/^X//' << 'SHAR_EOF' | uudecode && begin 600 README M4D5!1$U%.B!);G-T86QL871I;VX@:6YS=')U8W1I;VX@9F]R"BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*@IB:6)P87)S92TQ+C`T(`HJ M*BHJ*BHJ*BHJ*BHJ*@H*5&%B;&4@;V8@8V]N=&5N=',@"CT]/3T]/3T]/3T] M/3T]/3T]/0H*("`@*B!*=6UP('-T87)T(`H@("`J($EN=')O9'5C=&EO;B`* M("`@*B!);G-T86QL871I;VX@"B`@("H@0G5G(')E<&]R=',@"B`@("H@54Y) M6"!3>7-T96US(`H@("`J($E"32!00R!$3U,@"B`@("H@5&5S="!S=6ET92`* M("`@*B!386UP;&4@8G5I;&0@;W5T<'5T(&9O6]U6]U('=I2!M86ME(&EN"P@8FEB=6YL97@L(&%N9"`*8FEB9'5P+"!A('-U:71E M(&]F('!R;V=R86US(&9OT)E96)E.E1",30M-"TS.34L"F%U=&AOWM":6)L:6]G"!C:&5C:VEN9WU](BP*:F]U'0@;V8@=&AE(%151V)O870@87)T:6-L92!I2!O9B!F;W)M871S(&EN('1H92!S86UE"G!L86-E('1H870@>6]U(&9O=6YD M('1H92!B:6)P87)S92`H970@86PI(&1I6]U M('-T87)T960N(`H*5&AR964@9FEL97,L(&)I8FQE>"YC+"!B:6)P87)S92YC M+"!A;F0@8FEB=6YL97@N8RP@87)E"F=E;F5R871E9"!B>2!L97@@*&]R(&9L M97@I+"!A;F0@>6%C8R`H;W(@8FES;VXI+B!#;W!I97,@;V8@=&AE2!F;W(@;6%N=6%L"F)O;W1S=')A<'!I;F6]U(&1O(&$@;6%K92!M86EN=&%I;F5R+6-L96%N(%MN;W0@2!F M"!A;F0@>6%C8R]B:7-O;B!S=7!P;W)T+"!O2!E M=F5N="!O9B!A(&9A:6QU2!O9B!Y;W5R(&-O;F9I9RYH('5N9&5R(&$@9&EF M9F5R96YT(&YA;64L(&)E8V%U2YT87(N9WHI+"`H>"YY M(#T@,BXQ,R!A="!T:&4@=&EM92!O9B!W6]U2!C;VYF:6=U M"]F;&5X+2!A M;F0@"GEA8V,O8FES;VXM9V5N97)A=&5D(&-O9&4@9&5P96YD2!B92!N96-E"(I+@H*3VX@54Y)6"!S>7-T96US+"!T:&4@;VYL>2!V M87)I86)L97,@=&AA="!Y;W4@87)E(&QI:V5L>2!T;R!N965D('1O(&]V97)R M:61E(&]N"G1H92!M86ME(&-O;6UA;F0@;&EN92!A"X@"@I)9B!Y M;W4@87)E(&EN&5R"!A;F0@;&5X*2P@86YD('1H6EN9RP@=&AE(&9A:6QU2!E=F5N M(&UO"!A;F0O;W(@8FES;VXO8GEA8V,O>6%C8R!W M:&EC:"!I65A`H@("`@("!S>7-T96US M*2X@"B`@("H@0G)O:V5N('9E;F1O"`K(&)I"`M>"!C>'@*"0D)"0D@+W5S&Q#"@D)"0D)("]U"`R+C$N,3,R M("]U"`R+C`N,S4@("`O=7-R M+V)I;B]C8PH)"0D)"2`O=7-R+V)I;B]G8V,*"0D)"0D@+W5S6%C8R`H-S4@8V]M M<&EL97)S*2`*+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0H*"DUA8VAI M;F4@86YD(&UO9&5L("`@("!/+U,)"2!#;VUP:6QE`H)"0D)"2`O=7-R M+VQO8V%L+V)I;B]L8V,@+4$@+4$*"0D)"0D@+W5SB!'3E4O3&EN M=7@@,BXQ+C$S,B`O=7-R+V)I;B]C8PH)"0D)"2`O=7-R+W!G:2]L:6YU>#@V M+V)I;B]P9T-#"@D)"0D)("]U6%C8R`H-C8@8V]M<&EL97)S*2`*+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM"@H*36%C:&EN92!A;F0@;6]D96P@("`@($\O M4PD)($-O;7!I;&5R"`M>"!C>'@*"0D)"0D@+W5S#@V+V)I;B]P9T-#"@D)"0D)("]U"`R+C`N,S4@("`O=7-R+V)I M;B]C8PH)"0D)"2`O=7-R+VQO8V%L+V)I;B]G8V,*"0D)"0D@+W5SB!'3E4O3&EN=7@@,BXQ+C$S,B`O=7-R+V)I M;B]G8V,*"0D)"0D@+W5S"`R+C`N,S4@("`O=7-R+V)I;B]C8PH) M"0D)"2`O=7-R+V)I;B]G8V,*"0D)"0D@+W5S"`R M+C`N,S4@("`O=7-R+V)I;B]C8PH)"0D)"2`O=7-R+V)I;B]G8V,*"0D)"0D@ M+W5S"`K(&)Y M86-C("@W,B!C;VUP:6QE&Q#"@D)"0D)("]U"`R+C$N,3,R("]U6%C M8R`H-C,@8V]M<&EL97)S*2`*+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T* M"@I-86-H:6YE(&%N9"!M;V1E;"`@("`@3R]3"0D@0V]M<&EL97)S"BTM+2TM M+2TM+2TM+2TM+2TM("`@("`M+2T)"2`M+2TM+2TM+2T*1$5#($%L<&AA(#(Q M,#`M-2\R-3`@3U-&+S$@,RXR(`D)("]U"`R+C`N,S4@("`O=7-R+VQO8V%L+V)I;B]G8V,*"0D)"0D@+W5S M"`R+C$N,3,R("]U"`K(&)I'@@+7@@8WAX(`I(4"`Y,#`P+SB!'3E4O3&EN=7@@,BXQ+C$S,B`O=7-R+W!G M:2]L:6YU>#@V+V)I;B]P9T-#(`I.95A4(%1U"`K(&)Y86-C("@U(&-O;7!I;&5R`H)"0D) M+W5S"`K('EA8V,@*#$T(&-O;7!I M;&5R"`M>"!C>'@*"0D)"2`O=7-R+VQO8V%L+V)I;B]G M*RL@"DE"32!0;W=E2!A('1Y<&5D968L(&$@;VYE+6QI;F4@8VAA;F=E(&9R;VT@ M:6YT('1O(&QO;F<@=V]U;&0@<&5R;6ET('1H90IT2P@=&AE('-O;'5T:6]N(&ES('-I;7!L>2!T M;R!U"P@ M9FQE>"P@;W(@>6%C8R!L:6)R87)I97,L('!R;W9I9&5D('1H870@=&AE('-Y M;6)O;"`*2$%615])0DU00R!I2!R97%U:7)E;65N=',@=&\@9FET(&EN('1H90HV-$M"+7-E9VUE;G0@ M;&EM:70N(`H*5&AE(&EB;7!C+V1O2!M87D@86QS;R!R=6X@;VX@96%R;&EE2!3=6X*=6YD97(@4V]L M87)I7-T96US+"!T:&4@:6)M<&,O9&]S+V-H96-K+F)A M="!F:6QE"F9O2!S;VUE=VAE7-T96TN(`H*4V%M<&QE M(&)U:6QD(&]U='!U="!F;W(@54Y)6"`*/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T*"DAE65S"F-H96-K:6YG(&9O'!A;F0N+BX@97AP86YD"F-H96-K:6YG(&9O`IC:&5C:VEN9R!F;W(@;&XN+BX@;&X*8VAE8VMI;F<@9F]R M(&QS+BXN(&QS"F-H96-K:6YG(&9O6%C8PIC:&5C:VEN9R!F;W(@>FEP+BXN('II<`IC:&5C:VEN9R!F M;W(@>F]O+BXN('IO;PIC:&5C:VEN9R!F;W(@9FEL96YO+BXN(&YO"F-H96-K M:6YG(&9O2XN+B`M;&P*8VAE8VMI;F<@9F]R('EA8V,@;&EB2XN+B`M;'D*8VAE8VMI;F<@9F]R(&)I6%C M8R`M=B`@8FEB<&%R0H*8V]N9FQI8W1S.B`V('-H:69T+W)E9'5C90IS M960@+64@)W,O8VAA7ET97AT("I<6UE93$U!6%Q=+V-H87(@>7ET97AT M6S0P.38P72\G("UE("5]?=6YUR!M M86EN*"D[('TO9"<@+64@)W,O(UL@("`@("`@("!=*F1E9FEN95L@("`@("`@ M72I964Q-05@N*B0O(V1E9FEN92!964Q-05@@0DE"65E,34%8+R<@+64@)R]E M>'1E"YL('P@7E?7W5N M=7-E9"@I('L@;6%I;B@I.R!]+V0G("UE("=S+R-;("`@("`@(%TJ9&5F:6YE M6R`@("`@("!=*EE93$U!6"XJ)"\C9&5F:6YE(%E93$U!6"!"24)964Q-05@O M)R`M92`G+V5X=&5R;EL@("`@(%TJ8VAA"YC"C$S-B\Q,#`P(&YO M9&5S*"5E*2P@,S$Q+S(U,#`@<&]S:71I;VYS*"5P*2P@-3`O-3`P("@E;BDL M(#,P.34@=')A;G-I=&EO;G,L"C$X."\Q,#`P,"!P86-K960@8VAA7EL M97@]>'AL97@@+6\@8FEB<&%R0HO;W!T+U-53E=S<')O+V)I;B]#0R`@+41?7T585$523E]#7U\@+41" M24)964Q-05@]-#`Y-C`@+4DN("`M;R!B:6)L97@@;&5X;6%I;BYC(&)I8FQE M>"YC("`M;&P@+6QY"FQE>&UA:6XN8SH*8FEB;&5X+F,Z"FQE>"`M="!B:6)U M;FQE>"YL('P@7E?7W5N M=7-E9"@I('L@;6%I;B@I.R!]+V0G("UE("=S+R-;("`@("!=*F1E9FEN95L@ M("`@("`@72I964Q-05@N*B0O(V1E9FEN92!964Q-05@@0DE"65E,34%8+R<@ M+64@)R]E>'1E"YC"B]O<'0O4U5.5W-P M#`P,PIL97@P,#0* M;&5X,#`U"@I4:&4@9F]L;&]W:6YG(&-H96-K#`P,0IU;FQE>#`P,@IU;FQE>#`P,PIU;FQE M>#`P-`IU;FQE>#`P-0H*26UP;&5M96YT871I;VX@3F]T97,@"CT]/3T]/3T] M/3T]/3T]/3T]/3T]/0H*5VAI;&4@=&AE($=.52!A=71O8V]N9FEG=7)E('-Y M2!H879I;F<@861A<'1E9"!S M979E2!A="!M;W-T(&5N9"UU7-T96T@<&5C=6QI87)I=&EE2!O;@I'3E4O3&EN=7@N(`H*02!M86IO7-T96US+"!T:&4@=F5N9&]R+7!R;W9I9&5D(&QE>"!I M7!E6%C8R!O=71P=70L(&)U="!T:&4@;&]C871I;VX@;V8@=&AA M="!H96%D97(@9FEL92!I"!O=71P M=70@=VAI8V@*=&AE;B!F86EL7!E+"!A M;F0@8V%U2!A;B!E9&ET('-T97`@:6X@36%K969I;&4N:6X@=&\@"P@=&AE M>0IB96-O;64@;&5X7VEN<'5T*"D@86YD(&QE>%]O=71P=70H*2P@7ED8VPN:"!H87,*=&\@:&%N9&QE('1H:7,@8V%S92!S<&5C:6%L;'DN($D@ M9&]N)W0@2!G;V]D('=A>2!T;R!D;R!T:&ES('=I=&@@"F-O;F9I M9W5R92P@2!A=VMW87)D('1O('!R;V1U8V4@=&5S M=',@:6X@;&%N9W5A9V5S(&]T:&5R"G1H86X@0RX@"@I4:&4@1TY5+TQI;G5X M("A#86QD97)A($QI9VAT(#(N,"XS,"D@2P@"P@8G5T(&YO="!I=',@;&EB M2P@+6QL+"!A;F0*=V]R2!F;&5X M+"!W:&EC:"!D;V5S(&YO="!B96AA=F4@8V]M<&%T:6)L>2P@=6YL97-S(&ET M"FES(&EN=F]K960@=VET:"!T:&4@8V]M<&%T:6)I;&ET>2UM;V1E(&9L862!L97@Z(&]N($A0('-Y7-T96US+"!I="!C875S97,@ M"FQE>"!T;R!H86YG(&EN(&%N(&%P<&%R96YT($DO3R!W86ET+B!)="!T;V]K M('-E=F5R86P@=')I97,@;VX@=F%R:6]U7-T96US"F)E9F]R92!)('-E M='1L960@;VX@=&AE(&-O9&4@9FEN86QL>2!U6%C8R!W:&EC:"!R97-U M;'1S(&EN(&$@8F]G=7,*8V]M<&QA:6YT(`H*55@Z>6%C8SH@15)23U(Z(%)E M9&5C;&%R871I;VX@;V8@<')E8V5D96YC92!O9B!43TM%3E]%455!3%,L(&QI M;F4@,C$P"@I4:'5S+"!O;B!T:&%T('-Y2!Y86-C*2!M=7-T(&)E"G5S960L(&%N9"!N96ET M:&5R(&%R92!P2!T:&4@=F5N9&]R+B`*"EEO=2!C86X@9V5T M(&)I6=N=7,*1E10('-I=&4Z(&9T<#HO M+V9T<"YC>6=N=7,N8V]M+W!U8B]G9&(O:6YFB`*5&AA="!V97)S:6]N(&AA&5S(&)E>6]N9"!T:&4@8GEA8V,@=F5R2!"4T0@9&5V96QO<&UE;G0@2YE9'4O<'5B+S1B6=N=7,*=F5R6%C8RTY-#`S,C0O8GEA8V,O4D-3+W-K96QE=&]N M+F,L=@IR971R:65V:6YG(')E=FES:6]N(#$N,0ID:69F("UR,2XQ(&)Y86-C M+3DT,#,R-"]B>6%C8R]S:V5L971O;BYC"CDX83DY+#$P,@H^("`@("`B(VEF M9&5F(%]?8W!L=7-P;'5S(BP*/B`@("`@(F5X=&5R;B!<(D-<(B(L"CX@("`@ M("(C96YD:68B+`H^("`@("`B("`@(&5X=&5R;B!C:&%R("IG971E;G8H*3LB M+`HQ,#4L,3`X9#$P.`H\("`@("`B(VEF9&5F(%]?8W!L=7-P;'5S(BP*/"`@ M("`@(F5X=&5R;B!<(D-<(B(L"CP@("`@("(C96YD:68B+`H\("`@("`B("`@ M(&5X=&5R;B!C:&%R("IG971E;G8H*3LB+`H]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]"@I/;B!3=6X@4V]L87)I6UB;VP@7U]%6%1%4DY? M0U]?(&UU'!O2!L97@@86YD(`IY86-C+B!C;VYF:6=U0ID969A=6QT+"!E=F5N M('1H;W5G:"!T:&ES(&AA2UI;G-T86QL960@;&EB2`M;&9L(&ES"G)E<75I&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'README:' 'MD5 check failed' f1a9368f79b7c7653097dcbd1ac81605 README SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'README'`" test 34797 -eq "$shar_count" || $echo 'README:' 'original size' '34797,' 'current size' "$shar_count!" fi fi # ============= README.html ============== if test -f 'README.html' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'README.html' '(file already exists)' else $echo 'x -' extracting 'README.html' '(binary)' sed 's/^X//' << 'SHAR_EOF' | uudecode && begin 600 README.html M/"$M+2`M*BUH=&UL+2HM("TM/@H\(2TM(%)%041-12`M+3X*/"$M+2!07-T96US(CX*("`@("`@ M("`@("`@("`@("`@("!53DE8(%-Y6]U6]U(&AA=F4@/%14/F5N=CPO5%0^("AM;W-T"B`@ M("`@("`@("`@(&UO9&5R;B!53DE8('-Y6]U('=I7-T96US+@H@("`@("`@(#PO4#X*("`@("`@ M("`\(2TM(#T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/2`M+3X*("`@("`@("`\2#(^"B`@ M("`@("`@("`@(#Q!($Y!344](DEN=')O9'5C=&EO;B(^"B`@("`@("`@("`@ M("`@("!);G1R;V1U8W1I;VX*("`@("`@("`@("`@/"]!/@H@("`@("`@(#PO M2#(^"B`@("`@("`@/%`^"B`@("`@("`@("`@(%1H:7,@9&ER96-T;W)Y(&-O M;G1A:6YS(#Q45#YB:6)P87)S93PO5%0^+"`\5%0^8FEB;&5X/"]45#XL"B`@ M("`@("`@("`@(#Q45#YB:6)U;FQE>#PO5%0^+"!A;F0@/%14/F)I8F1U<#PO M5%0^+"!A('-U:71E(&]F('!R;V=R86US"B`@("`@("`@("`@(&9OT)I8FQI;V=R87!H>2!P0H@("`@("`@ M("`@("!O9B!F;W)M871S(&EN('1H92!S86UE('!L86-E('1H870@>6]U(&9O M=6YD('1H92`\5%0^8FEB<&%R"]B M:6(\+U14/BX@(%9I82!E;&5C=')O;FEC"B`@("`@("`@("`@(&UA:6PL(&$@ M;65S"!F"]B:6(*/"]04D4^"B`@("`@("`@/%`^ M"B`@("`@("`@("`@('1O(#Q45#YT=6=L:6)`;6%T:"YU=&%H+F5D=3PO5%0^ M('=I;&P@9V5T('EO=2!S=&%R=&5D+@H@("`@("`@(#PO4#X*("`@("`@("`\ M4#X*("`@("`@("`@("`@5&AR964@9FEL97,L(#Q45#YB:6)L97@N8SPO5%0^ M+"`\5%0^8FEB<&%R2`\5%0^;&5X/"]45#X@ M*&]R(#Q45#X*("`@("`@("`@("`@9FQE>#PO5%0^*2P@86YD(#Q45#YY86-C M/"]45#X@*&]R(#Q45#YB:7-O;CPO5%0^*2X@($-O<&EE2!F;W(@;6%N=6%L(&)O;W1S=')A<'!I;F2UG96YE6]U(&1O(&$@/$5- M/FUA:V4@;6%I;G1A:6YE"!C;VYF:6=U2P@=&AE(&1I2!N86UE9"`\5%0^"YC/"]45#X@86YD"B`@("`@("`@("`@(#Q45#YB:6)U;FQE>"YC/"]4 M5#X@9V5N97)A=&5D(&)Y(#Q45#YL97@\+U14/BP@86YD('1H92!F:6QE"B`@ M("`@("`@("`@(#Q45#YB:6)P87)S92YC/"]45#X@9V5N97)A=&5D(&)Y(#Q4 M5#YY86-C/"]45#XN("!4:&ES('=I;&P*("`@("`@("`@("`@86QL;W<@2!E=F5N="!O9B!A(&9A:6QU2!P2!O9B`\5%0^"B`@("`@ M("`@("`@(&-O;F9I9RYH:6X\+U14/B!W:71H(&$@9F5W('-E8V]N9',@;V8@ M961I=&EN9R!W;W)K+B`@268@>6]U"B`@("`@("`@("`@(&1O('1H:7,L(')E M;65M8F5R('1O('-A=F4@82!C;W!Y(&]F('EO=7(@/%14/F-O;F9I9RYH/"]4 M5#X*("`@("`@("`@("`@=6YD97(@82!D:69F97)E;G0@;F%M92P@8F5C875S M92!R=6YN:6YG(#Q45#YC;VYF:6=U"YY M/"]%33X\5%0^+G1ACPO5%0^*2P*("`@("`@("`@("`@*#Q45#YX+GD\ M+U14/B`](#(N,3,@870@=&AE('1I;64@;V8@=W)I=&EN9R!T:&ES*2P@>6]U M"B`@("`@("`@("`@(&UI9VAT('1R>2!A=6=M96YT:6YG(#Q45#YC;VYF:6=U M2!C;VYS:7-T6]U M2!P M2!L96%D('1O(&9A:6QU2`\ M5%0^8V]N9FEG=7)E/"]45#X*("`@("`@("`@("`@=VEL;"!L96%D('1O(&%N M(&EN8V]R2!O9B!5=&%H/$)2/@H@ M("`@("`@("`@("!$97!A#PO5%0^+SQ45#YF;&5X/"]45#XM(&%N9`H@ M("`@("`@("`@("`\5%0^>6%C8SPO5%0^+SQ45#YB:7-O;CPO5%0^+6=E;F5R M871E9"!C;V1E(&1E<&5N9',@;VX@:&]W"B`@("`@("`@("`@(&UO9&5R;B!T M:&5I2!T;R!S=7!P;'D@861D M:71I;VYA;"!S=VET8VAE6]U(&UU"`M>"!C>'@F(S,T.SPO5%0^*2X*("`@("`@("`\+U`^"B`@ M("`@("`@/%`^"B`@("`@("`@("`@($]N(%5.25@@6]U(&%R92!L:6ME;'D@=&\*("`@("`@("`@ M("`@;F5E9"!T;R!O=F5R6]U('=I6]U7-T96TN("!386UP;&4@;W5T<'5T M(&]F(#Q%33YM86ME(&-H96-K/"]%33X*("`@("`@("`@("`@9G)O;2!A(%5. M25@@#PO5%0^(&%N9"`\5%0^ M;&5X/"]45#XI+"!A;F0*("`@("`@("`@("`@=&AR964@:6YD97!E;F1E;G0@ M<&%R7-T96US(&9O0H@("`@("`@("`@("!C86X@8F4@=')A8V5D('1O(&1E9FEC:65N8VEE2!C;V1E+B`@0VQO"]F;&5X/"]45#X@ M86YD+V]R"B`@("`@("`@("`@(#Q45#YB:7-O;B]B>6%C8R]Y86-C/"]45#X@ M=VAI8V@@:7,@;F]T($,K*RUC;VUP871I8FQE.PH@("`@("`@("`@("!T:&5R M92!I&-U&ES=',N("!#(&AA6%C8SPO5%0^("A31TD@25)) M6"`U+C,I+@H@("`@("`@("`@/"],23X@"B`@("`@("`@("`\3$D^"B`@("`@ M("`@("`@($)R;VME;B!V96YD;W(M<')O=FED960@:&5A9&5R(&9I;&4L(#Q4 M5#YA;&QO8V$N:#PO5%0^("AP9T-#*2X*("`@("`@("`@("`@02!B=6<@F4I M"BL@(VEF9&5F(%]?8W!L=7-P;'5S"BL@97AT97)N(")#(B!C:&%R("H@7U]B M=6EL=&EN7V%L;&]C82`H:6YT*3L**R`C96YD:68*("`*("!?7T5.1%]$14-, M4PH\+U!213X*("`@("`@("`@(#PO3$D^(`H@("`@("`@(#PO54P^"B`@("`@ M("`@("`@(`H)/"$M+2!.0CH@5&AE"`M>"!C>'@\0E(^"B`@("`@("`@("`@("`@("`@("`@+W5S"`R+C$N,3,R"B`@("`@("`@("`@ M("`@("`\+U1$/@H@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@("`@("`@ M("`@("`@("]U"`R+C`N,S4*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@ M("`@("`\5$0^"B`@("`@("`@("`@("`@("`@("`@+W5S"`K(&)Y86-C("@W-2!C;VUP:6QE#Q"4CX*("`@("`@("`@("`@("`@("`@("`O=7-R+VQO8V%L+V)I;B]L8V,@ M+4$@+4$\0E(^"B`@("`@("`@("`@("`@("`@("`@+W5S&Q#/$)2/@H@ M("`@("`@("`@("`@("`@("`@("]U@H@("`@("`@("`@("`@("`@/"]4 M1#X*("`@("`@("`@("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("!' M3E4O3&EN=7@@,BXQ+C$S,@H@("`@("`@("`@("`@("`@/"]41#X*("`@("`@ M("`@("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("`O=7-R+V)I;B]C M8SQ"4CX*("`@("`@("`@("`@("`@("`@("`O=7-R+W!G:2]L:6YU>#@V+V)I M;B]P9T-#/$)2/@H@("`@("`@("`@("`@("`@("`@("]U'@@+7@@8WAX/$)2/@H@("`@("`@("`@("`@("`@("`@("]U"`R+C$N,3,R"B`@("`@("`@("`@("`@("`\+U1$/@H@("`@("`@("`@("`@ M("`@/%1$/@H@("`@("`@("`@("`@("`@("`@("]U#@V+V)I;B]P9V-C/$)2 M/@H@("`@("`@("`@("`@("`@("`@("]U"`K M(&)I#@V+V)I;B]P9V-C/$)2/@H@ M("`@("`@("`@("`@("`@("`@("]U"`K(&)Y86-C("@W,B!C;VUP:6QE#@V+V)I;B]P9T-#/$)2/@H@("`@("`@("`@ M("`@("`@("`@("]U"`R M+C`N,S4*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\ M5$0^"B`@("`@("`@("`@("`@("`@("`@+W5S"`K('EA8V,@*#8S(&-O;7!I;&5R"`R+C$N,3,R"B`@("`@("`@("`@("`@("`\+U1$/@H@("`@("`@("`@ M("`@("`@/%1$/@H@("`@("`@("`@("`@("`@("`@("]U@H@("`@("`@("`@("`@("`@/"]41#X*("`@("`@("`@("`@("`@(#Q4 M1#X*("`@("`@("`@("`@("`@("`@("!'3E4O3&EN=7@@,BXQ+C$S,@H@("`@ M("`@("`@("`@("`@/"]41#X*("`@("`@("`@("`@("`@(#Q41#X*("`@("`@ M("`@("`@("`@("`@("`O=7-R+W!G:2]L:6YU>#@V+V)I;B]P9T-#"B`@("`@ M("`@("`@("`@("`\+U1$/@H@("`@("`@("`@("`\+U12/@H@("`@("`@("`@ M("`\5%(^"B`@("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@("`@ M("`@3F585"!4=7)B;W-T871I;VX*("`@("`@("`@("`@("`@(#PO5$0^"B`@ M("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@("`@("`@36%C:"`S M+C,*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\5$0^ M"B`@("`@("`@("`@("`@("`@("`@+W5S'@@+7@@8WAX"B`@("`@("`@("`@("`@("`\ M+U1$/@H@("`@("`@("`@("`\+U12/@H@("`@("`@("`@("`\5%(^"B`@("`@ M("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@("`@("`@2%`@.3`P,"\W M,S4*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\5$0^ M"B`@("`@("`@("`@("`@("`@("`@2%`M55@@,3`N,#$*("`@("`@("`@("`@ M("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@ M("`@("`@+V)I;B]#0SQ"4CX*("`@("`@("`@("`@("`@("`@("`O=7-R+V)I M;B]#0PH@("`@("`@("`@("`@("`@/"]41#X*("`@("`@("`@("`@/"]44CX* M("`@("`@("`@("`@/%12/@H@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@ M("`@("`@("`@("`@($EN=&5L(%!E;G1I=6T@24D@-#4P34AZ"B`@("`@("`@ M("`@("`@("`\+U1$/@H@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@("`@ M("`@("`@("`@($=.52],:6YU>"`R+C$N,3,R"B`@("`@("`@("`@("`@("`\ M+U1$/@H@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@("`@("`@("`@("`@ M("]U6%C8R`H M-2!C;VUP:6QE'@@+7@@8WAX/$)2/@H@("`@("`@("`@("`@("`@("`@ M("]U6%C8R`H,30@8V]M<&EL97)S M*0H@("`@("`@(#PO2#0^"B`@("`@("`@/%1!0DQ%($)/4D1%4CTB,2(^"B`@ M("`@("`@("`@(#Q44CX*("`@("`@("`@("`@("`@(#Q41#X*("`@("`@("`@ M("`@("`@("`@("`\0CY-86-H:6YE(&%N9"!M;V1E;#PO0CX*("`@("`@("`@ M("`@("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@ M("`@("`@("`@/$(^3R]3/"]"/@H@("`@("`@("`@("`@("`@/"]41#X*("`@ M("`@("`@("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("`\0CY#;VUP M:6QE#Q"4CX*("`@("`@("`@("`@("`@("`@("`O=7-R+VQO8V%L M+V)I;B]G*RL*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@(#PO M5%(^"B`@("`@("`@("`@(#Q44CX*("`@("`@("`@("`@("`@(#Q41#X*("`@ M("`@("`@("`@("`@("`@("!)0DT@4&]W97)00R`T,U`*("`@("`@("`@("`@ M("`@(#PO5$0^"B`@("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@ M("`@("`@04E8(#0N,@H@("`@("`@("`@("`@("`@/"]41#X*("`@("`@("`@ M("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("`O=7-R+VQO8V%L+V)I M;B]G*RL*("`@("`@("`@("`@("`@(#PO5$0^"B`@("`@("`@("`@(#PO5%(^ M"B`@("`@("`@("`@(#Q44CX*("`@("`@("`@("`@("`@(#Q41#X*("`@("`@ M("`@("`@("`@("`@("!.95A4(%1U6%C8SPO M5%0^('9E2!A"B`@("`@("`@("`@(#Q45#YT>7!E9&5F/"]45#XL(&$@;VYE M+6QI;F4@8VAA;F=E(&9R;VT@/%14/FEN=#PO5%0^('1O"B`@("`@("`@("`@ M(#Q45#YL;VYG/"]45#X@=V]U;&0@<&5R;6ET('1H92!T2P@&EO=7,@-C1+0BUS96=M96YT(&QI;6ET(&]F M('1H92!);G1E;"!X.#8*("`@("`@("`@("`@87)C:&ET96-T=7)E+"!A;F0@ M;F]N92!O9B!T:&4@8V]M<&EL97)S+"!E>&-E<'0@9F]R('1H90H@("`@("`@ M("`@("!7871C;VT@,S@V(&-O;7!I;&5R+"!W:6QL(&-O;7!I;&4@=&AE(&-O M9&4N"B`@("`@("`@/"]0/@H@("`@("`@(#Q0/@H@("`@("`@("`@("!&;W)T M=6YA=&5L>2P@=&AE('-O;'5T:6]N(&ES('-I;7!L>2!T;R!U6%C8SPO5%0^ M+B`@270@:&%S(&)E96X@9&5S:6=N960@=&\@=V]R:PH@("`@("`@("`@("!W M:71H(&EN=&5G97)S(&%S('-M86QL(&%S(#$V(&)I=',L(&%N9"!I=',@<&%R M2!V97)S:6]N(&]F($1/4R!G2!A;'-O(')U;B!O;B!E M87)L:65R('9E&5C=71A8FQE7-T96US+"!T M:&4@/%14/@H@("`@("`@("`@("!I8FUP8R]D;W,O8VAE8VLN8F%T/"]45#X@ M9FEL92!F;W(@4$,@1$]3(&UA>2!S97)V92!A`H@("`@("`@("`@("!S;V9T=V%R92!S>7-T96US('1H870@86QS M;R!H879E(&)U9W,L('-O('1H92!F86-T('1H870@=&AE"B`@("`@("`@("`@ M('!R;V=R86T@65S"F-H96-K:6YG(&9O'!A;F0N+BX@97AP86YD"F-H96-K:6YG(&9O`IC:&5C:VEN9R!F;W(@;&XN+BX@;&X*8VAE8VMI;F<@9F]R(&QS M+BXN(&QS"F-H96-K:6YG(&9O6%C8PIC:&5C:VEN9R!F;W(@>FEP+BXN('II<`IC:&5C:VEN9R!F;W(@ M>F]O+BXN('IO;PIC:&5C:VEN9R!F;W(@9FEL96YO+BXN(&YO"F-H96-K:6YG M(&9O2XN+B`M;&P*8VAE8VMI;F<@9F]R('EA8V,@;&EB2XN M+B`M;'D*8VAE8VMI;F<@9F]R(&)I6%C8R`M M=B`@8FEB<&%R0H*8V]N9FQI8W1S.B`V('-H:69T+W)E9'5C90IS960@ M+64@)W,O8VAA7ET97AT("I<6UE93$U!6%Q=+V-H87(@>7ET97AT6S0P M.38P72\G("UE("5]?=6YUR!M86EN M*"D[('TO9"<@+64@)W,O(UL@("`@("`@("!=*F1E9FEN95L@("`@("`@72I9 M64Q-05@N*B0O(V1E9FEN92!964Q-05@@0DE"65E,34%8+R<@+64@)R]E>'1E M"YL('P@7E? M7W5N=7-E9"@I('L@;6%I;B@I.R!]+V0G("UE("=S+R-;("`@("`@(%TJ9&5F M:6YE6R`@("`@("!=*EE93$U!6"XJ)"\C9&5F:6YE(%E93$U!6"!"24)964Q- M05@O)R`M92`G+V5X=&5R;EL@("`@(%TJ8VAA"YC"C$S-B\Q M,#`P(&YO9&5S*"5E*2P@,S$Q+S(U,#`@<&]S:71I;VYS*"5P*2P@-3`O-3`P M("@E;BDL(#,P.34@=')A;G-I=&EO;G,L"C$X."\Q,#`P,"!P86-K960@8VAA M7EL97@]>'AL97@@+6\@8FEB<&%R0HO;W!T+U-53E=S<')O+V)I;B]#0R`@+41?7T585$523E]# M7U\@+41"24)964Q-05@]-#`Y-C`@+4DN("`M;R!B:6)L97@@;&5X;6%I;BYC M(&)I8FQE>"YC("`M;&P@+6QY"FQE>&UA:6XN8SH*8FEB;&5X+F,Z"FQE>"`M M="!B:6)U;FQE>"YL('P@7E?7W5N=7-E9"@I('L@;6%I;B@I.R!]+V0G("UE("=S+R-;("`@("!=*F1E M9FEN95L@("`@("`@72I964Q-05@N*B0O(V1E9FEN92!964Q-05@@0DE"65E, M34%8+R<@+64@)R]E>'1E"YC"B]O M<'0O4U5.5W-P#`P M,PIL97@P,#0*;&5X,#`U"@I4:&4@9F]L;&]W:6YG(&-H96-K#`P,0IU;FQE>#`P,@IU;FQE M>#`P,PIU;FQE>#`P-`IU;FQE>#`P-0H\+U!213X*("`@("`@("`\(2TM(#T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/2`M+3X*("`@("`@("`\2#(^"B`@("`@("`@("`@ M(#Q!($Y!344](FEM<&QE;65N=&%T:6]N+6YO=&5S(CX*("`@("`@("`@("`@ M("`@($EM<&QE;65N=&%T:6]N($YO=&5S"B`@("`@("`@("`@(#PO03X*("`@ M("`@("`\+T@R/@H@("`@("`@(#Q0/@H@("`@("`@("`@("!7:&EL92!T:&4@ M1TY5(#Q45#YA=71O8V]N9FEG=7)E/"]45#X@2!A="!M;W-T(&5N9"UU7-T96US+"!A;F0@82!N97<@<&%R7,@;V8@='5N:6YG('1H90H@("`@("`@("`@ M("`\5%0^8V]N9FEG=7)E+FEN/"]45#X@9FEL92!T;R!H86YD;&4@7!E7-T96US+"!T:&4@=F5N9&]R+7!R;W9I9&5D M"B`@("`@("`@("`@(#Q45#YL97@\+U14/B!I7!E'1E6%C8SPO5%0^"B`@("`@ M("`@("`@(&]U='!U="P@8G5T('1H92!L;V-A=&EO;B!O9B!T:&%T(&AE861E M7!A2!C7!E+`H@("`@ M("`@("`@("!A;F0@8V%U61C M;"YH/"]45#X@:&%S('1O(&AA;F1L90H@("`@("`@("`@("!T:&ES(&-A"!S>7-T96US(&]N($EN=&5L(%!E;G1I=6T@86YD(%-U;@H@("`@("`@ M("`@("!34$%20R!H87)D=V%R92!O;B!W:&EC:"!)('1E#PO5%0^ M+"!B=70@;F]T(&ET2`\5%0^;&5X/"]45#XZ(&]N($A0('-Y7-T96US+"!I="!C875S97,* M("`@("`@("`@("`@/%14/FQE>#PO5%0^('1O(&AA;F<@:6X@86X@87!P87)E M;G0@22]/('=A:70N("!)="!T;V]K"B`@("`@("`@("`@('-E=F5R86P@=')I M97,@;VX@=F%R:6]U7-T96US(&)E9F]R92!)('-E='1L960@;VX@=&AE M"B`@("`@("`@("`@(&-O9&4@9FEN86QL>2!U7-T96US+"!T:&5R92!I6%C8SPO5%0^"B`@("`@("`@("`@('=H:6-H(')E7-T96TL(&5I=&AE6=N=7,@1E10('-I=&4Z"B`@("`@("`@("`@(#Q!($A2 M148](F9T<#HO+V9T<"YC>6=N=7,N8V]M+W!U8B]G9&(O:6YFB(^"B`@("`@("`@("`@("`@("!F='`Z M+R]F='`N8WEG;G5S+F-O;2]P=6(O9V1B+VEN9G)A2!V97)S:6]N(&]F"B`@("`@("`@("`@($=.52`\5%0^875T;V-O;F9I9SPO M5%0^+"!A;F0@:&%S(&)U9R!F:7AE6%C8SPO5%0^('9E2YE9'4O<'5B+S1B2YE9'4O<'5B M+S1B6%C8RTY-#`S,C0O8GEA8V,O'1E'1E'1E'1E M7!E#PO5%0^(&%N9"`\5%0^>6%C8SPO5%0^ M+@H@("`@("`@("`@("`\5%0^8V]N9FEG=7)E+FEN/"]45#X@:&%S(&$@2`\5%0^+6QF;#PO5%0^(&ES(')E<75I6]U M<@H@("`@("`@("`@("!S:71E(&AA&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'README.html:' 'MD5 check failed' 79882cd7ee28c7b867bb0f71bc43f418 README.html SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'README.html'`" test 76322 -eq "$shar_count" || $echo 'README.html:' 'original size' '76322,' 'current size' "$shar_count!" fi fi # ============= acconfig.h ============== if test -f 'acconfig.h' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'acconfig.h' '(file already exists)' else $echo 'x -' extracting 'acconfig.h' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'acconfig.h' && /* This file is not included by any C file, but it is required by the GNU autoconfigure system to define additional symbols that might be referred to in the source code. */ X @BOTTOM@ X #undef HAVE_IBMPC SHAR_EOF $shar_touch -am 0602182398 'acconfig.h' && chmod 0644 'acconfig.h' || $echo 'restore of' 'acconfig.h' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'acconfig.h:' 'MD5 check failed' 7b981532a55135e63740fa90ab069556 acconfig.h SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'acconfig.h'`" test 202 -eq "$shar_count" || $echo 'acconfig.h:' 'original size' '202,' 'current size' "$shar_count!" fi fi # ============= args.h ============== if test -f 'args.h' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'args.h' '(file already exists)' else $echo 'x -' extracting 'args.h' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'args.h' && #if (defined(__cplusplus) || defined(__STDC__) || defined(c_plusplus)) #define NEW_STYLE 1 #define VOID void #define ARGS(parenthesized_list) parenthesized_list #else #define NEW_STYLE 0 #define VOID #define ARGS(parenthesized_list) () #define const #endif X #if !defined(EXIT_SUCCESS) #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif SHAR_EOF $shar_touch -am 0601095798 'args.h' && chmod 0644 'args.h' || $echo 'restore of' 'args.h' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'args.h:' 'MD5 check failed' 55c9505b974f991773b92dd0ab976a60 args.h SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'args.h'`" test 338 -eq "$shar_count" || $echo 'args.h:' 'original size' '338,' 'current size' "$shar_count!" fi fi # ============= bibdup.awk ============== if test -f 'bibdup.awk' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibdup.awk' '(file already exists)' else $echo 'x -' extracting 'bibdup.awk' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibdup.awk' && # /u/sy/beebe/tex/bibclean/lex/bibdup.awk, Thu Jan 14 07:14:47 1993 # Edit by Nelson H. F. Beebe # ======================================================================== # Find duplicate @string{...} definitions and duplicate citation keys # in a token stream from bibclean or biblex. # # Usage: # # bibclean -no-pretty bibfiles | tr A-Z a-z | nawk -f bibdup.awk # or # biblex bibfiles | tr A-Z a-z | nawk -f bibdup.awk # # [16-Jan-1993] # ======================================================================== X /^#/ { last_line = $0 } X $2 == "key" { X if ($3 in key) X printf("Duplicate key [%s]:\n\t%s\n\t%s\n", X $3, key[$3], last_line); X else X key[$3] = last_line; } X ($2 == "string") || ($2 == "entry") { last_entry = $3 } X ($2 == "abbrev") && (last_entry == "\"string\"") { X if ($3 in abbrev) X printf("Duplicate string abbreviation [%s]:\n\t%s\n\t%s\n", X $3, abbrev[$3], last_line); X else X abbrev[$3] = last_line; } SHAR_EOF $shar_touch -am 0116140893 'bibdup.awk' && chmod 0644 'bibdup.awk' || $echo 'restore of' 'bibdup.awk' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibdup.awk:' 'MD5 check failed' 910d0213b7288d18516daddfbb4d0bf0 bibdup.awk SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibdup.awk'`" test 987 -eq "$shar_count" || $echo 'bibdup.awk:' 'original size' '987,' 'current size' "$shar_count!" fi fi # ============= bibdup.sin ============== if test -f 'bibdup.sin' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibdup.sin' '(file already exists)' else $echo 'x -' extracting 'bibdup.sin' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibdup.sin' && #!/bin/sh # Find duplicate @string{...} definitions and duplicate citation keys # in one or more BibTeX .bib files. # # Usage: # bibdup bibfiles # # or # bibdup &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibdup.sin:' 'MD5 check failed' f62b60d0e29aefbe8a49cf12e4772807 bibdup.sin SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibdup.sin'`" test 554 -eq "$shar_count" || $echo 'bibdup.sin:' 'original size' '554,' 'current size' "$shar_count!" fi fi # ============= bibdup.man ============== if test -f 'bibdup.man' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibdup.man' '(file already exists)' else $echo 'x -' extracting 'bibdup.man' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibdup.man' && X.\" ==================================================================== X.\" @Troff-man-file{ X.\" author = "Nelson H. F. Beebe", X.\" version = "1.04", X.\" date = "08 May 1999", X.\" time = "09:24:57 MDT", X.\" filename = "bibdup.man", X.\" address = "Center for Scientific Computing X.\" University of Utah X.\" Department of Mathematics, 322 INSCC X.\" 155 S 1400 E RM 233 X.\" Salt Lake City, UT 84112-0090 X.\" USA", X.\" telephone = "+1 801 581 5254", X.\" FAX = "+1 801 585 1640, +1 801 581 4148", X.\" URL = "http://www.math.utah.edu/~beebe", X.\" checksum = "44492 130 502 4316", X.\" email = "beebe@math.utah.edu, beebe@acm.org, X.\" beebe@ieee.org (Internet)", X.\" codetable = "ISO/ASCII", X.\" keywords = "bibliography, BibTeX, lexical analysis", X.\" supported = "yes", X.\" docstring = "This file is the UNIX nroff/troff manual X.\" page documentation for bibdup, a tool for X.\" checking for duplicate abbreviations and X.\" keys in BibTeX bibliography data base X.\" files. X.\" X.\" The checksum field above contains a CRC-16 X.\" checksum as the first value, followed by the X.\" equivalent of the standard UNIX wc (word X.\" count) utility output of lines, words, and X.\" characters. This is produced by Robert X.\" Solovay's checksum utility.", X.\" } X.\"===================================================================== X.\" X.if t .ds Bi B\s-2IB\s+2T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X X.if n .ds Bi BibTeX X.\" X.\"===================================================================== X.TH BIBDUP 1 "08 May 1999" "Version 1.04" X.\"===================================================================== X.SH NAME bibdup \- check for duplicate abbreviations and entries in BibTeX \ bibliography data base files X.\"===================================================================== X.SH SYNOPSIS X.B bibdup X.I "outfile" X.nf or X.fi X.B bibdup X.I "bibfile1 bibfile2 bibfile3 .\|.\|." X.I ">outfile" X.\"===================================================================== X.SH DESCRIPTION X.B bibdup uses X.BR biblex (1) to lexically analyze \*(Bi files and X.BR nawk (1) to check for duplicate @String{.\|.\|.} abbreviations, and duplicate citation keys. Letter case is ignored in string comparisons, by the simple expedient of using X.BR tr (1) to convert the lexical token stream output by X.BR biblex (1) to lower case. X.PP Duplicates are displayed on the standard output in the form X.RS X.nf Duplicate string abbreviation ["pub-aw"]: X # line 1 "ll.bib" X # line 141 "master.bib" Duplicate key ["lamport:ldp85"]: X # line 4 "ll.bib" X # line 4172 "master.bib" \&.\|.\|. X.fi X.RE ANSI/ISO Standard C preprocessor lines identify the line number and file name where the duplicates are detected. X.\"===================================================================== X.SH "SEE ALSO" X.BR bibcheck (1), X.BR bibclean (1), X.BR bibextract (1), X.BR bibjoin (1), X.BR biblabel (1), X.BR biblex (1), X.BR biborder (1), X.BR bibparse (1), X.BR bibsort (1), X.BR bibtex (1), X.BR bibunlex (1), X.BR citefind (1), X.BR citesub (1), X.BR citetags (1), X.BR latex (1), X.BR nawk (1), X.BR scribe (1), X.BR tex (1), X.BR tr (1). X.\"===================================================================== X.SH AUTHOR X.nf Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Email: \fCbeebe@math.utah.edu\fP, \fCbeebe@acm.org\fP, \fCbeebe@ieee.org\fP (Internet) WWW URL: \fChttp://www.math.utah.edu/~beebe\fP Telephone: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 X.fi X.\"===================================================================== X.\" This is for GNU Emacs file-specific customization: X.\" Local Variables: X.\" fill-column: 50 X.\" End: SHAR_EOF $shar_touch -am 0508092499 'bibdup.man' && chmod 0644 'bibdup.man' || $echo 'restore of' 'bibdup.man' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibdup.man:' 'MD5 check failed' 32544437f68107d808177b81310cc66f bibdup.man SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibdup.man'`" test 4316 -eq "$shar_count" || $echo 'bibdup.man:' 'original size' '4316,' 'current size' "$shar_count!" fi fi # ============= bibfiles.sok ============== if test -f 'bibfiles.sok' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibfiles.sok' '(file already exists)' else $echo 'x -' extracting 'bibfiles.sok' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibfiles.sok' && 1.030s 2.403s 3.313s 3.786s 336MHz 4MB ABBREV BIBDUP BIBLEX BIBPARSE BIBT BIBTEX BIBUNLEX Bi BibTeX C CRC E Emacs Email F FAX H INLINE INSCC ISBN ISSN LBRACE MDT MST NUL RBRACE S Sc Solovay's TUGboat Te TeX UPPERCASE URL UltraSPARC WWW XX XXSI acm.org aw awk beebe bibcheck bibclean bibdup bibdup.man bibextract bibfile1 bibfile2 bibfile3 bibindex bibjoin biblabel biblex biblex.man biblook biborder bibparse bibparse.man bibsearch bibsort bibtex bibunlex bibunlex.man citefind citesub citetags codetable conformant desktop docstring e email file1 file2 file3 g groff http ieee.org infile lamport:ldp85 lhs ll.bib lowercase master.bib math.utah.edu mylib.bib nawk new.bib nocite nonassoc prettyprint prettyprinted prettyprinters prettyprinting s tex texbook1.bib www.math.utah.edu SHAR_EOF $shar_touch -am 0508114399 'bibfiles.sok' && chmod 0644 'bibfiles.sok' || $echo 'restore of' 'bibfiles.sok' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibfiles.sok:' 'MD5 check failed' b1d0a7317ad6f287d3023e73ed200c17 bibfiles.sok SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibfiles.sok'`" test 779 -eq "$shar_count" || $echo 'bibfiles.sok:' 'original size' '779,' 'current size' "$shar_count!" fi fi # ============= biblex.dat ============== if test -f 'biblex.dat' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'biblex.dat' '(file already exists)' else $echo 'x -' extracting 'biblex.dat' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'biblex.dat' && @Book{Lamport:LDP85, X title = "{\LaTeX}---A Document X Preparation System---User's X Guide and Reference Manual", } X @String{pub-AW = X "Ad{\-d}i{\-s}on-Wes{\-l}ey"} X @Book{Lamport:LDP85, X author = "Leslie Lamport", X title = "{\LaTeX}---A Document X Preparation System---User's X Guide and Reference Manual", X publisher = pub-AW, X year = "1985", X ISBN = "0-201-15790-X", } SHAR_EOF $shar_touch -am 0205103199 'biblex.dat' && chmod 0444 'biblex.dat' || $echo 'restore of' 'biblex.dat' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'biblex.dat:' 'MD5 check failed' 5caa60d5df2ec76301f1f66bdc825b10 biblex.dat SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'biblex.dat'`" test 457 -eq "$shar_count" || $echo 'biblex.dat:' 'original size' '457,' 'current size' "$shar_count!" fi fi # ============= biblex.l ============== if test -f 'biblex.l' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'biblex.l' '(file already exists)' else $echo 'x -' extracting 'biblex.l' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'biblex.l' && X /* bibparse - parse BibTeX file according to prototype grammar */ %{ X /********************************************************************** X @Lex-file{ X author = "Nelson H. F. Beebe", X version = "1.04", X date = "07 May 1999", X time = "07:53:04 MDT", X filename = "biblex.l", X address = "Center for Scientific Computing X University of Utah X Department of Mathematics, 322 INSCC X 155 S 1400 E RM 233 X Salt Lake City, UT 84112-0090 X USA", X telephone = "+1 801 581 5254", X FAX = "+1 801 585 1640, +1 801 581 4148", X URL = "http://www.math.utah.edu/~beebe", X checksum = "04346 616 1389 12897", X email = "beebe@math.utah.edu, beebe@acm.org, X beebe@ieee.org (Internet)", X codetable = "ISO/ASCII", X keywords = "BibTeX, bibliography, lexical analysis, lexer", X supported = "yes", X docstring = "This lex file defines a lexical analyzer for X a prototype BibTeX grammar. X X The resulting program reads one or more X BibTeX files specified on the command line, X or standard input, and produces on the X standard output a stream of tokens of the X form X X X X This is similar to the format produced by X bibclean with the -no-prettyprint option. X X Such token lines are interspersed with X input line identifier lines of the form X used by the ANSI/ISO Standard C preprocessor X X # line 3 X X so that the error diagnostics can identify X the location in the input file(s). X X The output stream can be filtered by other X utilities, and reconstructed into a BibTeX X file with an associated software tool, X bibunlex. X X The checksum field above contains a CRC-16 X checksum as the first value, followed by the X equivalent of the standard UNIX wc (word X count) utility output of lines, words, and X characters. This is produced by Robert X Solovay's checksum utility.", X } X **********************************************************************/ X #include X #include #include #include X #if defined(HAVE_STDLIB_H) #include #endif X #include "args.h" #include "bibyydcl.h" X #include "token.h" X static void compact_space ARGS((void)); static void eof_error ARGS((void)); static int next_char ARGS((void)); static token_t out_braced_literal ARGS((void)); static token_t out_braced_string ARGS((void)); static token_t out_lbrace ARGS((void)); static token_t out_lparen ARGS((void)); static token_t out_protected_string ARGS((token_t t)); static token_t out_rbrace ARGS((void)); static token_t out_rparen ARGS((void)); static token_t out_string ARGS((void)); static token_t out_token ARGS((token_t t_)); static void overflow ARGS((void)); X static int brace_level = 0; int do_lex_output = 1; static token_t last_object = TOKEN_UNKNOWN; static token_t last_token = TOKEN_UNKNOWN; long line_number = 1L; /* global: used in lexmain() */ static int paren_level = 0; const char *the_filename = ""; /* global: used in lexmain() */ X #define BYTE_VAL(c) ((unsigned int)((c) & 0xff)) #define EOFILE 0 /* end-of-file from lex input() */ #define ISPRINT(c) isprint(BYTE_VAL(c)) /* ensure arg in 0..255 */ #define ISDIGIT(c) isdigit(BYTE_VAL(c)) #define ISSPACE(c) isspace(BYTE_VAL(c)) #define RETURN(n) return (1000 + (n)) /* bibparse.y biases by 1000 */ X #undef YYLMAX X #if defined(HAVE_IBMPC) #define YYLMAX 32760 #else #define YYLMAX BIBYYLMAX #endif X %} X /* increase transition and output table sizes */ %a 3000 %o 6000 X /* abbrev, entry, key, field name syntax */ N [A-Za-z][-A-Za-z0-9:.+/']* X /* BibTeX entry opening delimiter */ O [({] X /* one white space character */ X /* \013 == \v, but lex doesn't */ X /* recognize \v */ W [ \f\r\t\013] X /* optional `horizontal' space */ S {W}* X %% [@] RETURN (out_token(TOKEN_AT)); X [Cc][Oo][Mm][Mm][Ee][Nn][Tt] {RETURN ((last_token == TOKEN_AT) ? X out_token(TOKEN_COMMENT) : X out_token(TOKEN_ABBREV)); } X [Ii][Nn][Cc][Ll][Uu][Dd][Ee] {RETURN ((last_token == TOKEN_AT) ? X out_token(TOKEN_INCLUDE) : X out_token(TOKEN_ABBREV)); } X [Pp][Rr][Ee][Aa][Mm][Bb][Ll][Ee] { RETURN ((last_token == TOKEN_AT) ? X out_token(TOKEN_PREAMBLE) : X out_token(TOKEN_ABBREV)); } X [Ss][Tt][Rr][Ii][Nn][Gg] { RETURN ((last_token == TOKEN_AT) ? X out_token(TOKEN_STRING) : X out_token(TOKEN_ABBREV)); } X {N} { X if (last_object == TOKEN_STRING) X RETURN(out_token(TOKEN_ABBREV)); X switch (last_token) X { X case TOKEN_COMMA: X RETURN(out_token(TOKEN_FIELD)); X case TOKEN_LBRACE: X RETURN(out_token(TOKEN_KEY)); X case TOKEN_AT: X RETURN(out_token(TOKEN_ENTRY)); X default: X RETURN(out_token(TOKEN_ABBREV)); X } X } X [0-9]+ RETURN (out_token(TOKEN_VALUE)); X [%].*[\n]{S} RETURN (out_token(TOKEN_INLINE)); X [#] RETURN (out_token(TOKEN_SHARP)); X ["] RETURN (out_string()); X [{] RETURN (out_lbrace()); X [}] RETURN (out_rbrace()); X [(] RETURN (out_lparen()); X [)] RETURN (out_rparen()); X [=] RETURN (out_token(TOKEN_EQUALS)); X [,] RETURN (out_token(TOKEN_COMMA)); X [\n] RETURN (out_token(TOKEN_NEWLINE)); X {W}+ RETURN (out_token(TOKEN_SPACE)); X X. RETURN (out_token(TOKEN_LITERAL)); X %% static void compact_space(VOID) /* compact runs of space to single blank */ { X char *p; X char *q; X X for (p = q = (char*)&yytext[0]; *p ; ) X { X *q++ = ISSPACE(*p) ? ' ' : *p; X if (ISSPACE(*p)) X { X while (ISSPACE(*p)) X ++p; X } X else X ++p; X } X *q = '\0'; } X X static void eof_error(VOID) { X (void)fprintf(stderr,"End-of-file in value string\n"); X exit(EXIT_FAILURE); } X X static int next_char(VOID) { X int c; X X c = input(); X if ((c == EOFILE) || (c == EOF)) /* lex uses EOFILE, flex uses EOF */ X eof_error(); X else if (c == '\n') X line_number++; X X return (c); } X X static token_t out_braced_literal(VOID) { X int c; X int n; X int plevel = paren_level; X X for (n = 1; brace_level > 0; ) X { X c = next_char(); X if (c == EOF) X break; X if (n > (YYLMAX - 2)) X overflow(); X yytext[n++] = c; X switch (c) X { X case '(': X plevel++; X break; X case ')': X plevel--; X break; X case '{': X brace_level++; X break; X case '}': X brace_level--; X break; X default: X break; X } X if ((paren_level > 0) && (plevel == 0)) X break; X } X yytext[0] = '{'; X yytext[n-1] = '}'; X yytext[n] = '\0'; X return (out_token(TOKEN_LITERAL)); } X X static token_t out_braced_string(VOID) { /* convert braced to quoted string */ X int blevel; X int c; X int n; X X for (blevel = 1, n = 1; (blevel > 0); ) X { X c = next_char(); X if (c == EOF) X break; X if (n > (YYLMAX - 5)) X overflow(); X yytext[n++] = c; X switch (c) X { X case '{': X blevel++; X break; X X case '}': X blevel--; X break; X X case '"': X if (blevel == 1) X { X if (yytext[n-2] == '\\') X { X c = next_char(); X if (c == EOF) X break; X yytext[n-2] = '{'; X yytext[n-1] = '\\'; X yytext[n++] = '"'; X yytext[n++] = c; X yytext[n++] = '}'; X } X else X { X yytext[n-1] = '{'; X yytext[n++] = '"'; X yytext[n++] = '}'; X } X } X break; X X default: X break; X } X } X yytext[0] = '"'; X yytext[n-1] = '"'; X yytext[n] = '\0'; X return (out_token(TOKEN_VALUE)); } X X static token_t out_lbrace(VOID) { X if (brace_level == 0) X { X brace_level++; X switch (last_object) X { X case TOKEN_COMMENT: X case TOKEN_INCLUDE: X return (out_braced_literal()); X default: X return (out_token(TOKEN_LBRACE)); X } X } X else X return (out_braced_string()); } X X static token_t out_lparen(VOID) { X switch (last_token) X { X case TOKEN_ENTRY: X case TOKEN_PREAMBLE: X case TOKEN_STRING: X yytext[0] = '{'; X paren_level++; X brace_level++; X return (out_token(TOKEN_LBRACE)); X X case TOKEN_COMMENT: X case TOKEN_INCLUDE: X yytext[0] = '{'; X paren_level++; X brace_level++; X return (out_braced_literal()); X X default: X return (out_token(TOKEN_LITERAL)); X } } X X #if NEW_STYLE static token_t out_protected_string(token_t t) #else /* K&R style */ static token_t out_protected_string(t) token_t t; #endif /* NEW_STYLE */ { X char octal[4 + 1]; X const char *token = (const char*)&yytext[0]; X X if (*token == (char)'\0') /* ignore empty tokens */ X return (TOKEN_VALUE); X output('"'); X if ((yytext[0] != '"') && (t == TOKEN_VALUE)) X { /* supply missing quote delimiters */ X output('\\'); X output('\"'); X } X for (; *token; ++token) X { X switch (*token) X { X case '"': X case '\\': X output('\\'); X output(*token); X break; X case '\b': X output('\\'); X output('b'); X break; X case '\f': X output('\\'); X output('f'); X break; X case '\n': X output('\\'); X output('n'); X break; X case '\r': X output('\\'); X output('r'); X break; X case '\t': X output('\\'); X output('t'); X break; X case '\v': X output('\\'); X output('v'); X break; X default: X if (ISPRINT(*token)) X output(*token); X else X { X (void)sprintf(octal,"\\%03o",BYTE_VAL(*token)); X output(octal[0]); X output(octal[1]); X output(octal[2]); X output(octal[3]); X } X break; X } X } X if ((yytext[0] != '"') && (t == TOKEN_VALUE)) X { /* supply missing quote delimiters */ X output('\\'); X output('\"'); X } X output('"'); X output('\n'); X return (TOKEN_VALUE); } X X static token_t out_rbrace(VOID) { X if (brace_level == 1) X { X brace_level--; X return (out_token(TOKEN_RBRACE)); X } X else X return (out_token(TOKEN_LITERAL)); } X X static token_t out_rparen(VOID) { X paren_level--; X if (paren_level == 0) X { X yytext[0] = '}'; X brace_level--; X return (out_token(TOKEN_RBRACE)); X } X else X return (out_token(TOKEN_LITERAL)); } X X static token_t out_string(VOID) { X int blevel; X int c; X int n; X X for (blevel = 0, n = 1; ; ) X { X c = next_char(); X if (c == EOF) X break; X if (n > (YYLMAX - 2)) X overflow(); X yytext[n++] = c; X switch (c) X { X case '{': X blevel++; X break; X case '}': X blevel--; X break; X case '"': X if (blevel == 0) X goto LOOP_EXIT; X default: X break; X } X } X LOOP_EXIT: X yytext[n++] = '\0'; X return (out_token(TOKEN_VALUE)); } X X #if NEW_STYLE static token_t out_token(token_t t) #else /* K&R style */ static token_t out_token(t) token_t t; #endif /* NEW_STYLE */ { /* ALL token output is directed through this function */ X int n; X X if (do_lex_output) X (void)printf("%d\t%s\t", (int)t, type_name[(int)t]); X switch (t) X { X case TOKEN_AT: X last_object = TOKEN_UNKNOWN; X if (do_lex_output) X (void)printf("\"%s\"\n", yytext); X break; X X case TOKEN_VALUE: X if (do_lex_output) X { X if (ISDIGIT(yytext[0])) X { /* supply surrounding quotes */ X n = strlen((const char*)&yytext[0]); X if ((n + 3) > YYLMAX) X overflow(); X yytext[n+2] = '\0'; X yytext[n+1] = '"'; X for (; n > 0; --n) X yytext[n] = yytext[n-1]; X } X else X compact_space(); X out_protected_string(t); X } X break; X X case TOKEN_COMMENT: X case TOKEN_INCLUDE: X if (do_lex_output) X out_protected_string(t); X last_object = t; X break; X X case TOKEN_ENTRY: X case TOKEN_PREAMBLE: X case TOKEN_STRING: X if (do_lex_output) X (void)printf("\"%s\"\n", yytext); X last_object = t; X break; X X case TOKEN_FIELD: X case TOKEN_KEY: X if (do_lex_output) X (void)printf("\"%s\"\n", yytext); X break; X X case TOKEN_INLINE: X case TOKEN_NEWLINE: X line_number++; X if (do_lex_output) X { X out_protected_string(t); X (void)printf("# line %ld \"%s\"\n", line_number, the_filename); X } X break; X X case TOKEN_LITERAL: X default: X if (do_lex_output) X out_protected_string(t); X break; X } X if (!((t == TOKEN_INLINE) || X (t == TOKEN_SPACE) || X (t == TOKEN_NEWLINE))) X last_token = t; /* remember last non-space token type */ X return (t); } X X static void overflow(VOID) { X (void)fprintf(stderr, X "String too long for %ld-character buffer\n",YYLMAX); X exit (EXIT_FAILURE); } X X #if defined(HAVE_IBMPC) int yywrap(VOID) { X return 1; } #endif SHAR_EOF $shar_touch -am 0507182099 'biblex.l' && chmod 0644 'biblex.l' || $echo 'restore of' 'biblex.l' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'biblex.l:' 'MD5 check failed' 7756bc1c941a03542db2faa0d7a48fbe biblex.l SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'biblex.l'`" test 13061 -eq "$shar_count" || $echo 'biblex.l:' 'original size' '13061,' 'current size' "$shar_count!" fi fi # ============= biblex.man ============== if test -f 'biblex.man' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'biblex.man' '(file already exists)' else $echo 'x -' extracting 'biblex.man' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'biblex.man' && X.\"===================================================================== X.\" @Troff-man-file{ X.\" author = "Nelson H. F. Beebe", X.\" version = "1.04", X.\" date = "08 May 1999", X.\" time = "09:24:34 MDT", X.\" filename = "biblex.man", X.\" address = "Center for Scientific Computing X.\" University of Utah X.\" Department of Mathematics, 322 INSCC X.\" 155 S 1400 E RM 233 X.\" Salt Lake City, UT 84112-0090 X.\" USA", X.\" telephone = "+1 801 581 5254", X.\" FAX = "+1 801 585 1640, +1 801 581 4148", X.\" URL = "http://www.math.utah.edu/~beebe", X.\" checksum = "38579 238 944 7101", X.\" email = "beebe@math.utah.edu, beebe@acm.org, X.\" beebe@ieee.org (Internet)", X.\" codetable = "ISO/ASCII", X.\" keywords = "bibliography, BibTeX, lexical analysis", X.\" supported = "yes", X.\" docstring = "This file is the UNIX nroff/troff manual X.\" page documentation for biblex, a tool for X.\" lexically analyzing BibTeX bibliography X.\" data base files into a token stream that X.\" can be conveniently processed by other X.\" tools, or reconstructed into a BibTeX file X.\" by bibunlex. X.\" X.\" The checksum field above contains a CRC-16 X.\" checksum as the first value, followed by the X.\" equivalent of the standard UNIX wc (word X.\" count) utility output of lines, words, and X.\" characters. This is produced by Robert X.\" Solovay's checksum utility.", X.\" } X.\"===================================================================== X.\" X.if t .ds Bi B\s-2IB\s+2T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X X.if n .ds Bi BibTeX X.\" X.if t .ds Sc S\s-2CRIBE\s+2 X.if n .ds Sc Scribe X.\" X.\"===================================================================== X.TH BIBLEX 1 "08 May 1999" "Version 1.04" X.\"===================================================================== X.SH NAME biblex \- lexically analyze BibTeX bibliography data base files X.\"===================================================================== X.SH SYNOPSIS X.B biblex X.I "outfile" X.nf or X.fi X.B biblex X.I "bibfile1 bibfile2 bibfile3 .\|.\|." X.I ">outfile" X.\"===================================================================== X.SH DESCRIPTION X.B biblex converts one or more bibliography data base files in \*(Bi format to a lexical token stream that is convenient for processing by other tools. X.PP The companion X.BR bibunlex (1) program can be used to recombine such a token stream back into a \*(Bi file. X.PP \*(Sc-format bibliography files can be handled as well if they are first converted to \*(Bi form by X.BR bibclean (1). X.PP Only minimal checks are made on the correctness of the input stream, and X.B biblex will happily carry out a lexical analysis of nonsensical input, without issuing warnings or errors of any kind, other than possible internal string buffer overflow. To verify that X.BR biblex 's output token stream is meaningful, the input files can be given to X.BR bibparse (1) for parsing analysis according to a proposed grammar for \*(Bi. X.\"===================================================================== X.SH "LEXICAL ANALYSIS" X.B biblex produces output in lines of the form X.PP X.RS X.nf "" X.fi X.RE X.PP Each output line contains a single complete token, identified by a small integer number for use by a computer program, a token type name for human readers, and a string value in quotes. X.PP Special characters in the token value string are represented with ANSI/ISO Standard C escape sequences, so all characters other than NUL are representable, and multi-line values can be represented in a single line. X.PP Here are the token numbers and token type names that can appear in the output: X.PP X.RS X.nf X 0 UNKNOWN X 1 ABBREV X 2 AT X 3 COMMA X 4 COMMENT X 5 ENTRY X 6 EQUALS X 7 FIELD X 8 INCLUDE X 9 INLINE 10 KEY 11 LBRACE 12 LITERAL 13 NEWLINE 14 PREAMBLE 15 RBRACE 16 SHARP 17 SPACE 18 STRING 19 VALUE X.fi X.RE X.PP Programs that parse such output should also be prepared for lines beginning with the warning prefix, %%, or the error prefix, ??, and for ANSI/ISO Standard C line number directives of the form X.RS # line 273 "texbook1.bib" X.RE which record the line number and file name of the current input file. X.PP As an example of the use of X.BR biblex , the UNIX command pipeline X.RS X.nf \fBbiblex\fP \fImylib.bib\fP | \e X \fBawk\fP '$2 == "KEY" {print $3}' | \e X \fBsed\fP -e 's/"//g' | \e X \fBsort\fP X.fi X.RE will extract a sorted list of all citation keys in the file X.IR mylib.bib . X.PP The LITERAL token type is used for arbitrary text that X.B biblex does not examine further, such as the contents of a @Preamble{.\|.\|.} or a @Comment{.\|.\|.}. X.PP The UNKNOWN token type should never appear in the output stream. It is used internally to initialize token type variables. X.\"===================================================================== X.SH BUGS Limitations of the X.BR lex (1) lexical analyzer generator used to construct X.B biblex prevent handling of files containing ASCII NUL; that character will be interpreted as an end-of-file condition. X.PP Older versions of X.BR lex (1) are not X.IR "8-bit clean" ; they will not reliably handle characters 128\(en255. This latter deficiency is being remedied by the XX/Open Consortium activities to internationalize and standard UNIX applications. X.\"===================================================================== X.SH "SEE ALSO" X.BR bibcheck (1), X.BR bibclean (1), X.BR bibdup (1), X.BR bibextract (1), X.BR bibjoin (1), X.BR biblabel (1), X.BR biborder (1), X.BR bibparse (1), X.BR bibsearch (1), X.BR bibsort (1), X.BR bibtex (1), X.BR bibunlex (1), X.BR citefind (1), X.BR citesub (1), X.BR citetags (1), X.BR latex (1), X.BR scribe (1), X.BR tex (1). X.br XX/Open Company, Ltd., X.IR "X/Open Portability Guide, XSI Commands and Utilities" , volume 1. Prentice-Hall, Englewood Cliffs, NJ 07632, USA, 1989. ISBN 0-13-685835-X. X.\"===================================================================== X.SH AUTHOR X.nf Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Email: \fCbeebe@math.utah.edu\fP, \fCbeebe@acm.org\fP, \fCbeebe@ieee.org\fP (Internet) WWW URL: \fChttp://www.math.utah.edu/~beebe\fP Telephone: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 X.fi X.\"===================================================================== X.\" This is for GNU Emacs file-specific customization: X.\" Local Variables: X.\" fill-column: 50 X.\" End: SHAR_EOF $shar_touch -am 0508092499 'biblex.man' && chmod 0644 'biblex.man' || $echo 'restore of' 'biblex.man' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'biblex.man:' 'MD5 check failed' 110e6b9d93215ca120cd2e6dda076cfb biblex.man SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'biblex.man'`" test 7101 -eq "$shar_count" || $echo 'biblex.man:' 'original size' '7101,' 'current size' "$shar_count!" fi fi # ============= biblex.ok ============== if test -f 'biblex.ok' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'biblex.ok' '(file already exists)' else $echo 'x -' extracting 'biblex.ok' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'biblex.ok' && # line 1 "stdin" 2 AT "@" 5 ENTRY "Book" 11 LBRACE "{" 10 KEY "Lamport:LDP85" 3 COMMA "," 13 NEWLINE "\n" # line 2 "stdin" 17 SPACE " " 7 FIELD "title" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 19 VALUE "\"{\\LaTeX}---A Document Preparation System---User's Guide and Reference Manual\"" 3 COMMA "," 13 NEWLINE "\n" # line 5 "stdin" 15 RBRACE "}" 13 NEWLINE "\n" # line 6 "stdin" 13 NEWLINE "\n" # line 7 "stdin" 2 AT "@" 18 STRING "String" 11 LBRACE "{" 1 ABBREV "pub-AW" 17 SPACE " " 6 EQUALS "=" 13 NEWLINE "\n" # line 8 "stdin" 17 SPACE " " 19 VALUE "\"Ad{\\-d}i{\\-s}on-Wes{\\-l}ey\"" 15 RBRACE "}" 13 NEWLINE "\n" # line 9 "stdin" 13 NEWLINE "\n" # line 10 "stdin" 2 AT "@" 5 ENTRY "Book" 11 LBRACE "{" 10 KEY "Lamport:LDP85" 3 COMMA "," 13 NEWLINE "\n" # line 11 "stdin" 17 SPACE " " 7 FIELD "author" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 19 VALUE "\"Leslie Lamport\"" 3 COMMA "," 13 NEWLINE "\n" # line 12 "stdin" 17 SPACE " " 7 FIELD "title" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 19 VALUE "\"{\\LaTeX}---A Document Preparation System---User's Guide and Reference Manual\"" 3 COMMA "," 13 NEWLINE "\n" # line 15 "stdin" 17 SPACE " " 7 FIELD "publisher" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 1 ABBREV "pub-AW" 3 COMMA "," 13 NEWLINE "\n" # line 16 "stdin" 17 SPACE " " 7 FIELD "year" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 19 VALUE "\"1985\"" 3 COMMA "," 13 NEWLINE "\n" # line 17 "stdin" 17 SPACE " " 7 FIELD "ISBN" 17 SPACE " " 6 EQUALS "=" 17 SPACE " " 19 VALUE "\"0-201-15790-X\"" 3 COMMA "," 13 NEWLINE "\n" # line 18 "stdin" 15 RBRACE "}" 13 NEWLINE "\n" # line 19 "stdin" SHAR_EOF $shar_touch -am 0205103199 'biblex.ok' && chmod 0444 'biblex.ok' || $echo 'restore of' 'biblex.ok' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'biblex.ok:' 'MD5 check failed' e748ed843ff2723b088a186e17945787 biblex.ok SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'biblex.ok'`" test 1622 -eq "$shar_count" || $echo 'biblex.ok:' 'original size' '1622,' 'current size' "$shar_count!" fi fi # ============= bibparse.man ============== if test -f 'bibparse.man' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibparse.man' '(file already exists)' else $echo 'x -' extracting 'bibparse.man' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibparse.man' && X.\" ==================================================================== X.\" @Troff-man-file{ X.\" author = "Nelson H. F. Beebe", X.\" version = "1.04", X.\" date = "08 May 1999", X.\" time = "12:08:58 MDT", X.\" filename = "bibparse.man", X.\" address = "Center for Scientific Computing X.\" University of Utah X.\" Department of Mathematics, 322 INSCC X.\" 155 S 1400 E RM 233 X.\" Salt Lake City, UT 84112-0090 X.\" USA", X.\" telephone = "+1 801 581 5254", X.\" FAX = "+1 801 585 1640, +1 801 581 4148", X.\" URL = "http://www.math.utah.edu/~beebe", X.\" checksum = "19414 452 1798 15645", X.\" email = "beebe@math.utah.edu, beebe@acm.org, X.\" beebe@ieee.org (Internet)", X.\" codetable = "ISO/ASCII", X.\" keywords = "bibliography, BibTeX, lexical analysis", X.\" supported = "yes", X.\" docstring = "This file is the UNIX nroff/troff manual X.\" page documentation for bibparse, a tool for X.\" parsing the lexical analysis output of X.\" bibclean or biblex from BibTeX and Scribe X.\" bibliography data base files, or BibTeX and X.\" Scribe files directly, to verify that they X.\" conform to a proposed grammar for BibTeX. X.\" X.\" The checksum field above contains a CRC-16 X.\" checksum as the first value, followed by the X.\" equivalent of the standard UNIX wc (word X.\" count) utility output of lines, words, and X.\" characters. This is produced by Robert X.\" Solovay's checksum utility.", X.\" } X.\"===================================================================== X.\" X.if t .ds Bi B\s-2IB\s+2T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X X.if n .ds Bi BibTeX X.\" X.if t .ds Te T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X X.if n .ds Te TeX X.\" X.\"===================================================================== X.TH BIBPARSE 1 "08 May 1999" "Version 1.04" X.\"===================================================================== X.SH NAME bibparse \- verify a bibclean or biblex lexical token stream, or BibTeX files X.\"===================================================================== X.SH SYNOPSIS X.B bibparse [ X.B \-d ] X.I "&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibparse.man:' 'MD5 check failed' d7a7afd2137c248f0790e65f0b91eb52 bibparse.man SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibparse.man'`" test 15645 -eq "$shar_count" || $echo 'bibparse.man:' 'original size' '15645,' 'current size' "$shar_count!" fi fi # ============= bibparse.y ============== if test -f 'bibparse.y' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibparse.y' '(file already exists)' else $echo 'x -' extracting 'bibparse.y' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibparse.y' && %{ X /********************************************************************** X @Yacc-file{ X author = "Nelson H. F. Beebe", X version = "1.04", X date = "07 May 1999", X time = "10:21:46 MDT", X filename = "bibparse.y", X address = "Center for Scientific Computing X University of Utah X Department of Mathematics, 322 INSCC X 155 S 1400 E RM 233 X Salt Lake City, UT 84112-0090 X USA", X telephone = "+1 801 581 5254", X FAX = "+1 801 585 1640, +1 801 581 4148", X URL = "http://www.math.utah.edu/~beebe", X checksum = "37113 553 1689 14003", X email = "beebe@math.utah.edu, beebe@acm.org, X beebe@ieee.org (Internet)", X codetable = "ISO/ASCII", X keywords = "BibTeX, bibliography, lexical analysis, lexer, X parsing, parser", X supported = "yes", X docstring = "This yacc file defines a parser for a X prototype BibTeX grammar. X X The resulting program reads BibTeX data, X and/or BibTeX lexical token streams produced X by biblex or bibclean, from one or more files X specified on the command line, or standard X input, and parses the token stream to verify X its conformance to the BibTeX grammar. X X If a command-line -d (or -D) option is X specified, debug mode is selected, and X extensive commentary on the parsing actions X will be output. It will be necessary to X have a copy of the y.output file produced X by bison or lex in order to make sense out X of the state and rule numbers in this X output. X X The checksum field above contains a CRC-16 X checksum as the first value, followed by the X equivalent of the standard UNIX wc (word X count) utility output of lines, words, and X characters. This is produced by Robert X Solovay's checksum utility.", X } X **********************************************************************/ X #include X #include #include #include X #if defined(HAVE_STDLIB_H) #include #endif X #if HAVE_ALLOCA_H X /* needed for alloca() macro definition if bison is used instead of yacc */ #include #endif X #include "args.h" #include "bibyydcl.h" X static void doparse ARGS((void)); int main ARGS((int argc_, char *argv_[])); static int nextchar ARGS((void)); static void recognize ARGS((const char *s_)); int yyparse ARGS((void)); static void yywarning ARGS((const char *s_)); X #if defined(__cplusplus) extern "C" { #endif X static int (*pyylex) ARGS((void)); int xxlex ARGS((void)); int zzlex ARGS((void)); X #if defined(__cplusplus) } #endif X int error_count; char *program_name; /* for error messages */ X /* These variables are defined in biblex.c: */ extern int do_lex_output; extern long line_number; extern const char *the_filename; extern char yytext[BIBYYLMAX]; X #define ERROR_PREFIX "??" /* this prefixes all error messages */ #define WARNING_PREFIX "%%" /* this prefixes all warning messages */ X #define RECOGNIZE(s) recognize(s) X #define YYDEBUG 1 /* need for -d option support */ X #if defined(_CRAY) extern long yydebug; #else extern int yydebug; #endif X %} %token TOKEN_ABBREV 1 %token TOKEN_AT 2 %token TOKEN_COMMA 3 %token TOKEN_COMMENT 4 %token TOKEN_ENTRY 5 %token TOKEN_EQUALS 6 %token TOKEN_FIELD 7 %token TOKEN_INCLUDE 8 %token TOKEN_INLINE 9 %token TOKEN_KEY 10 %token TOKEN_LBRACE 11 %token TOKEN_LITERAL 12 %token TOKEN_NEWLINE 13 %token TOKEN_PREAMBLE 14 %token TOKEN_RBRACE 15 %token TOKEN_SHARP 16 %token TOKEN_SPACE 17 %token TOKEN_STRING 18 %token TOKEN_VALUE 19 X X /********************************************************************** X Without the following precedence specifications, the BibTeX grammar X is ambiguous, since the two productions X X bibtex_value: bibtex_value bibtex_space TOKEN_SHARP X bibtex_simple_value X X bibtex_assignment: bibtex_assignment_lhs TOKEN_EQUALS bibtex_value X X result in a shift/reduce conflict when the input stack contains X X bibtex_assignment_lhs TOKEN_EQUALS bibtex_value X X and the next token is one of the bibtex_space tokens. We could shift X that token to match the start of the bibtex_value production, or we X could reduce to bibtex_assignment using the second production. X X The way to remove the ambiguity is described in the book X X @String{pub-PH = "Pren{\-}tice-Hall"} X @String{pub-PH:adr = "Englewood Cliffs, NJ 07632, USA"} X X @Book{Holub:CDC90, X author = "Allen I. Holub", X title = "Compiler Design in {C}", X publisher = pub-PH, X address = pub-PH:adr, X year = "1990", X note = pub-PH # " Software Series, Editor: Brian W. X Kernighan.", X ISBN = "0-13-155045-4", X } X X on pp. 871--875. X X The authors of the book X X @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} X @String{pub-AW:adr = "Reading, MA, USA"} X X @Book{Aho:CPT86, X author = "Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman", X title = "Compilers\emdash Prin\-ci\-ples, Techniques, and X Tools", X publisher = pub-AW, X address = pub-AW:adr, X year = "1986", X ISBN = "0-201-10088-6", X } X X on p. 201 point out that the ambiguity above is also met in the X (in)famous dangling else problem, where the productions X X stmt: IF expr THEN stmt X | IF expr THEN stmt ELSE stmt X | OTHER X X produce a shift/reduce conflict when the input stack contains X X IF expr THEN stmt X X and the next input item is ELSE, since we could reduce using the X first production, or shift using the second production. X X The grammar in this case is not LR(k) for any k, because there could X be an unending chain of "ELSE xxx" tokens following in the input X stream. X X The solution adopted by yacc and most other LALR(1) generators is to X warn of the conflict, then shift, rather than reduce, adopting a X "maximal munch" strategy that will match ELSE with the nearest X preceding THEN. X X In our case, we want the "maximal munch" operation to consume X X v # v # ... # v X X as a bibtex_value before doing an assignment. This is easily done by X declaring TOKEN_EQUALS to have LOWER precedence than space, and space X to have lower precedence than TOKEN_SHARP. X **********************************************************************/ X %nonassoc TOKEN_EQUALS %left TOKEN_SPACE TOKEN_INLINE TOKEN_NEWLINE %left TOKEN_SHARP X %% file: opt_space X {RECOGNIZE("file-1");} X | opt_space object_list opt_space X {RECOGNIZE("file-2");} X ; X object_list: object X {RECOGNIZE("object-1");} X | object_list opt_space object X {RECOGNIZE("object-2");} X ; X object: TOKEN_AT opt_space at_object X {RECOGNIZE("object");} X ; X at_object: comment X {RECOGNIZE("comment");} X | entry X {RECOGNIZE("entry");} X | include X {RECOGNIZE("include");} X | preamble X {RECOGNIZE("preamble");} X | string X {RECOGNIZE("string");} X | error TOKEN_RBRACE X {RECOGNIZE("error");} X ; X comment: TOKEN_COMMENT opt_space X TOKEN_LITERAL X {RECOGNIZE("comment");} X ; X entry: entry_head X assignment_list X TOKEN_RBRACE X {RECOGNIZE("entry-1");} X | entry_head X assignment_list X TOKEN_COMMA opt_space X TOKEN_RBRACE X {RECOGNIZE("entry-2");} X | entry_head TOKEN_RBRACE X {RECOGNIZE("entry-3");} X ; X entry_head: TOKEN_ENTRY opt_space X TOKEN_LBRACE opt_space X key_name opt_space X TOKEN_COMMA opt_space X {RECOGNIZE("entry_head");} X ; X key_name: TOKEN_KEY X {RECOGNIZE("key_name-1");} X | TOKEN_ABBREV X {RECOGNIZE("key_name-2");} X ; X include: TOKEN_INCLUDE opt_space X TOKEN_LITERAL X {RECOGNIZE("include");} X ; X preamble: TOKEN_PREAMBLE opt_space X TOKEN_LBRACE opt_space X value opt_space X TOKEN_RBRACE X {RECOGNIZE("preamble");} X ; X string: TOKEN_STRING opt_space X TOKEN_LBRACE opt_space X assignment X opt_space TOKEN_RBRACE X {RECOGNIZE("string");} X ; X value: simple_value X {RECOGNIZE("value-1");} X | value opt_space X {RECOGNIZE("value-1-1");} X TOKEN_SHARP X {RECOGNIZE("value-1-2");} X opt_space simple_value X {RECOGNIZE("value-2");} X ; X simple_value: TOKEN_VALUE X {RECOGNIZE("simple_value-1");} X | TOKEN_ABBREV X {RECOGNIZE("simple_value-2");} X ; X assignment_list: assignment X {RECOGNIZE("single assignment");} X | assignment_list X TOKEN_COMMA opt_space X assignment X {RECOGNIZE("assignment-list");} X ; X assignment: assignment_lhs opt_space X TOKEN_EQUALS opt_space X {RECOGNIZE("assignment-0");} X value opt_space X {RECOGNIZE("assignment");} X ; X assignment_lhs: TOKEN_FIELD X {RECOGNIZE("assignment_lhs-1");} X | TOKEN_ABBREV X {RECOGNIZE("assignment_lhs-2");} X ; X opt_space: /* empty */ X {RECOGNIZE("opt_space-1");} X | space X {RECOGNIZE("opt_space-2");} X ; X space: single_space X {RECOGNIZE("single space");} X | space single_space X {RECOGNIZE("multiple spaces");} X ; X single_space: TOKEN_SPACE X | TOKEN_INLINE X | TOKEN_NEWLINE X ; %% X /* end of grammar */ X static void doparse(VOID) { /* parse a complete BibTeX file or BibTeX token stream */ X int c; X X line_number = 1L; X X /* A single character lookahead distinguishes between a token X stream, which starts with a line number directive, and a BibTeX X file, which does not. We then pick a suitable lexical analyzer X function. */ X X c = getchar(); X (void)ungetc(c,stdin); X pyylex = (c == '#') ? zzlex : xxlex; X X yyparse(); /* this handles the entire file */ } X X #if NEW_STYLE int main(int argc, char *argv[]) #else /* K&R style */ int main(argc, argv) int argc; char *argv[]; #endif /* NEW_STYLE */ { X int code; /* error return code */ X int k; /* index into argv[] */ X int n; /* index into argv[] */ X FILE *fp; /* pointer to current input file */ X X do_lex_output = 0; /* prevent output from xxlex() */ X error_count = 0; X program_name = argv[0]; X X for (k = 1; k < argc; ++k) X { /* check for command-line options */ X if ((strcmp(argv[k],"-d") == 0) || (strcmp(argv[k],"-D") == 0)) X { X yydebug = 1; X do_lex_output = 1; X for (n = k; n < argc; ++n) /* shuffle remaining arguments down */ X argv[n] = argv[n+1]; X argc--; /* and reduce argument count */ X } X } X X if (argc > 1) /* files to parse named on command line */ X { X for (k = 1; k < argc; ++k) X { X fp = freopen(argv[k],"r",stdin); X if (fp == (FILE*)NULL) X { X (void)fprintf(stderr, X "\n%s Ignoring open failure on file [%s]\n", X ERROR_PREFIX, argv[k]); X (void)perror("perror() says"); X } X else X { X the_filename = argv[k]; X doparse(); X (void)fclose(fp); X } X } X } X else /* parse stdin */ X { X the_filename = "stdin"; X doparse(); X } X code = (error_count > 0) ? EXIT_FAILURE : EXIT_SUCCESS; X X exit(code); X return (code); /* NOT REACHED */ } X X static int nextchar (VOID) { X int c; X X c = getchar (); X if (yydebug) X putchar (c); X return (c); } X X X #if NEW_STYLE static void recognize(const char *s) #else static void recognize(s) const char *s; #endif { X if (yydebug) X printf("[%s]\n", s); } X X #if NEW_STYLE void yyerror(const char *s) #else void yyerror(s) const char *s; #endif { X error_count++; X (void)fflush(stdout); X (void)fprintf(stderr,"%s \"%s\", line %ld: %s\tNext token = \"%s\"\n", X ERROR_PREFIX, the_filename, line_number, s, yytext); X (void)fflush(stderr); } X X int yylex (VOID) { X int v; X X v = (*pyylex) (); X X /* xxlex() (== yylex() in biblex.c) biases token values by 1000, but X the token streams produced by biblex and "bibclean --no-prettyprint" X exclude that bias, for compact output. */ X X return ((pyylex == zzlex) ? v : (v - 1000)); } X X #if NEW_STYLE static void yywarning(const char *s) #else static void yywarning(s) const char *s; #endif { X (void)fflush(stdout); X (void)fprintf(stderr,"%s %s\tNext token = \"%s\"\n", X WARNING_PREFIX, s, yytext); X (void)fflush(stderr); } X X int zzlex (VOID) { X char buffer[BUFSIZ]; /* only needs space for a single number token */ X char *limit; /* how far we can store into buffer[] */ X char *p; /* pointer into buffer[] */ X int c; /* current input character */ X X limit = &buffer[sizeof(buffer) - 1]; /* address of last slot in buffer[] */ X X for (;;) /* `infinite' loop for ignoring comments and empty lines */ X { X while (((c = nextchar ()) > 0) && isspace (c)) X ; /* skip leading whitespace */ X X /* Collect first non-blank token on line, truncating if too big for buffer[] */ X p = &buffer[0]; X *p++ = c; X while (((c = nextchar ()) > 0) && !isspace (c)) X { X if (p < limit) X *p++ = c; X } X *p = '\0'; X X while ((c != '\n') && ((c = nextchar ()) > 0)) X ; /* skip rest of line */ X X if (c == '\n') /* should always be true */ X line_number++; X X if (buffer[0] == '#') /* comment: pseudo return tail-recursively */ X continue; X else if (isdigit ((int) buffer[0])) /* token number */ X return ((int) strtol ((const char *) &buffer[0], &limit, 10)); X else if (c == '\n') /* empty line: pseudo return tail-recursively */ X continue; X else if (feof (stdin)) /* assume end of file */ X return (0); /* standard lex end-of-file signal */ X else X return (-1); /* should never happen */ X } } SHAR_EOF $shar_touch -am 0509133699 'bibparse.y' && chmod 0644 'bibparse.y' || $echo 'restore of' 'bibparse.y' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibparse.y:' 'MD5 check failed' d10161cf606d66b45823797cd53f39e3 bibparse.y SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibparse.y'`" test 13927 -eq "$shar_count" || $echo 'bibparse.y:' 'original size' '13927,' 'current size' "$shar_count!" fi fi # ============= bibunlex.l ============== if test -f 'bibunlex.l' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibunlex.l' '(file already exists)' else $echo 'x -' extracting 'bibunlex.l' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibunlex.l' && %{ X /********************************************************************** X @Lex-file{ X author = "Nelson H. F. Beebe", X version = "1.03", X date = "02 June 1998", X time = "17:56:46 MDT", X filename = "bibunlex.l", X address = "Center for Scientific Computing X University of Utah X Department of Mathematics, 322 INSCC X 155 S 1400 E RM 233 X Salt Lake City, UT 84112-0090 X USA", X telephone = "+1 801 581 5254", X FAX = "+1 801 585 1640, +1 801 581 4148", X URL = "http://www.math.utah.edu/~beebe", X checksum = "15084 502 1155 9600", X email = "beebe@math.utah.edu, beebe@acm.org, X beebe@ieee.org (Internet)", X codetable = "ISO/ASCII", X keywords = "BibTeX, bibliography, lexical analysis, lexer", X supported = "yes", X docstring = "Convert a lexical token stream from biblex X or bibclean back into a BibTeX file on X stdout. X X Usage: X bibunlex < infile > outfile X or X bibunlex file(s) >outfile X X This utility can be conveniently used at X the end of a biblex or bibclean pipeline X that filters BibTeX files for some purpose. X X The checksum field above contains a CRC-16 X checksum as the first value, followed by the X equivalent of the standard UNIX wc (word X count) utility output of lines, words, and X characters. This is produced by Robert X Solovay's checksum utility.", X } X **********************************************************************/ X #include X #include #include #include X #if defined(HAVE_STDLIB_H) #include #endif X #include "args.h" #include "bibyydcl.h" #include "token.h" X /* Token types for biblex/bibclean token stream grammar */ X #if NEW_STYLE typedef enum t_list { X T_NUMBER = 2001, X T_NAME, X T_UNKNOWN, X T_VALUE } biblex_token_t; #else /* NOT NEW_STYLE */ typedef int biblex_token_t; #define T_NUMBER 2001 #define T_NAME 2002 #define T_UNKNOWN 2003 #define T_VALUE 2004 #endif /* NEW_STYLE */ X #define digval(c) ((int)((c) - '0')) #define isoctal(c) (isdigit(c) && ((c) != '8') && ((c) != '9')) #define ishexadecimal(c) (isdigit(c) || \ X (strchr("ABCDEFabcdef",(c)) != (char*)NULL)) X static void bad_token ARGS((void)); static void dounlex ARGS((void)); static int hexval ARGS((int c_)); int main ARGS((int argc_, char *argv_[])); static void out_s ARGS((char *s_)); static void out_space ARGS((int n_)); static void out_string ARGS((const char *s_)); static void out_token ARGS((token_t token_)); static char *unescape ARGS((char *s_)); X static long line_number = 1L; static long line_width = 0L; static const char *the_filename = ""; X #define ERROR_PREFIX "??" /* this prefixes all error messages */ X #define FIELD_INDENTATION 2 /* how far to indent "field = value," pairs */ X #if !defined(MAX_FIELD_LENGTH) #define MAX_FIELD_LENGTH 12 /* "howpublished" */ #endif /* !defined(MAX_FIELD_LENGTH) */ X #define VALUE_INDENTATION (FIELD_INDENTATION + MAX_FIELD_LENGTH + 3) X #undef YYLMAX X #if defined(HAVE_IBMPC) #define YYLMAX 32760 #else #define YYLMAX BIBYYLMAX #endif X X /* here is a lex grammar for the bibclean and biblex output token stream */ X %} X W [ \b\f\r\t\v] X %% ^[%?#].*$ ; /* ignore messages and line number directives */ X ^[0-9]+ return (T_NUMBER); X [A-Z]+ return (T_NAME); X {W} ; /* ignore horizontal space */ X ["].*$ return (T_VALUE); X [\n] line_number++; X X. return (T_UNKNOWN); %% static void bad_token(VOID) { X (void)fprintf(stderr,"%s \"%s\", line %ld: %s [%s].\n", X ERROR_PREFIX, X the_filename, X line_number, X "Unrecognized token", X yytext); } X X static void dounlex(VOID) { X biblex_token_t type; X token_t token = TOKEN_UNKNOWN; X X line_number = 1L; X while ((type = (biblex_token_t)yylex()) > 0) X { X switch (type) X { X case T_NUMBER: X token = (token_t)atoi((const char*)&yytext[0]); X break; X X case T_NAME: X break; /* discard name */ X X case T_VALUE: X out_token(token); X break; X X default: X case T_UNKNOWN: X bad_token(); X break; X } X } } X X #if NEW_STYLE static int hexval(int c) #else /* K&R style */ static int hexval(c) int c; #endif /* NEW_STYLE */ { X static const char *hexdigits = "0123456789abcdef"; X const char *p = (const char *)strchr(hexdigits, X isupper(c) ? tolower(c) : c); X X return ((p == (const char*)NULL) ? (-1) : (int)(p - hexdigits)); } X X #if NEW_STYLE int main(int argc, char *argv[]) #else /* K&R style */ int main(argc, argv) int argc; char *argv[]; #endif /* NEW_STYLE */ { X int k; X FILE *fp; X X if (argc > 1) /* files to unlex named on command line */ X { X for (k = 1; k < argc; ++k) X { X fp = freopen(argv[k],"r",stdin); X if (fp == (FILE*)NULL) X { X (void)fprintf(stderr, X "\n%s Ignoring open failure on file [%s]\n", X ERROR_PREFIX, argv[k]); X (void)perror("perror() says"); X } X else X { X the_filename = argv[k]; X dounlex(); X (void)fclose(fp); X } X } X } X else /* unlex stdin */ X { X the_filename = "stdin"; X dounlex(); X } X exit (EXIT_SUCCESS); X return (0); } X X #if NEW_STYLE static void out_s(char *s) /* output a string, wrapping long lines */ #else /* K&R style */ static void out_s(s) /* output a string, wrapping long lines */ char *s; #endif /* NEW_STYLE */ { /* s[] is modified on return */ X s[strlen(s)-1] = '\0'; /* zap final quote */ X out_string(unescape(s+1)); /* discard initial quote */ } X X #if NEW_STYLE static void out_space(int n) #else /* K&R style */ static void out_space(n) int n; #endif /* NEW_STYLE */ { X for ( ; n > 0 ; --n) X out_string(" "); } X X #if NEW_STYLE static void out_string(const char *s) #else /* K&R style */ static void out_string(s) const char *s; #endif /* NEW_STYLE */ { X for (; *s; ++s) X { X switch (*s) X { X case '\r': X case '\n': X line_width = 0L; X break; X X case '\t': X line_width = (line_width + 7L) & ~7L; X break; X X default: X line_width++; X break; X } X putchar(*s); X } } X X #if NEW_STYLE static void out_token(token_t token) #else /* K&R style */ static void out_token(token) token_t token; #endif /* NEW_STYLE */ { /* ALL token output is directed through this function */ X static token_t last_token = TOKEN_UNKNOWN; X X switch (token) X { X case TOKEN_ABBREV: X if (last_token == TOKEN_EQUALS) X out_space((int)(VALUE_INDENTATION - line_width)); X out_s((char*)&yytext[0]); X break; X X case TOKEN_AT: X out_s((char*)&yytext[0]); X break; X X case TOKEN_COMMA: X out_s((char*)&yytext[0]); X break; X X case TOKEN_COMMENT: X out_s((char*)&yytext[0]); X break; X X case TOKEN_ENTRY: X out_s((char*)&yytext[0]); X break; X X case TOKEN_EQUALS: X if (last_token != TOKEN_SPACE) X out_space(1); X out_s((char*)&yytext[0]); X break; X X case TOKEN_FIELD: X if (last_token != TOKEN_SPACE) X out_space(FIELD_INDENTATION); X out_s((char*)&yytext[0]); X break; X X case TOKEN_INCLUDE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_INLINE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_KEY: X out_s((char*)&yytext[0]); X break; X X case TOKEN_LBRACE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_LITERAL: X out_s((char*)&yytext[0]); X break; X X case TOKEN_NEWLINE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_PREAMBLE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_RBRACE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_SHARP: X if (last_token != TOKEN_SPACE) X out_space(1); X out_s((char*)&yytext[0]); X break; X X case TOKEN_SPACE: X out_s((char*)&yytext[0]); X break; X X case TOKEN_STRING: X out_s((char*)&yytext[0]); X break; X X case TOKEN_VALUE: X if (last_token != TOKEN_SPACE) X out_space((int)(VALUE_INDENTATION - line_width)); X out_s((char*)&yytext[0]); X break; X X case TOKEN_UNKNOWN: X default: X bad_token(); X break; X } X last_token = token; } X X #if NEW_STYLE static char* unescape(char *s) /* convert escape sequences to chars in place */ #else /* K&R style */ static char* unescape(s) char *s; #endif /* NEW_STYLE */ { X int c; X int n; X char *original = s; X char *t; /* target string (overwrites s[]) */ X X for (t = s ; *s; ) X { X switch (*s) X { X case '\\': X ++s; X switch (*s) X { X case '0': X case '1': X case '2': X case '3': X case '4': X case '5': X case '6': X case '7': X for (n = 0, c = digval(*s), ++s; (n < 3) && isoctal(*s); X n++, s++) X c = 8*c + digval(*s); X break; X X case 'a': X ++s; X c = '\007'; /* '\a' */ X break; X X case 'b': X ++s; X c = '\b'; X break; X X case 'f': X ++s; X c = '\f'; X break; X X case 'n': X ++s; X c = '\n'; X break; X X case 'r': X ++s; X c = '\r'; X break; X X case 't': X ++s; X c = '\t'; X break; X X case 'v': X ++s; X c = '\v'; X break; X X case 'x': X for (++s, c = hexval(*s); ishexadecimal(*s); ++s) X c = 16*c + hexval(*s); X break; X X default: X c = *s++; X } X *t++ = c; X break; X X default: X *t++ = *s++; X break; X } X } X *t = '\0'; X return (original); } X X #if defined(HAVE_IBMPC) int yywrap(VOID) { X return 1; } #endif SHAR_EOF $shar_touch -am 0507081499 'bibunlex.l' && chmod 0644 'bibunlex.l' || $echo 'restore of' 'bibunlex.l' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibunlex.l:' 'MD5 check failed' 9f21afda51f1de99333540e7139296e7 bibunlex.l SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibunlex.l'`" test 9604 -eq "$shar_count" || $echo 'bibunlex.l:' 'original size' '9604,' 'current size' "$shar_count!" fi fi # ============= bibunlex.man ============== if test -f 'bibunlex.man' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibunlex.man' '(file already exists)' else $echo 'x -' extracting 'bibunlex.man' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibunlex.man' && X.\" ==================================================================== X.\" @Troff-man-file{ X.\" author = "Nelson H. F. Beebe", X.\" version = "1.04", X.\" date = "08 May 1999", X.\" time = "09:26:19 MDT", X.\" filename = "bibunlex.man", X.\" address = "Center for Scientific Computing X.\" University of Utah X.\" Department of Mathematics, 322 INSCC X.\" 155 S 1400 E RM 233 X.\" Salt Lake City, UT 84112-0090 X.\" USA", X.\" telephone = "+1 801 581 5254", X.\" FAX = "+1 801 585 1640, +1 801 581 4148", X.\" URL = "http://www.math.utah.edu/~beebe", X.\" checksum = "51217 120 475 4123", X.\" email = "beebe@math.utah.edu, beebe@acm.org, X.\" beebe@ieee.org (Internet)", X.\" codetable = "ISO/ASCII", X.\" keywords = "bibliography, BibTeX, lexical analysis", X.\" supported = "yes", X.\" docstring = "This file is the UNIX nroff/troff manual X.\" page documentation for bibunlex, a tool for X.\" reconstructing BibTeX bibliography data X.\" base files from the lexical analysis output X.\" of bibclean or biblex. X.\" X.\" The checksum field above contains a CRC-16 X.\" checksum as the first value, followed by the X.\" equivalent of the standard UNIX wc (word X.\" count) utility output of lines, words, and X.\" characters. This is produced by Robert X.\" Solovay's checksum utility.", X.\" } X.\"===================================================================== X.\" X.if t .ds Bi B\s-2IB\s+2T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X X.if n .ds Bi BibTeX X.\" X.\"===================================================================== X.TH BIBUNLEX 1 "08 May 1999" "Version 1.04" X.\"===================================================================== X.SH NAME bibunlex \- reconstruct a BibTeX bibliography data base file from \ bibclean or biblex lexical analysis output X.\"===================================================================== X.SH SYNOPSIS X.B bibunlex X.I "outfile" X.nf or X.fi X.B bibunlex X.I "file1 file2 file3 .\|.\|." X.I ">outfile" X.\"===================================================================== X.SH DESCRIPTION X.B bibunlex takes a lexical token stream from X.BR bibclean (1) or from X.BR biblex (1), and reconstructs a \*(Bi bibliography data base file on X.IR stdout . X.PP The reconstruction is simplistic with regard to obtaining nice spacing, and best results will be obtained if the output is prettyprinted by X.BR bibclean (1). For example, X.RS X.nf X.B "bibclean -no-prettyprint \fI*.bib\fP | some-filter | bibunlex | bibclean \ >new.bib" X.B "biblex \fI*.bib\fP | some-filter | bibunlex | bibclean >new.bib" X.fi X.RE X.\"===================================================================== X.SH "SEE ALSO" X.BR bibcheck (1), X.BR bibclean (1), X.BR bibdup (1), X.BR bibextract (1), X.BR bibjoin (1), X.BR biblabel (1), X.BR biblex (1), X.BR biborder (1), X.BR bibparse (1), X.BR bibsearch (1), X.BR bibsort (1), X.BR bibtex (1), X.BR citefind (1), X.BR citesub (1), X.BR citetags (1), X.BR latex (1), X.BR scribe (1), X.BR tex (1). X.\"===================================================================== X.SH AUTHOR X.nf Nelson H. F. Beebe Center for Scientific Computing University of Utah Department of Mathematics, 322 INSCC 155 S 1400 E RM 233 Salt Lake City, UT 84112-0090 USA Email: \fCbeebe@math.utah.edu\fP, \fCbeebe@acm.org\fP, \fCbeebe@ieee.org\fP (Internet) WWW URL: \fChttp://www.math.utah.edu/~beebe\fP Telephone: +1 801 581 5254 FAX: +1 801 585 1640, +1 801 581 4148 X.fi X.\"===================================================================== X.\" This is for GNU Emacs file-specific customization: X.\" Local Variables: X.\" fill-column: 50 X.\" End: SHAR_EOF $shar_touch -am 0508092699 'bibunlex.man' && chmod 0644 'bibunlex.man' || $echo 'restore of' 'bibunlex.man' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibunlex.man:' 'MD5 check failed' 29cf89fbe45661b96631a3253c747aa1 bibunlex.man SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibunlex.man'`" test 4123 -eq "$shar_count" || $echo 'bibunlex.man:' 'original size' '4123,' 'current size' "$shar_count!" fi fi # ============= bibyydcl.h ============== if test -f 'bibyydcl.h' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'bibyydcl.h' '(file already exists)' else $echo 'x -' extracting 'bibyydcl.h' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'bibyydcl.h' && /* /u/sy/beebe/tex/biblex/bibyydcl.h, Sat Jan 16 16:24:55 1993 */ /* Edit by Nelson H. F. Beebe */ X #ifndef BIBYYDCL_H #define BIBYYDCL_H X /*********************************************************************** This file contains function prototypes of lex library functions. X We need them because most current lex implementations do not generate prototypes in the output C code, making it impossible to compile the code with C++ compilers. X flex implementations do not require most of these prototypes. X There are also variations in the types of some of these functions which we must handle by preprocessor conditionals below. ***********************************************************************/ X #if defined(__cplusplus) extern "C" { #endif X extern void yyerror ARGS((const char *s_)); extern int yylex ARGS((void)); extern int yyparse ARGS((void)); extern int yywrap ARGS((void)); X #if defined(__cplusplus) } #endif X #if defined(FLEX_SCANNER) #define input yyinput #define output putchar X #if !defined(HAVE_FILENO) #define YY_NEVER_INTERACTIVE 1 /* suppresses need for isatty() and fileno() */ #endif X #else /* NOT defined(FLEX_SCANNER) */ X #if defined(__cplusplus) && defined(__sun) /* Sun Solaris 2.x lex changed the names of these functions under C++ */ #define input lex_input #define output lex_output #endif X #endif /* defined(FLEX_SCANNER) */ X #endif /* BIBYYDCL_H */ SHAR_EOF $shar_touch -am 0509135699 'bibyydcl.h' && chmod 0644 'bibyydcl.h' || $echo 'restore of' 'bibyydcl.h' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'bibyydcl.h:' 'MD5 check failed' f82fa319585cb6f905887e8b4f671016 bibyydcl.h SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'bibyydcl.h'`" test 1418 -eq "$shar_count" || $echo 'bibyydcl.h:' 'original size' '1418,' 'current size' "$shar_count!" fi fi # ============= configure ============== if test -f 'configure' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'configure' '(file already exists)' else $echo 'x -' extracting 'configure' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'configure' && #! /bin/sh X # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. X # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: X # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' X # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 X ac_prev= for ac_option do X X # If the previous option needs an argument, assign it. X if test -n "$ac_prev"; then X eval "$ac_prev=\$ac_option" X ac_prev= X continue X fi X X case "$ac_option" in X -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; X *) ac_optarg= ;; X esac X X # Accept the important Cygnus configure options, so we can diagnose typos. X X case "$ac_option" in X X -bindir | --bindir | --bindi | --bind | --bin | --bi) X ac_prev=bindir ;; X -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) X bindir="$ac_optarg" ;; X X -build | --build | --buil | --bui | --bu) X ac_prev=build ;; X -build=* | --build=* | --buil=* | --bui=* | --bu=*) X build="$ac_optarg" ;; X X -cache-file | --cache-file | --cache-fil | --cache-fi \ X | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) X ac_prev=cache_file ;; X -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ X | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) X cache_file="$ac_optarg" ;; X X -datadir | --datadir | --datadi | --datad | --data | --dat | --da) X ac_prev=datadir ;; X -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ X | --da=*) X datadir="$ac_optarg" ;; X X -disable-* | --disable-*) X ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` X # Reject names that are not valid shell variable names. X if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then X { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } X fi X ac_feature=`echo $ac_feature| sed 's/-/_/g'` X eval "enable_${ac_feature}=no" ;; X X -enable-* | --enable-*) X ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` X # Reject names that are not valid shell variable names. X if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then X { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } X fi X ac_feature=`echo $ac_feature| sed 's/-/_/g'` X case "$ac_option" in X *=*) ;; X *) ac_optarg=yes ;; X esac X eval "enable_${ac_feature}='$ac_optarg'" ;; X X -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ X | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ X | --exec | --exe | --ex) X ac_prev=exec_prefix ;; X -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ X | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ X | --exec=* | --exe=* | --ex=*) X exec_prefix="$ac_optarg" ;; X X -gas | --gas | --ga | --g) X # Obsolete; use --with-gas. X with_gas=yes ;; X X -help | --help | --hel | --he) X # Omit some internal or obsolete options to make the list less imposing. X # This message is too long to be a string in the A/UX 3.1 sh. X cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: X --cache-file=FILE cache test results in FILE X --help print this message X --no-create do not create output files X --quiet, --silent do not print \`checking...' messages X --version print the version of autoconf that created configure Directory and file names: X --prefix=PREFIX install architecture-independent files in PREFIX X [$ac_default_prefix] X --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX X [same as prefix] X --bindir=DIR user executables in DIR [EPREFIX/bin] X --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] X --libexecdir=DIR program executables in DIR [EPREFIX/libexec] X --datadir=DIR read-only architecture-independent data in DIR X [PREFIX/share] X --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] X --sharedstatedir=DIR modifiable architecture-independent data in DIR X [PREFIX/com] X --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] X --libdir=DIR object code libraries in DIR [EPREFIX/lib] X --includedir=DIR C header files in DIR [PREFIX/include] X --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] X --infodir=DIR info documentation in DIR [PREFIX/info] X --mandir=DIR man documentation in DIR [PREFIX/man] X --srcdir=DIR find the sources in DIR [configure dir or ..] X --program-prefix=PREFIX prepend PREFIX to installed program names X --program-suffix=SUFFIX append SUFFIX to installed program names X --program-transform-name=PROGRAM X run sed PROGRAM on installed program names EOF X cat << EOF Host type: X --build=BUILD configure for building on BUILD [BUILD=HOST] X --host=HOST configure for HOST [guessed] X --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: X --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) X --enable-FEATURE[=ARG] include FEATURE [ARG=yes] X --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] X --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) X --x-includes=DIR X include files are in DIR X --x-libraries=DIR X library files are in DIR EOF X if test -n "$ac_help"; then X echo "--enable and --with options recognized:$ac_help" X fi X exit 0 ;; X X -host | --host | --hos | --ho) X ac_prev=host ;; X -host=* | --host=* | --hos=* | --ho=*) X host="$ac_optarg" ;; X X -includedir | --includedir | --includedi | --included | --include \ X | --includ | --inclu | --incl | --inc) X ac_prev=includedir ;; X -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ X | --includ=* | --inclu=* | --incl=* | --inc=*) X includedir="$ac_optarg" ;; X X -infodir | --infodir | --infodi | --infod | --info | --inf) X ac_prev=infodir ;; X -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) X infodir="$ac_optarg" ;; X X -libdir | --libdir | --libdi | --libd) X ac_prev=libdir ;; X -libdir=* | --libdir=* | --libdi=* | --libd=*) X libdir="$ac_optarg" ;; X X -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ X | --libexe | --libex | --libe) X ac_prev=libexecdir ;; X -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ X | --libexe=* | --libex=* | --libe=*) X libexecdir="$ac_optarg" ;; X X -localstatedir | --localstatedir | --localstatedi | --localstated \ X | --localstate | --localstat | --localsta | --localst \ X | --locals | --local | --loca | --loc | --lo) X ac_prev=localstatedir ;; X -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ X | --localstate=* | --localstat=* | --localsta=* | --localst=* \ X | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) X localstatedir="$ac_optarg" ;; X X -mandir | --mandir | --mandi | --mand | --man | --ma | --m) X ac_prev=mandir ;; X -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) X mandir="$ac_optarg" ;; X X -nfp | --nfp | --nf) X # Obsolete; use --without-fp. X with_fp=no ;; X X -no-create | --no-create | --no-creat | --no-crea | --no-cre \ X | --no-cr | --no-c) X no_create=yes ;; X X -no-recursion | --no-recursion | --no-recursio | --no-recursi \ X | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) X no_recursion=yes ;; X X -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ X | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ X | --oldin | --oldi | --old | --ol | --o) X ac_prev=oldincludedir ;; X -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ X | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ X | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) X oldincludedir="$ac_optarg" ;; X X -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) X ac_prev=prefix ;; X -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) X prefix="$ac_optarg" ;; X X -program-prefix | --program-prefix | --program-prefi | --program-pref \ X | --program-pre | --program-pr | --program-p) X ac_prev=program_prefix ;; X -program-prefix=* | --program-prefix=* | --program-prefi=* \ X | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) X program_prefix="$ac_optarg" ;; X X -program-suffix | --program-suffix | --program-suffi | --program-suff \ X | --program-suf | --program-su | --program-s) X ac_prev=program_suffix ;; X -program-suffix=* | --program-suffix=* | --program-suffi=* \ X | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) X program_suffix="$ac_optarg" ;; X X -program-transform-name | --program-transform-name \ X | --program-transform-nam | --program-transform-na \ X | --program-transform-n | --program-transform- \ X | --program-transform | --program-transfor \ X | --program-transfo | --program-transf \ X | --program-trans | --program-tran \ X | --progr-tra | --program-tr | --program-t) X ac_prev=program_transform_name ;; X -program-transform-name=* | --program-transform-name=* \ X | --program-transform-nam=* | --program-transform-na=* \ X | --program-transform-n=* | --program-transform-=* \ X | --program-transform=* | --program-transfor=* \ X | --program-transfo=* | --program-transf=* \ X | --program-trans=* | --program-tran=* \ X | --progr-tra=* | --program-tr=* | --program-t=*) X program_transform_name="$ac_optarg" ;; X X -q | -quiet | --quiet | --quie | --qui | --qu | --q \ X | -silent | --silent | --silen | --sile | --sil) X silent=yes ;; X X -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) X ac_prev=sbindir ;; X -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ X | --sbi=* | --sb=*) X sbindir="$ac_optarg" ;; X X -sharedstatedir | --sharedstatedir | --sharedstatedi \ X | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ X | --sharedst | --shareds | --shared | --share | --shar \ X | --sha | --sh) X ac_prev=sharedstatedir ;; X -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ X | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ X | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ X | --sha=* | --sh=*) X sharedstatedir="$ac_optarg" ;; X X -site | --site | --sit) X ac_prev=site ;; X -site=* | --site=* | --sit=*) X site="$ac_optarg" ;; X X -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) X ac_prev=srcdir ;; X -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) X srcdir="$ac_optarg" ;; X X -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ X | --syscon | --sysco | --sysc | --sys | --sy) X ac_prev=sysconfdir ;; X -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ X | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) X sysconfdir="$ac_optarg" ;; X X -target | --target | --targe | --targ | --tar | --ta | --t) X ac_prev=target ;; X -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) X target="$ac_optarg" ;; X X -v | -verbose | --verbose | --verbos | --verbo | --verb) X verbose=yes ;; X X -version | --version | --versio | --versi | --vers) X echo "configure generated by autoconf version 2.13" X exit 0 ;; X X -with-* | --with-*) X ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` X # Reject names that are not valid shell variable names. X if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then X { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } X fi X ac_package=`echo $ac_package| sed 's/-/_/g'` X case "$ac_option" in X *=*) ;; X *) ac_optarg=yes ;; X esac X eval "with_${ac_package}='$ac_optarg'" ;; X X -without-* | --without-*) X ac_package=`echo $ac_option|sed -e 's/-*without-//'` X # Reject names that are not valid shell variable names. X if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then X { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } X fi X ac_package=`echo $ac_package| sed 's/-/_/g'` X eval "with_${ac_package}=no" ;; X X --x) X # Obsolete; use --with-x. X with_x=yes ;; X X -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ X | --x-incl | --x-inc | --x-in | --x-i) X ac_prev=x_includes ;; X -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ X | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) X x_includes="$ac_optarg" ;; X X -x-libraries | --x-libraries | --x-librarie | --x-librari \ X | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) X ac_prev=x_libraries ;; X -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ X | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) X x_libraries="$ac_optarg" ;; X X -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } X ;; X X *) X if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then X echo "configure: warning: $ac_option: invalid host type" 1>&2 X fi X if test "x$nonopt" != xNONE; then X { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } X fi X nonopt="$ac_option" X ;; X X esac done X if test -n "$ac_prev"; then X { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi X trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 X # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then X exec 6>/dev/null else X exec 6>&1 fi exec 5>./config.log X echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 X # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do X case "$ac_arg" in X -no-create | --no-create | --no-creat | --no-crea | --no-cre \ X | --no-cr | --no-c) ;; X -no-recursion | --no-recursion | --no-recursio | --no-recursi \ X | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; X *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) X ac_configure_args="$ac_configure_args '$ac_arg'" ;; X *) ac_configure_args="$ac_configure_args $ac_arg" ;; X esac done X # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi X # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h X # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=bibparse.y X # Find the source files, if location was not specified. if test -z "$srcdir"; then X ac_srcdir_defaulted=yes X # Try the directory containing this script, then its parent. X ac_prog=$0 X ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` X test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. X srcdir=$ac_confdir X if test ! -r $srcdir/$ac_unique_file; then X srcdir=.. X fi else X ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then X if test "$ac_srcdir_defaulted" = yes; then X { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } X else X { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } X fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` X # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then X if test "x$prefix" != xNONE; then X CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" X else X CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" X fi fi for ac_site_file in $CONFIG_SITE; do X if test -r "$ac_site_file"; then X echo "loading site script $ac_site_file" X . "$ac_site_file" X fi done X if test -r "$cache_file"; then X echo "loading cache $cache_file" X . $cache_file else X echo "creating cache $cache_file" X > $cache_file fi X ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross X ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then X # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. X if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then X ac_n= ac_c=' ' ac_t=' ' X else X ac_n=-n ac_c= ac_t= X fi else X ac_n= ac_c='\c' ac_t= fi X X X X X # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:531: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CC"; then X ac_cv_prog_CC="$CC" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CC="gcc" X break X fi X done X IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then X echo "$ac_t""$CC" 1>&6 else X echo "$ac_t""no" 1>&6 fi X if test -z "$CC"; then X # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:561: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CC"; then X ac_cv_prog_CC="$CC" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_prog_rejected=no X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then X ac_prog_rejected=yes X continue X fi X ac_cv_prog_CC="cc" X break X fi X done X IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then X # We found a bogon in the path, so make sure we never use it. X set dummy $ac_cv_prog_CC X shift X if test $# -gt 0; then X # We chose a different compiler from the bogus one. X # However, it has the same basename, so the bogon will be chosen X # first if we set CC to just the basename; use the full file name. X shift X set dummy "$ac_dir/$ac_word" "$@" X shift X ac_cv_prog_CC="$@" X fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then X echo "$ac_t""$CC" 1>&6 else X echo "$ac_t""no" 1>&6 fi X X if test -z "$CC"; then X case "`uname -s`" in X *win32* | *WIN32*) X # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:612: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CC"; then X ac_cv_prog_CC="$CC" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CC="cl" X break X fi X done X IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then X echo "$ac_t""$CC" 1>&6 else X echo "$ac_t""no" 1>&6 fi X ;; X esac X fi X test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi X echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:644: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 X ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross X cat > conftest.$ac_ext << EOF X #line 655 "configure" #include "confdefs.h" X main(){return(0);} EOF if { (eval echo configure:660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X ac_cv_prog_cc_works=yes X # If we can't run a trivial program, we are probably using a cross compiler. X if (./conftest; exit) 2>/dev/null; then X ac_cv_prog_cc_cross=no X else X ac_cv_prog_cc_cross=yes X fi else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross X echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then X { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:686: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross X echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:691: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then X ac_cv_prog_gcc=yes else X ac_cv_prog_gcc=no fi fi X echo "$ac_t""$ac_cv_prog_gcc" 1>&6 X if test $ac_cv_prog_gcc = yes; then X GCC=yes else X GCC= fi X ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:719: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then X ac_cv_prog_cc_g=yes else X ac_cv_prog_cc_g=no fi rm -f conftest* X fi X echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then X CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then X if test "$GCC" = yes; then X CFLAGS="" X else X CFLAGS="" X fi else X if test "$GCC" = yes; then X CFLAGS="" X else X CFLAGS= X fi fi X for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:755: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CXX"; then X ac_cv_prog_CXX="$CXX" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CXX="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi CXX="$ac_cv_prog_CXX" if test -n "$CXX"; then X echo "$ac_t""$CXX" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$CXX" && break done test -n "$CXX" || CXX="gcc" X X echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:787: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 X ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cxx_cross X cat > conftest.$ac_ext << EOF X #line 798 "configure" #include "confdefs.h" X int main(){return(0);} EOF if { (eval echo configure:803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X ac_cv_prog_cxx_works=yes X # If we can't run a trivial program, we are probably using a cross compiler. X if (./conftest; exit) 2>/dev/null; then X ac_cv_prog_cxx_cross=no X else X ac_cv_prog_cxx_cross=yes X fi else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X ac_cv_prog_cxx_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross X echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 if test $ac_cv_prog_cxx_works = no; then X { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:829: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross X echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 echo "configure:834: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then X ac_cv_prog_gxx=yes else X ac_cv_prog_gxx=no fi fi X echo "$ac_t""$ac_cv_prog_gxx" 1>&6 X if test $ac_cv_prog_gxx = yes; then X GXX=yes else X GXX= fi X ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 echo "configure:862: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X echo 'void f(){}' > conftest.cc if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then X ac_cv_prog_cxx_g=yes else X ac_cv_prog_cxx_g=no fi rm -f conftest* X fi X echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 if test "$ac_test_CXXFLAGS" = set; then X CXXFLAGS="$ac_save_CXXFLAGS" elif test $ac_cv_prog_cxx_g = yes; then X if test "$GXX" = yes; then X CXXFLAGS="" X else X CXXFLAGS="" X fi else X if test "$GXX" = yes; then X CXXFLAGS="" X else X CXXFLAGS= X fi fi X echo $ac_n "checking for compiler language""... $ac_c" 1>&6 echo "configure:894: checking for compiler language" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then X rm -rf conftest* X cc_lang="C++" X echo "$ac_t""C++" 1>&6 else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X cc_lang="C" X echo "$ac_t""C" 1>&6 fi rm -f conftest* X echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:917: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then X CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X # This must be in double quotes, not single quotes, because CPP may get X # substituted into the Makefile and "${CC-cc}" will confuse make. X CPP="${CC-cc} -E" X # On the NeXT, cc -E runs the code through the compiler's parser, X # not just through cpp. X cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then X : else X echo "$ac_err" >&5 X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X CPP="${CC-cc} -E -traditional-cpp" X cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then X : else X echo "$ac_err" >&5 X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X CPP="${CC-cc} -nologo -E" X cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then X : else X echo "$ac_err" >&5 X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* X ac_cv_prog_CPP="$CPP" fi X CPP="$ac_cv_prog_CPP" else X ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 X for ac_hdr in alloca.h stdlib.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:1000: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then X rm -rf conftest* X eval "ac_cv_header_$ac_safe=yes" else X echo "$ac_err" >&5 X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` X cat >> confdefs.h <&6 fi done X X X for ac_prog in nawk gawk mawk bawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1043: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$AWK"; then X ac_cv_prog_AWK="$AWK" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_AWK="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi AWK="$ac_cv_prog_AWK" if test -n "$AWK"; then X echo "$ac_t""$AWK" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$AWK" && break done X X for ac_prog in chmod do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1078: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CHMOD'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CHMOD"; then X ac_cv_prog_CHMOD="$CHMOD" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CHMOD="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi CHMOD="$ac_cv_prog_CHMOD" if test -n "$CHMOD"; then X echo "$ac_t""$CHMOD" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$CHMOD" && break done X X for ac_prog in gzip compress do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1113: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_COMPRESS'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X case "$COMPRESS" in X /*) X ac_cv_path_COMPRESS="$COMPRESS" # Let the user override the test with a path. X ;; X ?:/*) X ac_cv_path_COMPRESS="$COMPRESS" # Let the user override the test with a dos path. X ;; X *) X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_path_COMPRESS="$ac_dir/$ac_word" X break X fi X done X IFS="$ac_save_ifs" X ;; esac fi COMPRESS="$ac_cv_path_COMPRESS" if test -n "$COMPRESS"; then X echo "$ac_t""$COMPRESS" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$COMPRESS" && break done X X X # Extract the first word of "scp", so it can be a program name with args. set dummy scp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1153: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CP"; then X ac_cv_prog_CP="$CP" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CP="scp -p" X break X fi X done X IFS="$ac_save_ifs" fi fi CP="$ac_cv_prog_CP" if test -n "$CP"; then X echo "$ac_t""$CP" 1>&6 else X echo "$ac_t""no" 1>&6 fi X # Extract the first word of "rcp", so it can be a program name with args. set dummy rcp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1182: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CP"; then X ac_cv_prog_CP="$CP" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CP="rcp -p" X break X fi X done X IFS="$ac_save_ifs" fi fi CP="$ac_cv_prog_CP" if test -n "$CP"; then X echo "$ac_t""$CP" 1>&6 else X echo "$ac_t""no" 1>&6 fi X # Extract the first word of "cp", so it can be a program name with args. set dummy cp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1211: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$CP"; then X ac_cv_prog_CP="$CP" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_CP="cp" X break X fi X done X IFS="$ac_save_ifs" fi fi CP="$ac_cv_prog_CP" if test -n "$CP"; then X echo "$ac_t""$CP" 1>&6 else X echo "$ac_t""no" 1>&6 fi X X for ac_prog in deroff cat do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1243: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DEROFF'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$DEROFF"; then X ac_cv_prog_DEROFF="$DEROFF" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_DEROFF="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi DEROFF="$ac_cv_prog_DEROFF" if test -n "$DEROFF"; then X echo "$ac_t""$DEROFF" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$DEROFF" && break done X for ac_prog in diff do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1277: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DIFF'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$DIFF"; then X ac_cv_prog_DIFF="$DIFF" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_DIFF="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi DIFF="$ac_cv_prog_DIFF" if test -n "$DIFF"; then X echo "$ac_t""$DIFF" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$DIFF" && break done X for ac_prog in distill ps2pdf do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1311: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DISTILL'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X case "$DISTILL" in X /*) X ac_cv_path_DISTILL="$DISTILL" # Let the user override the test with a path. X ;; X ?:/*) X ac_cv_path_DISTILL="$DISTILL" # Let the user override the test with a dos path. X ;; X *) X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_path_DISTILL="$ac_dir/$ac_word" X break X fi X done X IFS="$ac_save_ifs" X ;; esac fi DISTILL="$ac_cv_path_DISTILL" if test -n "$DISTILL"; then X echo "$ac_t""$DISTILL" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$DISTILL" && break done test -n "$DISTILL" || DISTILL="echo No PostScript-to-PDF converter available:" X for ac_prog in ditroff groff do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1352: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DITROFF'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$DITROFF"; then X ac_cv_prog_DITROFF="$DITROFF" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_DITROFF="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi DITROFF="$ac_cv_prog_DITROFF" if test -n "$DITROFF"; then X echo "$ac_t""$DITROFF" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$DITROFF" && break done X for ac_prog in etags do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1386: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ETAGS'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$ETAGS"; then X ac_cv_prog_ETAGS="$ETAGS" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_ETAGS="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi ETAGS="$ac_cv_prog_ETAGS" if test -n "$ETAGS"; then X echo "$ac_t""$ETAGS" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$ETAGS" && break done X X for ac_prog in expand cat do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1421: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_EXPAND'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$EXPAND"; then X ac_cv_prog_EXPAND="$EXPAND" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_EXPAND="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi EXPAND="$ac_cv_prog_EXPAND" if test -n "$EXPAND"; then X echo "$ac_t""$EXPAND" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$EXPAND" && break done X X for ac_prog in jar tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1456: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_JAR'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$JAR"; then X ac_cv_prog_JAR="$JAR" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_JAR="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi JAR="$ac_cv_prog_JAR" if test -n "$JAR"; then X echo "$ac_t""$JAR" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$JAR" && break done X X X if test "xx`uname -s`" = "xxLinux" then X # Extract the first word of "lex", so it can be a program name with args. set dummy lex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1492: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$LEX"; then X ac_cv_prog_LEX="$LEX" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_LEX="lex -l" X break X fi X done X IFS="$ac_save_ifs" fi fi LEX="$ac_cv_prog_LEX" if test -n "$LEX"; then X echo "$ac_t""$LEX" 1>&6 else X echo "$ac_t""no" 1>&6 fi X else X # Extract the first word of "lex", so it can be a program name with args. set dummy lex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1522: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$LEX"; then X ac_cv_prog_LEX="$LEX" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_LEX="lex" X break X fi X done X IFS="$ac_save_ifs" fi fi LEX="$ac_cv_prog_LEX" if test -n "$LEX"; then X echo "$ac_t""$LEX" 1>&6 else X echo "$ac_t""no" 1>&6 fi X fi X # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1553: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$LEX"; then X ac_cv_prog_LEX="$LEX" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_LEX="flex -l" X break X fi X done X IFS="$ac_save_ifs" fi fi LEX="$ac_cv_prog_LEX" if test -n "$LEX"; then X echo "$ac_t""$LEX" 1>&6 else X echo "$ac_t""no" 1>&6 fi X X for ac_prog in ln do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1585: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$LN"; then X ac_cv_prog_LN="$LN" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_LN="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi LN="$ac_cv_prog_LN" if test -n "$LN"; then X echo "$ac_t""$LN" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$LN" && break done X for ac_prog in ls do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1619: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LS'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$LS"; then X ac_cv_prog_LS="$LS" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_LS="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi LS="$ac_cv_prog_LS" if test -n "$LS"; then X echo "$ac_t""$LS" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$LS" && break done X # Extract the first word of "man2html", so it can be a program name with args. set dummy man2html; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1651: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MAN2HTML'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X case "$MAN2HTML" in X /*) X ac_cv_path_MAN2HTML="$MAN2HTML" # Let the user override the test with a path. X ;; X ?:/*) X ac_cv_path_MAN2HTML="$MAN2HTML" # Let the user override the test with a dos path. X ;; X *) X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_path_MAN2HTML="$ac_dir/$ac_word" X break X fi X done X IFS="$ac_save_ifs" X test -z "$ac_cv_path_MAN2HTML" && ac_cv_path_MAN2HTML="echo No man-to-html converter available:" X ;; esac fi MAN2HTML="$ac_cv_path_MAN2HTML" if test -n "$MAN2HTML"; then X echo "$ac_t""$MAN2HTML" 1>&6 else X echo "$ac_t""no" 1>&6 fi X for ac_prog in mkdir do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1689: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MKDIR'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$MKDIR"; then X ac_cv_prog_MKDIR="$MKDIR" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_MKDIR="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi MKDIR="$ac_cv_prog_MKDIR" if test -n "$MKDIR"; then X echo "$ac_t""$MKDIR" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$MKDIR" && break done X for ac_prog in mv do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1723: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MV'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$MV"; then X ac_cv_prog_MV="$MV" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_MV="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi MV="$ac_cv_prog_MV" if test -n "$MV"; then X echo "$ac_t""$MV" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$MV" && break done X for ac_prog in nroff groff do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1757: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NROFF'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$NROFF"; then X ac_cv_prog_NROFF="$NROFF" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_NROFF="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi NROFF="$ac_cv_prog_NROFF" if test -n "$NROFF"; then X echo "$ac_t""$NROFF" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$NROFF" && break done X for ac_prog in rm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1791: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RM'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$RM"; then X ac_cv_prog_RM="$RM" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_RM="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi RM="$ac_cv_prog_RM" if test -n "$RM"; then X echo "$ac_t""$RM" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$RM" && break done X for ac_prog in rmdir do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1825: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RMDIR'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$RMDIR"; then X ac_cv_prog_RMDIR="$RMDIR" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_RMDIR="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi RMDIR="$ac_cv_prog_RMDIR" if test -n "$RMDIR"; then X echo "$ac_t""$RMDIR" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$RMDIR" && break done X for ac_prog in sed do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1859: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SED'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$SED"; then X ac_cv_prog_SED="$SED" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_SED="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi SED="$ac_cv_prog_SED" if test -n "$SED"; then X echo "$ac_t""$SED" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$SED" && break done X for ac_prog in shar false do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1893: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SHAR'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$SHAR"; then X ac_cv_prog_SHAR="$SHAR" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_SHAR="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi SHAR="$ac_cv_prog_SHAR" if test -n "$SHAR"; then X echo "$ac_t""$SHAR" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$SHAR" && break done X for ac_prog in spell do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1927: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SPELL'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$SPELL"; then X ac_cv_prog_SPELL="$SPELL" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_SPELL="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi SPELL="$ac_cv_prog_SPELL" if test -n "$SPELL"; then X echo "$ac_t""$SPELL" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$SPELL" && break done X for ac_prog in tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1961: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$TAR"; then X ac_cv_prog_TAR="$TAR" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_TAR="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi TAR="$ac_cv_prog_TAR" if test -n "$TAR"; then X echo "$ac_t""$TAR" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$TAR" && break done X for ac_prog in touch do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1995: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TOUCH'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$TOUCH"; then X ac_cv_prog_TOUCH="$TOUCH" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_TOUCH="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi TOUCH="$ac_cv_prog_TOUCH" if test -n "$TOUCH"; then X echo "$ac_t""$TOUCH" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$TOUCH" && break done X for ac_prog in unzip false do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:2029: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_UNZIP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$UNZIP"; then X ac_cv_prog_UNZIP="$UNZIP" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_UNZIP="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi UNZIP="$ac_cv_prog_UNZIP" if test -n "$UNZIP"; then X echo "$ac_t""$UNZIP" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$UNZIP" && break done X for ac_prog in yacc bison byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:2063: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$YACC"; then X ac_cv_prog_YACC="$YACC" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_YACC="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi YACC="$ac_cv_prog_YACC" if test -n "$YACC"; then X echo "$ac_t""$YACC" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$YACC" && break done X for ac_prog in zip false do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:2097: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ZIP'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$ZIP"; then X ac_cv_prog_ZIP="$ZIP" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_ZIP="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi ZIP="$ac_cv_prog_ZIP" if test -n "$ZIP"; then X echo "$ac_t""$ZIP" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$ZIP" && break done X for ac_prog in zoo false do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:2131: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ZOO'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X if test -n "$ZOO"; then X ac_cv_prog_ZOO="$ZOO" # Let the user override the test. else X IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" X ac_dummy="$PATH" X for ac_dir in $ac_dummy; do X test -z "$ac_dir" && ac_dir=. X if test -f $ac_dir/$ac_word; then X ac_cv_prog_ZOO="$ac_prog" X break X fi X done X IFS="$ac_save_ifs" fi fi ZOO="$ac_cv_prog_ZOO" if test -n "$ZOO"; then X echo "$ac_t""$ZOO" 1>&6 else X echo "$ac_t""no" 1>&6 fi X test -n "$ZOO" && break done X X for ac_func in fileno do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:2164: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 X builtin and then its argument prototype would still apply. */ char $ac_func(); X int main() { X /* The GNU C library defines this for functions which it implements X to always fail with ENOSYS. Some functions are actually named X something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif X ; return 0; } EOF if { (eval echo configure:2192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X eval "ac_cv_func_$ac_func=yes" else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi X if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` X cat >> confdefs.h <&6 fi done X X echo $ac_n "checking for alloca in -lPW""... $ac_c" 1>&6 echo "configure:2218: checking for alloca in -lPW" >&5 ac_lib_var=`echo PW'_'alloca | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X ac_save_LIBS="$LIBS" LIBS="-lPW $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=yes" else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" X fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_lib=HAVE_LIB`echo PW | sed -e 's/[^a-zA-Z0-9_]/_/g' \ X -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` X cat >> confdefs.h <&6 fi X X LEX="$ac_cv_prog_LEX" if test "xx$LEX" = "xxlex" then X if test "xx$cc_lang" = "xxC++" X then X echo $ac_n "checking for lex/flex library""... $ac_c" 1>&6 echo "configure:2271: checking for lex/flex library" >&5 X SAVELIBS="$LIBS" X LIBS="$SAVELIBS -ll" X cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X LL=-ll else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X LIBS="$SAVELIBS -lfl" X cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X LL=-lfl else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X LL= fi rm -f conftest* fi rm -f conftest* X LIBS="$SAVELIBS $LL" X echo "$ac_t""$LL" 1>&6 X else X echo $ac_n "checking for yywrap in -ll""... $ac_c" 1>&6 echo "configure:2314: checking for yywrap in -ll" >&5 ac_lib_var=`echo l'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X ac_save_LIBS="$LIBS" LIBS="-ll $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=yes" else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" X fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_lib=HAVE_LIB`echo l | sed -e 's/[^a-zA-Z0-9_]/_/g' \ X -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` X cat >> confdefs.h <&6 echo $ac_n "checking for yywrap in -lfl""... $ac_c" 1>&6 echo "configure:2359: checking for yywrap in -lfl" >&5 ac_lib_var=`echo fl'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X ac_save_LIBS="$LIBS" LIBS="-lfl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=yes" else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" X fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_lib=HAVE_LIB`echo fl | sed -e 's/^a-zA-Z0-9_/_/g' \ X -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` X cat >> confdefs.h <&6 fi X fi X X fi else X LDFLAGS="-L/usr/local/lib $LDFLAGS" X if test "xx$cc_lang" = "xxC++" X then X echo $ac_n "checking for flex library""... $ac_c" 1>&6 echo "configure:2413: checking for flex library" >&5 X SAVELIBS="$LIBS" X LIBS="$SAVELIBS -lfl" X cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X LL=-lfl else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X LL= fi rm -f conftest* X LIBS="$SAVELIBS $LL" X echo "$ac_t""$LL" 1>&6 X else X echo $ac_n "checking for yywrap in -lfl""... $ac_c" 1>&6 echo "configure:2438: checking for yywrap in -lfl" >&5 ac_lib_var=`echo fl'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then X echo $ac_n "(cached) $ac_c" 1>&6 else X ac_save_LIBS="$LIBS" LIBS="-lfl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=yes" else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 X rm -rf conftest* X eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" X fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then X echo "$ac_t""yes" 1>&6 X ac_tr_lib=HAVE_LIB`echo fl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ X -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` X cat >> confdefs.h <&6 fi X X fi fi X X if test "xx$LEX" = "xxflex" then X LEX="flex -l" elif test "xx$LEX" = "xxlex" then X if test "xx`uname -s`" = "xxAIX" X then X true X elif echo %% | lex -l 2>/dev/null 1>&2 X then X LEX="lex -l" X fi X rm -f lex.yy.c 2>/dev/null fi X echo $ac_n "checking for yacc library""... $ac_c" 1>&6 echo "configure:2504: checking for yacc library" >&5 YACC="$ac_cv_prog_YACC" YACCLIB= if test "xx$YACC" = "xxyacc" then X ac_save_LIBS="$LIBS" X LIBS=-ly X cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then X rm -rf conftest* X YACCLIB=-ly else X echo "configure: failed program was:" >&5 X cat conftest.$ac_ext >&5 fi rm -f conftest* X LIBS="$ac_save_LIBS" fi LIBS="$LIBS $YACCLIB" echo "$ac_t""$YACCLIB" 1>&6 X echo $ac_n "checking for bison flags""... $ac_c" 1>&6 echo "configure:2533: checking for bison flags" >&5 YACC="$ac_cv_prog_YACC" if test "xx$YACC" = "xxbison" then X YFLAGS="$YFLAGS -y" X echo "$ac_t""-y" 1>&6 else X echo "$ac_t""" 1>&6 fi X echo $ac_n "checking for preprocessor symbols needed on Sun Solaris""... $ac_c" 1>&6 echo "configure:2544: checking for preprocessor symbols needed on Sun Solaris" >&5 system=`uname -s` || echo unknown if test "xx$system" = "xxSunOS" then X DEFINES="$DEFINES -D__EXTERN_C__" X echo "$ac_t""$DEFINES" 1>&6 else X echo "$ac_t""" 1>&6 fi X X X X X trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | X case `(ac_space=' '; set | grep ac_space) 2>&1` in X *ac_space=\ *) X # `set' does not quote correctly, so add quotes (double-quote substitution X # turns \\\\ into \\, and sed turns \\ into \). X sed -n \ X -e "s/'/'\\\\''/g" \ X -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" X ;; X *) X # `set' quotes correctly as required by POSIX, so do not add quotes. X sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' X ;; X esac >> confcache if cmp -s $cache_file confcache; then X : else X if test -w $cache_file; then X echo "updating cache $cache_file" X cat confcache > $cache_file X else X echo "not updating unwritable cache $cache_file" X fi fi rm -f confcache X trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 X test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' X # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then X ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi X trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 X DEFS=-DHAVE_CONFIG_H X # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} X echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. X ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do X case "\$ac_option" in X -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) X echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" X exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; X -version | --version | --versio | --versi | --vers | --ver | --ve | --v) X echo "$CONFIG_STATUS generated by autoconf version 2.13" X exit 0 ;; X -help | --help | --hel | --he | --h) X echo "\$ac_cs_usage"; exit 0 ;; X *) echo "\$ac_cs_usage"; exit 1 ;; X esac done X ac_given_srcdir=$srcdir X trap 'rm -fr `echo "Makefile bibdup.sh:bibdup.sin config.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@CC@%$CC%g s%@CXX@%$CXX%g s%@CPP@%$CPP%g s%@AWK@%$AWK%g s%@CHMOD@%$CHMOD%g s%@COMPRESS@%$COMPRESS%g s%@CP@%$CP%g s%@DEROFF@%$DEROFF%g s%@DIFF@%$DIFF%g s%@DISTILL@%$DISTILL%g s%@DITROFF@%$DITROFF%g s%@ETAGS@%$ETAGS%g s%@EXPAND@%$EXPAND%g s%@JAR@%$JAR%g s%@LEX@%$LEX%g s%@LN@%$LN%g s%@LS@%$LS%g s%@MAN2HTML@%$MAN2HTML%g s%@MKDIR@%$MKDIR%g s%@MV@%$MV%g s%@NROFF@%$NROFF%g s%@RM@%$RM%g s%@RMDIR@%$RMDIR%g s%@SED@%$SED%g s%@SHAR@%$SHAR%g s%@SPELL@%$SPELL%g s%@TAR@%$TAR%g s%@TOUCH@%$TOUCH%g s%@UNZIP@%$UNZIP%g s%@YACC@%$YACC%g s%@ZIP@%$ZIP%g s%@ZOO@%$ZOO%g s%@DEFINES@%$DEFINES%g s%@YFLAGS@%$YFLAGS%g X CEOF EOF X cat >> $CONFIG_STATUS <<\EOF X # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do X if test $ac_beg -gt 1; then X sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file X else X sed "${ac_end}q" conftest.subs > conftest.s$ac_file X fi X if test ! -s conftest.s$ac_file; then X ac_more_lines=false X rm -f conftest.s$ac_file X else X if test -z "$ac_sed_cmds"; then X ac_sed_cmds="sed -f conftest.s$ac_file" X else X ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" X fi X ac_file=`expr $ac_file + 1` X ac_beg=$ac_end X ac_end=`expr $ac_end + $ac_max_sed_cmds` X fi done if test -z "$ac_sed_cmds"; then X ac_sed_cmds=cat fi EOF X cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then X # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". X case "$ac_file" in X *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` X ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; X *) ac_file_in="${ac_file}.in" ;; X esac X X # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. X X # Remove last slash and all that follows it. Not all systems have dirname. X ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` X if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then X # The file is in a subdirectory. X test ! -d "$ac_dir" && mkdir "$ac_dir" X ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" X # A "../" for each directory in $ac_dir_suffix. X ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` X else X ac_dir_suffix= ac_dots= X fi X X case "$ac_given_srcdir" in X .) srcdir=. X if test -z "$ac_dots"; then top_srcdir=. X else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; X /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; X *) # Relative path. X srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" X top_srcdir="$ac_dots$ac_given_srcdir" ;; X esac X X X echo creating "$ac_file" X rm -f "$ac_file" X configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." X case "$ac_file" in X *Makefile*) ac_comsub="1i\\ # $configure_input" ;; X *) ac_comsub= ;; X esac X X ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` X sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* X # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' ac_dD='%g' # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ac_uD='\4%g' # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_eB='$%\1#\2define\3' ac_eC=' ' ac_eD='%g' X if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then X # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". X case "$ac_file" in X *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` X ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; X *) ac_file_in="${ac_file}.in" ;; X esac X X echo creating $ac_file X X rm -f conftest.frag conftest.in conftest.out X ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` X cat $ac_file_inputs > conftest.in X EOF X # Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. rm -f conftest.vals cat > conftest.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp s%ac_d%ac_u%gp s%ac_u%ac_e%gp EOF sed -n -f conftest.hdr confdefs.h > conftest.vals rm -f conftest.hdr X # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >> conftest.vals <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF X # Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. X rm -f conftest.tail while : do X ac_lines=`grep -c . conftest.vals` X # grep -c gives empty output for an empty file on some AIX systems. X if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi X # Write a limited-size here document to conftest.frag. X echo ' cat > conftest.frag <> $CONFIG_STATUS X sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS X echo 'CEOF X sed -f conftest.frag conftest.in > conftest.out X rm -f conftest.in X mv conftest.out conftest.in ' >> $CONFIG_STATUS X sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail X rm -f conftest.vals X mv conftest.tail conftest.vals done rm -f conftest.vals X cat >> $CONFIG_STATUS <<\EOF X rm -f conftest.frag conftest.h X echo "/* $ac_file. Generated automatically by configure. */" > conftest.h X cat conftest.in >> conftest.h X rm -f conftest.in X if cmp -s $ac_file conftest.h 2>/dev/null; then X echo "$ac_file is unchanged" X rm -f conftest.h X else X # Remove last slash and all that follows it. Not all systems have dirname. X ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` X if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then X # The file is in a subdirectory. X test ! -d "$ac_dir" && mkdir "$ac_dir" X fi X rm -f $ac_file X mv conftest.h $ac_file X fi fi; done X EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF X Xexit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 X X chmod 444 Makefile config.h SHAR_EOF $shar_touch -am 0510165699 'configure' && chmod 0775 'configure' || $echo 'restore of' 'configure' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'configure:' 'MD5 check failed' 8774ee993b04f6cbb1075854a7c19761 configure SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'configure'`" test 82621 -eq "$shar_count" || $echo 'configure:' 'original size' '82621,' 'current size' "$shar_count!" fi fi # ============= configure.in ============== if test -f 'configure.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'configure.in' '(file already exists)' else $echo 'x -' extracting 'configure.in' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'configure.in' && dnl Process this file with autoconf to produce a configure script. AC_INIT(bibparse.y) X AC_CONFIG_HEADER(config.h:config.hin) X dnl Checks for compiler AC_PROG_CC AC_PROG_CXX AC_MSG_CHECKING(for compiler language) AC_TRY_COMPILE([extern "C" {};],[], X [cc_lang="C++" X AC_MSG_RESULT(C++)], X [cc_lang="C" X AC_MSG_RESULT(C)]) X dnl Checking for header files AC_CHECK_HEADERS(alloca.h stdlib.h) X dnl Checking for programs X AC_CHECK_PROGS(AWK, nawk gawk mawk bawk awk) X AC_CHECK_PROGS(CHMOD, chmod) X AC_PATH_PROGS(COMPRESS, [gzip compress]) X dnl We want a copy command that has the -p (preserve time stamp) flag, dnl but older cp implementations lack it. scp and rcp always have it, dnl but some sites disable rcp when scp is installed, so we must use dnl scp if it is available. X AC_CHECK_PROG(CP, scp,scp -p) AC_CHECK_PROG(CP, rcp,rcp -p) AC_CHECK_PROG(CP, cp,cp) X AC_CHECK_PROGS(DEROFF, deroff cat) AC_CHECK_PROGS(DIFF, diff) AC_PATH_PROGS(DISTILL, X [distill ps2pdf], X [echo No PostScript-to-PDF converter available:]) AC_CHECK_PROGS(DITROFF, ditroff groff) AC_CHECK_PROGS(ETAGS, etags) X dnl SGI IRIX 4.0 lacks expand, so use cat instead AC_CHECK_PROGS(EXPAND, expand cat) X AC_CHECK_PROGS(JAR, [jar tar]) X dnl flex can be used in place of lex, but MUST be run in dnl lex-compatibility mode (-l option), because we need access to a dnl statically-allocated yytext[] buffer. GNU/Linux has lex symlinked dnl to flex, but it does not behave as if called like "flex -l", so we dnl have to check for that system, sigh... X if test "xx`uname -s`" = "xxLinux" then X AC_CHECK_PROG(LEX, lex,lex -l) else X AC_CHECK_PROG(LEX, lex,lex) fi X AC_CHECK_PROG(LEX, flex,flex -l) X AC_CHECK_PROGS(LN, ln) AC_CHECK_PROGS(LS, ls) AC_PATH_PROG(MAN2HTML, man2html, [echo No man-to-html converter available:]) AC_CHECK_PROGS(MKDIR, mkdir) AC_CHECK_PROGS(MV, mv) AC_CHECK_PROGS(NROFF, nroff groff) AC_CHECK_PROGS(RM, rm) AC_CHECK_PROGS(RMDIR, rmdir) AC_CHECK_PROGS(SED, sed) AC_CHECK_PROGS(SHAR, shar false) AC_CHECK_PROGS(SPELL, spell) AC_CHECK_PROGS(TAR, tar) AC_CHECK_PROGS(TOUCH, touch) AC_CHECK_PROGS(UNZIP, unzip false) AC_CHECK_PROGS(YACC, [yacc bison byacc]) AC_CHECK_PROGS(ZIP, zip false) AC_CHECK_PROGS(ZOO, zoo false) X dnl Checking for library functions AC_CHECK_FUNCS(fileno) X dnl Checking for libraries dnl On HP-UX 9.0, we need -lPW for alloca() (required by bibparse.c) AC_CHECK_LIB(PW,[alloca]) X LEX="$ac_cv_prog_LEX" dnl GNU/Linux has a unique /usr/bin/yacc, distinct from /usr/bin/bison, dnl but its /usr/bin/lex is just a symlink to /usr/bin/flex. dnl Unfortunately, they forgot that /usr/lib/libl.a should then be a dnl symlink to /usr/lib/libfl.a, so -ll doesn't exist. We therefore dnl have to try both -ll and -lfl, sigh... if test "xx$LEX" = "xxlex" then X if test "xx$cc_lang" = "xxC++" X then X AC_MSG_CHECKING(for lex/flex library) X SAVELIBS="$LIBS" X LIBS="$SAVELIBS -ll" X AC_TRY_LINK(,,LL=-ll, X [LIBS="$SAVELIBS -lfl" X AC_TRY_LINK(,,LL=-lfl,LL=)]) X LIBS="$SAVELIBS $LL" X AC_MSG_RESULT($LL) X else X AC_CHECK_LIB(l,yywrap,,AC_CHECK_LIB(fl,yywrap)) X fi else X LDFLAGS="-L/usr/local/lib $LDFLAGS" X if test "xx$cc_lang" = "xxC++" X then X AC_MSG_CHECKING(for flex library) X SAVELIBS="$LIBS" X LIBS="$SAVELIBS -lfl" X AC_TRY_LINK(,,LL=-lfl,LL=) X LIBS="$SAVELIBS $LL" X AC_MSG_RESULT($LL) X else X AC_CHECK_LIB(fl,yywrap) X fi fi X dnl If flex is used, we MUST have the -l (lex compatibility) flag set, dnl and if lex is really flex, we still need it dnl dnl The construction of this test is tricky: originally, I just used dnl echo %% >conftest.l dnl if lex -l conftest.l 2>/dev/null 1>&2 dnl ... dnl to create a minimal lex file and run lex on it. dnl dnl However, on SGI IRIX 5.x and 6.x systems, instead of causing an dnl error, the undocumented -l switch causes lex to hang in an input dnl wait indefinitely. The solution adopted below is to pipe the dnl input to lex, which avoid the hang. dnl dnl On HP HP-UX 10.01 systems, lex will complain about an unrecognized dnl -l argument, but that is just a warning, and otherwise causes no dnl problems. dnl dnl Unfortunately, that test breaks on IBM AIX 4.2 systems, whose lex dnl writes an error message "0: Warning: 1285-300 The l flag is not dnl valid." onto stdout, instead of stderr, preventing compilation! dnl Argh.... Thus, we need another test for that system first, dnl sigh... dnl dnl All of this grief happens because the GNU/Linux people botched dnl their job in the first place! Compatible programs should be dnl compatible! X if test "xx$LEX" = "xxflex" then X LEX="flex -l" elif test "xx$LEX" = "xxlex" then X if test "xx`uname -s`" = "xxAIX" X then X true X elif echo %% | lex -l 2>/dev/null 1>&2 X then X LEX="lex -l" X fi X rm -f lex.yy.c 2>/dev/null fi X dnl AC_MSG_CHECKING(for yacc library) dnl YACC="$ac_cv_prog_YACC" dnl if test "xx$YACC" = "xxyacc" dnl then dnl LIBS="$LIBS -ly" dnl AC_MSG_RESULT(-ly) dnl else dnl AC_MSG_RESULT() dnl fi dnl Some Linux systems have yacc, but no -ly library, so we have to dnl actually try to link with this library AC_MSG_CHECKING(for yacc library) YACC="$ac_cv_prog_YACC" YACCLIB= if test "xx$YACC" = "xxyacc" then X ac_save_LIBS="$LIBS" X LIBS=-ly X AC_TRY_LINK(,,YACCLIB=-ly) X LIBS="$ac_save_LIBS" fi LIBS="$LIBS $YACCLIB" AC_MSG_RESULT($YACCLIB) X AC_MSG_CHECKING(for bison flags) YACC="$ac_cv_prog_YACC" if test "xx$YACC" = "xxbison" then X YFLAGS="$YFLAGS -y" X AC_MSG_RESULT(-y) else X AC_MSG_RESULT() fi X dnl Checking for host implementation AC_MSG_CHECKING(for preprocessor symbols needed on Sun Solaris) system=`uname -s` || echo unknown if test "xx$system" = "xxSunOS" then X DEFINES="$DEFINES -D__EXTERN_C__" X AC_MSG_RESULT($DEFINES) else X AC_MSG_RESULT() fi X AC_SUBST(DEFINES) AC_SUBST(LIBS) AC_SUBST(YFLAGS) X dnl Final output AC_OUTPUT(Makefile bibdup.sh:bibdup.sin) X dnl Make all generated files non-writable chmod 444 Makefile config.h SHAR_EOF $shar_touch -am 0510165599 'configure.in' && chmod 0644 'configure.in' || $echo 'restore of' 'configure.in' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'configure.in:' 'MD5 check failed' b5ba1131c95e30c1f66294ac04afebc3 configure.in SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'configure.in'`" test 6234 -eq "$shar_count" || $echo 'configure.in:' 'original size' '6234,' 'current size' "$shar_count!" fi fi # ============= config.hin ============== if test -f 'config.hin' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'config.hin' '(file already exists)' else $echo 'x -' extracting 'config.hin' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'config.hin' && /* config.hin. Generated automatically from configure.in by autoheader. */ X /* Define if you have the fileno function. */ #undef HAVE_FILENO X /* Define if you have the header file. */ #undef HAVE_ALLOCA_H X /* Define if you have the header file. */ #undef HAVE_STDLIB_H X /* Define if you have the PW library (-lPW). */ #undef HAVE_LIBPW X /* Define if you have the fl library (-lfl). */ #undef HAVE_LIBFL X /* Define if you have the l library (-ll). */ #undef HAVE_LIBL X #undef HAVE_IBMPC SHAR_EOF $shar_touch -am 0504183199 'config.hin' && chmod 0644 'config.hin' || $echo 'restore of' 'config.hin' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'config.hin:' 'MD5 check failed' b39c0e613eaceb46b361e93b930bb3e5 config.hin SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'config.hin'`" test 516 -eq "$shar_count" || $echo 'config.hin:' 'original size' '516,' 'current size' "$shar_count!" fi fi # ============= lexmain.c ============== if test -f 'lexmain.c' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'lexmain.c' '(file already exists)' else $echo 'x -' extracting 'lexmain.c' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'lexmain.c' && #include X #include #include #include X #if defined(HAVE_STDLIB_H) #include #endif X #include "args.h" #include "bibyydcl.h" X #define ERROR_PREFIX "??" /* this prefixes all error messages */ X extern long line_number; extern const char *the_filename; X static void dolex ARGS((void)); int main ARGS((int argc_, char *argv_[])); X #if NEW_STYLE int main(int argc, char *argv[]) #else /* K&R style */ int main(argc, argv) int argc; char *argv[]; #endif /* NEW_STYLE */ { X int k; X FILE *fp; X X if (argc > 1) /* files to lex named on command line */ X { X for (k = 1; k < argc; ++k) X { X fp = freopen(argv[k],"r",stdin); X if (fp == (FILE*)NULL) X { X (void)fprintf(stderr, X "\n%s Ignoring open failure on file [%s]\n", X ERROR_PREFIX, argv[k]); X (void)perror("perror() says"); X } X else X { X the_filename = (const char*)argv[k]; X dolex(); X (void)fclose(fp); X } X } X } X else /* lex stdin */ X { X the_filename = "stdin"; X dolex(); X } X exit (EXIT_SUCCESS); X return (0); } X static void dolex(VOID) { X line_number = 1L; X printf("# line %ld \"%s\"\n", line_number, the_filename); X X while (yylex() > 0) X ; } SHAR_EOF $shar_touch -am 0601191198 'lexmain.c' && chmod 0644 'lexmain.c' || $echo 'restore of' 'lexmain.c' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'lexmain.c:' 'MD5 check failed' 418e863283cb4e2a121a30156dcc00e2 lexmain.c SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'lexmain.c'`" test 1223 -eq "$shar_count" || $echo 'lexmain.c:' 'original size' '1223,' 'current size' "$shar_count!" fi fi # ============= token.h ============== if test -f 'token.h' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'token.h' '(file already exists)' else $echo 'x -' extracting 'token.h' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'token.h' && /* NB: The values chosen here MUST match the %token lines in bibparse.y and X the values compiled into bibclean */ #if NEW_STYLE typedef enum token_list { X TOKEN_UNKNOWN = 0, X TOKEN_ABBREV = 1, /* alphabetical order, from 1 */ X TOKEN_AT, X TOKEN_COMMA, X TOKEN_COMMENT, X TOKEN_ENTRY, X TOKEN_EQUALS, X TOKEN_FIELD, X TOKEN_INCLUDE, X TOKEN_INLINE, X TOKEN_KEY, X TOKEN_LBRACE, X TOKEN_LITERAL, X TOKEN_NEWLINE, X TOKEN_PREAMBLE, X TOKEN_RBRACE, X TOKEN_SHARP, X TOKEN_SPACE, X TOKEN_STRING, X TOKEN_VALUE } token_t; #else /* K&R style */ typedef int token_t; #define TOKEN_UNKNOWN 0 #define TOKEN_ABBREV 1 /* alphabetical order from 1 */ #define TOKEN_AT 2 #define TOKEN_COMMA 3 #define TOKEN_COMMENT 4 #define TOKEN_ENTRY 5 #define TOKEN_EQUALS 6 #define TOKEN_FIELD 7 #define TOKEN_INCLUDE 8 #define TOKEN_INLINE 9 #define TOKEN_KEY 10 #define TOKEN_LBRACE 11 #define TOKEN_LITERAL 12 #define TOKEN_NEWLINE 13 #define TOKEN_PREAMBLE 14 #define TOKEN_RBRACE 15 #define TOKEN_SHARP 16 #define TOKEN_SPACE 17 #define TOKEN_STRING 18 #define TOKEN_VALUE 19 #endif X static const char *type_name[] = { /* must be indexable by TOKEN_xxx */ X "UNKNOWN", X "ABBREV", /* alphabetical order, starting at 1 */ X "AT", X "COMMA", X "COMMENT", X "ENTRY", X "EQUALS", X "FIELD", X "INCLUDE", X "INLINE", X "KEY", X "LBRACE", X "LITERAL", X "NEWLINE", X "PREAMBLE", X "RBRACE", X "SHARP", X "SPACE", X "STRING", X "VALUE", }; SHAR_EOF $shar_touch -am 0601174398 'token.h' && chmod 0644 'token.h' || $echo 'restore of' 'token.h' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'token.h:' 'MD5 check failed' 613f21365327b323609161f14b704247 token.h SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'token.h'`" test 1528 -eq "$shar_count" || $echo 'token.h:' 'original size' '1528,' 'current size' "$shar_count!" fi fi # ============= test/check.bat ============== if test ! -d 'test'; then $echo $echo_n 'x -' 'test: '$echo_c if mkdir 'test'; then $echo 'created'; else $echo 'failed to create'; fi fi if test -f 'test/check.bat' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/check.bat' '(file already exists)' else $echo 'x -' extracting 'test/check.bat' '(binary)' sed 's/^X//' << 'SHAR_EOF' | uudecode && begin 600 test/check.bat M.B,@5&AI2!T;R!T#`P,B!L97@P,#,@;&5X,#`T(&QE>#`P-2D@9&\@+BY<8FEB;&5X M("4E9BYI;B`^)25F+F]U=`T*.B,@/R`@0F5C875S92!T:&%T(&1O97-N)W0@ M=V]R:R$@(%EO=2!E;F0@=7`@=VET:"!F:6QE2TQ.3DY72`M+2!U<&1A=&4@9F]R(&)I8G!A#`P,2YI;B`^ M;&5X,#`Q+F]U=`T*8V]M<"!L97@P,#$N;W5T(&]K87E<;&5X,#`Q+F]U=`T* M+BY<8FEB;&5X(&QE>#`P,BYI;B`^;&5X,#`R+F]U=`T*8V]M<"!L97@P,#(N M;W5T(&]K87E<;&5X,#`R+F]U=`T*+BY<8FEB;&5X(&QE>#`P,RYI;B`^;&5X M,#`S+F]U=`T*8V]M<"!L97@P,#,N;W5T(&]K87E<;&5X,#`S+F]U=`T*+BY< M8FEB;&5X(&QE>#`P-"YI;B`^;&5X,#`T+F]U=`T*8V]M<"!L97@P,#0N;W5T M(&]K87E<;&5X,#`T+F]U=`T*+BY<8FEB;&5X(&QE>#`P-2YI;B`^;&5X,#`U M+F]U=`T*8V]M<"!L97@P,#4N;W5T(&]K87E<;&5X,#`U+F]U=`T*#0HN+EQB M:6)P87)S92!P87)S93`P,2YI;B`^<&%R5QP M87)S93`P,BYO=70-"BXN7&)I8G!A5QP87)S93`P-2YO=70-"BXN7&)I8G!A5QP87)S93`P."YO=70-"BXN7&)I8G!A5QP87)S93`Q,2YO=70-"BXN7&)I8G!A5QP87)S93`Q-"YO=70-"BXN7&)I8G!A#`P M,2YO=70-"F-O;7`@=6YL97@P,#$N;W5T(&]K87E<=6YL97@P,#$N;W5T#0HN M+EQB:6)U;FQE>"!U;FQE>#`P,BYI;B`^=6YL97@P,#(N;W5T#0IC;VUP('5N M;&5X,#`R+F]U="!O:V%Y7'5N;&5X,#`R+F]U=`T*+BY<8FEB=6YL97@@=6YL M97@P,#,N:6X@/G5N;&5X,#`S+F]U=`T*8V]M<"!U;FQE>#`P,RYO=70@;VMA M>5QU;FQE>#`P,RYO=70-"BXN7&)I8G5N;&5X('5N;&5X,#`T+FEN(#YU;FQE M>#`P-"YO=70-"F-O;7`@=6YL97@P,#0N;W5T(&]K87E<=6YL97@P,#0N;W5T M#0HN+EQB:6)U;FQE>"!U;FQE>#`P-2YI;B`^=6YL97@P,#4N;W5T#0IC;VUP A('5N;&5X,#`U+F]U="!O:V%Y7'5N;&5X,#`U+F]U=`T* ` end SHAR_EOF $shar_touch -am 0511173499 'test/check.bat' && chmod 0444 'test/check.bat' || $echo 'restore of' 'test/check.bat' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'test/check.bat:' 'MD5 check failed' 37bd117fcb412717cffe9fa3b657ac89 test/check.bat SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'test/check.bat'`" test 2418 -eq "$shar_count" || $echo 'test/check.bat:' 'original size' '2418,' 'current size' "$shar_count!" fi fi # ============= test/docheck.sh ============== if test -f 'test/docheck.sh' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/docheck.sh' '(file already exists)' else $echo 'x -' extracting 'test/docheck.sh' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'test/docheck.sh' && #! /bin/sh #======================================================================= # Run validation tests on bibXXX (XXX = lex, parse, or unlex). # # Usage: # ./docheck.sh PROGRAM test1 test2 ... # # The first argument is the name of the program to test; it should be # absolute, relative, or else known to be in the search path. # # The second through last of the files are the basenames of test # files. # # [03-Jun-1998] #======================================================================= X # Validate the argument count if test $# -lt 2 then X echo Usage: ./docheck.sh PROGRAM test1 test2 ... X exit 1 fi X # Validate the program name PROGRAM=$1 if test -f $PROGRAM then X true else X PROGRAM=`which $PROGRAM` fi X if test -f $PROGRAM then X true else X echo $1 not found X exit 1 fi X # Discard the first argument; what remains are the test basenames shift X CMP=cmp DIFF=diff RM="rm -f" X for f in "$@" do X if test -f $f.opt X then X echo $f: options `cat $f.opt` X ${PROGRAM} `cat $f.opt` $f.in >$f.out 2>$f.err X else X echo $f X ${PROGRAM} $f.in >$f.out 2>$f.err X fi X X # The sed step is necessary to handle SGI IRIX 6 lex output, and X # bison output, and is harmless on other systems. X sed -e 's/Syntax error/syntax error/' \ X -e 's/parse error/syntax error/' \ X < $f.err >$f.er2 X mv $f.er2 $f.err X X if ${CMP} okay/$f.err $f.err X then ${RM} $f.err X else X echo Failure on $f.err ... X ${DIFF} okay/$f.err $f.err X fi X if ${CMP} okay/$f.out $f.out X then ${RM} $f.out X else X echo Failure on $f.out ... X ${DIFF} okay/$f.out $f.out X fi done SHAR_EOF $shar_touch -am 0510080999 'test/docheck.sh' && chmod 0555 'test/docheck.sh' || $echo 'restore of' 'test/docheck.sh' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'test/docheck.sh:' 'MD5 check failed' afef165c383e456cd1549d20a9d3dbd1 test/docheck.sh SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'test/docheck.sh'`" test 1599 -eq "$shar_count" || $echo 'test/docheck.sh:' 'original size' '1599,' 'current size' "$shar_count!" fi fi # ============= test/lex001.in ============== if test -f 'test/lex001.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/lex001.in' '(file already exists)' else $echo 'x -' extracting 'test/lex001.in' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'test/lex001.in' && @Book{Lamport:LDP85, X title = "{\LaTeX}---A Document X Preparation System---User's X Guide and Reference Manual", } X @String{pub-AW = X "Ad{\-d}i{\-s}on-Wes{\-l}ey"} X @Book{Lamport:LDP85, X author = "Leslie Lamport", X title = "{\LaTeX}---A Document X Preparation System---User's X Guide and Reference Manual", X publisher = pub-AW, X year = "1985", X ISBN = "0-201-15790-X", } SHAR_EOF $shar_touch -am 0102163493 'test/lex001.in' && chmod 0444 'test/lex001.in' || $echo 'restore of' 'test/lex001.in' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'test/lex001.in:' 'MD5 check failed' 5caa60d5df2ec76301f1f66bdc825b10 test/lex001.in SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'test/lex001.in'`" test 457 -eq "$shar_count" || $echo 'test/lex001.in:' 'original size' '457,' 'current size' "$shar_count!" fi fi # ============= test/lex002.in ============== if test -f 'test/lex002.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/lex002.in' '(file already exists)' else $echo 'x -' extracting 'test/lex002.in' '(binary)' sed 's/^X//' << 'SHAR_EOF' | uudecode && begin 600 test/lex002.in M0$)O;VM[3&%M<&]R=#I,1%`X-2QT:71L93TB>UQ,851E6'TM+2U!($1O8W5M M96YT(%!R97!AUPM;'UE>2)]0$)O;VM[3&%M<&]R=#I,1%`X-2QA=71H;W(](DQE MUQ,851E6'TM+2U!($1O8W5M96YT(%!R M97!A&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'test/lex002.in:' 'MD5 check failed' cccfe6237ded305d10b75f5a9dddfdb4 test/lex002.in SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'test/lex002.in'`" test 331 -eq "$shar_count" || $echo 'test/lex002.in:' 'original size' '331,' 'current size' "$shar_count!" fi fi # ============= test/lex003.in ============== if test -f 'test/lex003.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/lex003.in' '(file already exists)' else $echo 'x -' extracting 'test/lex003.in' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'test/lex003.in' && @Book{Lamport:LDP85, X X title = X X X X "{\LaTeX}---A Document X X X X X X X X X X X X X X Preparation System---User's X X X X X X X X X X X X X X Guide and Reference Manual", } X @String{pub-AW = X X X X X X X X X X X "Ad{\-d}i{\-s}on-Wes{\-l}ey"} X @Book{Lamport:LDP85, X X author = X X X "Leslie Lamport", X X title = X X X X "{\LaTeX}---A Document X X X X X X X X X X X X X X Preparation System---User's X X X X X X X X X X X X X X Guide and Reference Manual", X X publisher = pub-AW, X X year = X X X X X "1985", X X ISBN = X X X X X "0-201-15790-X", } SHAR_EOF $shar_touch -am 0603065398 'test/lex003.in' && chmod 0444 'test/lex003.in' || $echo 'restore of' 'test/lex003.in' 'failed' if ( md5sum --help &1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ && ( md5sum --version &1 | grep -v 'textutils 1.12' ) >/dev/null; then md5sum -c << SHAR_EOF >/dev/null 2>&1 \ || $echo 'test/lex003.in:' 'MD5 check failed' b6fcfa652415b4a53a59da435dd7207f test/lex003.in SHAR_EOF else shar_count="`LC_ALL=C wc -c < 'test/lex003.in'`" test 457 -eq "$shar_count" || $echo 'test/lex003.in:' 'original size' '457,' 'current size' "$shar_count!" fi fi # ============= test/lex004.in ============== if test -f 'test/lex004.in' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'test/lex004.in' '(file already exists)' else $echo 'x -' extracting 'test/lex004.in' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'test/lex004.in' && %%% /u/sy/beebe/tex/bib/texbook3.bib, Thu Dec 29 11:04:44 1994 %%% Edit by Nelson H. F. Beebe X %%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "2.69", %%% date = "11 May 1998", %%% time = "18:09:35 MDT", %%% filename = "texbook3.bib", %%% address = "Center for Scientific Computing %%% University of Utah %%% Department of Mathematics, 322 INSCC %%% 155 S 1400 E RM 233 %%% Salt Lake City, UT 84112-0090 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 585 1640, +1 801 581 4148", %%% URL = "http://www.math.utah.edu/~beebe", %%% checksum = "53057 11327 46815 427150", %%% email = "beebe at math.utah.edu, beebe at acm.org, %%% beebe at ieee.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "bibliography, TeX", %%% supported = "yes", %%% docstring = "This BibTeX file records books, articles, %%% and electronic forums on TeX, METAFONT, %%% Web, fonts, typography, indexing, and %%% software related to these topics. Articles %%% from TUGboat and TeXniques are excluded, %%% because they are maintained in separate %%% bibliographies (tugboat.bib and %%% texnique.bib). Also largely excluded is %%% material on SGML and other aspects of %%% electronic publishing, because they are %%% covered in separate bibliographies %%% (ep.bib, epodd.bib, and sgml.bib). %%% %%% At version 2.69, the year coverage looks %%% like this: %%% %%% 1928 ( 1) 1952 ( 0) 1976 ( 3) %%% 1929 ( 0) 1953 ( 0) 1977 ( 2) %%% 1930 ( 0) 1954 ( 0) 1978 ( 7) %%% 1931 ( 0) 1955 ( 0) 1979 ( 5) %%% 1932 ( 0) 1956 ( 0) 1980 ( 6) %%% 1933 ( 0) 1957 ( 0) 1981 ( 11) %%% 1934 ( 0) 1958 ( 0) 1982 ( 20) %%% 1935 ( 0) 1959 ( 0) 1983 ( 24) %%% 1936 ( 0) 1960 ( 0) 1984 ( 14) %%% 1937 ( 0) 1961 ( 0) 1985 ( 35) %%% 1938 ( 0) 1962 ( 0) 1986 ( 39) %%% 1939 ( 0) 1963 ( 0) 1987 ( 43) %%% 1940 ( 0) 1964 ( 0) 1988 ( 49) %%% 1941 ( 0) 1965 ( 0) 1989 ( 54) %%% 1942 ( 0) 1966 ( 0) 1990 ( 50) %%% 1943 ( 0) 1967 ( 1) 1991 ( 40) %%% 1944 ( 0) 1968 ( 0) 1992 ( 53) %%% 1945 ( 0) 1969 ( 1) 1993 ( 46) %%% 1946 ( 0) 1970 ( 2) 1994 ( 34) %%% 1947 ( 0) 1971 ( 1) 1995 ( 23) %%% 1948 ( 0) 1972 ( 2) 1996 ( 9) %%% 1949 ( 0) 1973 ( 1) 1997 ( 18) %%% 1950 ( 0) 1974 ( 1) 1998 ( 2) %%% 1951 ( 0) 1975 ( 1) %%% 19xx ( 2) %%% %%% Article: 159 %%% Book: 251 %%% Booklet: 12 %%% InCollection: 7 %%% InProceedings: 61 %%% Manual: 9 %%% MastersThesis: 1 %%% Misc: 13 %%% Periodical: 1 %%% PhdThesis: 1 %%% Proceedings: 33 %%% TechReport: 50 %%% Unpublished: 2 %%% %%% Total entries: 600 %%% %%% The ISBN and ISSN fields will be printed if %%% the is-alpha.bst or is-plain.bst style %%% files are used. %%% %%% This bibliography is a continuation of that %%% in texbook1.bib, which was frozen at %%% version 1.153, in order to introduce an %%% improved citation tag scheme. %%% %%% CONVENTIONS %%% %%% Books are tagged by the first author's last %%% name, a colon, a four-digit publication %%% year, a colon, and up to 3 upper-case letters %%% taken from the first three upper-case words %%% in the title (ignoring words like A, And, %%% The). When this is insufficient to %%% disambiguate entries, additional lower-case %%% letters are suffixed to the tags. %%% %%% For Dutch authors, a van part is included %%% in the author tag. For names with accented %%% letters, accents are dropped in the author %%% tag. %%% %%% Entries are stored ordered by the BibTeX %%% tag name, independent of the entry type %%% (the GNU Emacs function sort-bibtex-entries %%% can be used to ensure correct ordering). %%% However, entries that are cross-referenced %%% by others are stored at the end of the %%% file, since that order is required by %%% BibTeX. %%% %%% With few exceptions, value fields for %%% acknowledgement, address, journal, and %%% publisher keywords should use macros %%% defined in the string preamble below. This %%% helps to ensure consistency, and reduces %%% the entry sizes. Address entries must %%% always include the country. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility." %%% } %%% ==================================================================== %%% %%% Computing Systems is the Journal of the USENIX Association %%% published with the collaboration of the EUUG. The ISSN is %%% 0895-6340. It is published by the University of California %%% Press, 2120 Berkeley Way, Berkeley, CA 94720. %%% %%% Rates are US $40/yr for non-members, plus $4 postage if %%% outside the US. Single copies are US $10. %%% %%% Editorial correspondence should be addressed to %%% %%% Computing Systems %%% Suite 215 %%% 2560 Ninth Street %%% Berkeley, CA 94710 %%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% X %%% A delimited macro \toenglish ... \endtoenglish is NECESSARY here. %%% The more conventional undelimited form \toenglish{...} has braces %%% that prevent BibTeX's downcasing operation, and the alternate form %%% {\toenglish{...}} is considered a `special character' by BibTeX, %%% and all of {...} gets downcased. We avoid the name \english to %%% prevent conflicts with language options in packages like Babel. %%% %%% To suppress output of English translations of non-English titles, %%% use %%% "\def \toenglish #1\endtoenglish{\unskip}" %%% instead. X @Preamble{"\input bibnames.sty " # "\input path.sty " # "\ifx \k \undefined \let \k = \c X \immediate\write16{Ogonek accent unavailable: replaced by cedilla}\fi " # "\def \toenglish #1\endtoenglish{[{\em English:} #1\unskip]} " # "\hyphenation{ X An-wen-der-ver-ein-i-gung X Bie-mes-der-fer X Co-lo-phon X Deutsch-spra-chi-ge X Ge-leit-wort X Hol-dys X Katz-en-beiss-er X Ko-lo-dziej-ska X la-da-mi X Lar-ra-bee X Manu-scripts X mark-up X Rijks-uni-ver-si-teit X South-all X Stutt-gart }" } X %%====================================================================== %% Acknowledgements X @String{ack-aa = "Abass Alamnehe, X EthiO Systems Co., X P.O. Box 36921, X Houston, TX 77236, X USA, X Phone: +1 713 995-4360, X FAX: +1 713 995-1346, X e-mail: \path|abassa@sugar.NeoSoft.COM|"} X @String{ack-ab = "Arvind Borde, X Department of Mathematics, X Long Island University, X Southampton, NY 11968, USA, X Tel: (516) 283-4000, X e-mail: BITnet: \path|borde@bnlcl1|"} X @String{ack-bnb = "Barbara N. Beeton X e-mail: \path|bnb@math.ams.org|"} X @String{ack-cb = "Claudio Beccari, X Dipartimento di Elettronica, X Politecnico di Torino, X Corso Duca degli Abruzzi, 24, X I10129 Torino, Italy, X e-mail: \path|beccari@itopoli.bitnet|, X \path|beccari@polito.it|"} X @String{ack-dh = "Don Hosek, X 440F Grinnell, X Claremont, CA 91711, X Tel: (714) 625-0147, X e-mail: BITnet: \path|dhosek@ymir|"} X @String{ack-fm = "Frank Mittelbach, X e-mail: \path|mittelbach@mzdmza.zdv.uni-mainz.de|"} X @String{ack-hk = "Hanna K{\"o}lodziejska, X {\"O}srodek Obliczeniowy, X Instytutu Informatyki UW, X P{\"a}lac Kultury i Nauki pok. 838, X 00-901 Warszawa, X Poland"} X @String{ack-jb = "Janusz S. Bie{\'n}, X e-mail: \path|jsbien@plearn.edu.pl|"} X @String{ack-jpl = "Jeff Lankford, X X e-mail: \path|jpl@nrtc.northrop.com|"} @String{ack-js = "Joachim Schrod, X Institute for Theoretical Informatics, X Computer Science Department, X Technical University of Darmstadt, X Germany, X e-mail: \path|schrod@iti.informatik.th-darmstadt.de|"} X @String{ack-kb = "Karl Berry, X e-mail: \path|karl@cs.umb.edu|"} X @String{ack-mb = "Mimi Burbank, X e-mail: \path|MIMI@scri.fsu.edu|"} X @String{ack-mc = "Malcolm Clark"} X @String{ack-md = "Monika D{\k{a}}bkowska, X Uniwersytet Warszawski, X Wydzia{\l} Matematyki, Informatyki i Mechaniki Stosowanej, X Warszawa, Poland"} X @String{ack-nhfb = "Nelson H. F. Beebe, X Center for Scientific Computing, X University of Utah, X Department of Mathematics, 322 INSCC, X 155 S 1400 E RM 233, X Salt Lake City, UT 84112-0090, USA, X Tel: +1 801 581 5254, X FAX: +1 801 585 1640, +1 801 581 4148, X e-mail: \path|beebe@math.utah.edu|, X \path|beebe@acm.org|, X \path|beebe@ieee.org| (Internet), X URL: \path|http://www.math.utah.edu/~beebe/|"} X @String{ack-njh = "Nick Higham, X e-mail: \path|higham@vtx.ma.man.ac.uk|"} X @String{ack-ps = "Peter Schmitt, X Institute of Mathematics, X University of Vienna, X Strudlhofgasse 4, X A-1090 Wien, X Austria, X e-mail: \path|a8131dal@awiuni11.edvz.univie.ac.at|, X \path|schmitt@awirap.bitnet|"} X @String{ack-rw = "Reinhard Wonneberger, X Electronic Data Systems, X Eisenstr.56, X D-65428 Ruesselsheim, X Federal Republic of Germany, X e-mail: \path|lo1be.rwonne01@eds.com|"} X @String{ack-rz = "Reinhard Zierke, X Universitaet Hamburg, FB Informatik, X Vogt-Koelln-Strasse 30 X D-22527 Hamburg, X Germany, X Tel: (040) 54715-295, X Fax: (040) 54715-303, X e-mail: \path|zierke@informatik.uni-hamburg.de|"} X %%====================================================================== %% Institution abbreviations: X @String{inst-ANL = "Argonne National Laboratory"} X @String{inst-ANL:adr = "9700 South Cass Avenue, Argonne, IL X 60439-4801, USA"} X @String{inst-APPL-FORTH-RES = "Institute for Applied FORTH Research"} X @String{inst-APPL-FORTH-RES:adr = "Rochester, NY, USA"} X @String{inst-ATT-BELL = "AT\&T Bell Laboratories"} X @String{inst-ATT-BELL:adr = "Murray Hill, NJ, USA"} X @String{inst-CIRCE = "CIRCE"} X @String{inst-CIRCE:adr = "Orsay, France"} X @String{inst-CWI = "Centrum voor Wiskunde en Informatica"} X @String{inst-CWI:adr = "P. O. Box 4079, 1009 AB Amsterdam, The X Netherlands"} X @String{inst-METAFOUNDRY = "The Metafoundry"} X @String{inst-METAFOUNDRY:adr = "OCLC Online Computer Library Center, Inc., X Dublin, OH, USA"} X @String{inst-STAN-CS = "Stanford University, Department of Computer X Science"} X @String{inst-STAN-CS:adr = "Stanford, CA, USA"} X @String{inst-STANFORD = "Stanford University"} X @String{inst-STANFORD:adr = "Stanford, CA, USA"} X @String{inst-USNPS = "U. S. Naval Postgraduate School"} X @String{inst-USNPS:adr = "Monterey, CA 93940, USA"} X @String{inst-USNWL = "U. S. Naval Weapons Laboratory"} X @String{inst-USNWL:adr = "Dahlgren, VA 22448, USA"} X %%====================================================================== %% Journal abbreviations: X @String{j-ABACUS = "Abacus"} X @String{j-ACTA-INFO = "Acta Informatica"} X @String{j-ALLC-BULL = "ALLC Bull"} X @String{j-AMSCI = "American Scientist"} X @String{j-APL-QUOTE-QUAD = "APL Quote Quad"} X @String{j-ATT-TECH-J = "AT\&T Technical Journal"} X @String{j-BAMSN = "Bulletin of the American Mathematical X Society (new series)"} X @String{j-BSTJ = "The Bell System Technical Journal"} X @String{j-BYTE = "Byte Magazine"} X @String{j-CACM = "Communications of the Association for X Computing Machinery"} X @String{j-CGF = "Computer Graphics Forum"} X @String{j-CGIP = "Computer Graphics and Image Processing"} X @String{j-CJ = "The Computer Journal"} X @String{j-COLL-MICRO = "Collegiate Microcomputer"} X @String{j-COMP-CHEM = "Computers and Chemistry"} X @String{j-COMP-PHYS-COMM = "Computer Physics Communications"} X @String{j-COMP-REV = "Computing Reviews"} X @String{j-COMP-SURVEYS = "ACM Computing Surveys"} X @String{j-COMPCHEM = "Computers in Chemistry"} X @String{j-COMPSYS = "Computing Systems"} X @String{j-COMPUTER = "Computer"} X @String{j-COMPUTERS-AND-GRAPHICS = "Computers and Graphics"} X @String{j-COMPUTERSHOPPER = "Computer Shopper"} X @String{j-CPC = "Computer Physics Communications"} X @String{j-CT = "c't"} X @String{j-DDJ = "Dr. Dobb's Journal of Software Tools"} X @String{j-ELECTRONIC-LIBRARY = "Electronic Library"} X @String{j-EPODD = "Electronic X Publishing\emdash{}Orig{\-}i{\-}na{\-}tion, X Dissemination, and Design"} X @String{j-GUTENBERG = "Cahiers GUTenberg"} X @String{j-IBM-SYS-J = "IBM Systems Journal"} X @String{j-IEEE-CGA = "IEEE Computer Graphics and Applications"} X @String{j-IEEE-COMPUTER = "IEEE Computer"} X @String{j-IEEE-SOFTWARE = "IEEE Software"} X @String{j-INFO-TECH-LIB = "Information Technology and Libraries"} X @String{j-J-CHEM-INFO-COMP-SCI = "J. Chem. Inf. Comput. Sci"} X @String{j-J-INFO-PROC = "Journal of Information Processing"} X @String{j-J-INST-ELEC-TELECOMM-ENG = "J. Inst. Electron. Telecommun. Eng"} X @String{j-J-KOREA-INFO-SCI-SOCIETY = "Journal of the Korea Information Science X Society = Chongbo Kwahakhoe nonmunji"} X @String{j-J-SYS-SOFT = "The Journal of systems and software"} X @String{j-J-VIS-LANG-COMPUTING = "Journal of Visual Languages and Computing"} X @String{j-LAB-MICROCOMP = "Laboratory microcomputer"} X @String{j-LIB-HI-TECH = "Library Hi Tech"} X @String{j-MATHINTEL = "The Mathematical Intelligencer"} X @String{j-MDMV = "Mitteilungen der Deutschen X Mathematiker-Vereinigung"} X @String{j-MIKROCOMP-Z = "Mikrocomputer Zeitschrift"} X @String{j-MIKROLAN = "Mikrolan"} X @String{j-NAMS = "Notices of the American Mathematical X Society"} X @String{j-NTG = "Nederlandstalige {\TeX} Gebruikersgroep X (Dutch-speaking {\TeX} Users Group)"} X @String{j-ONLINE = "Online"} X @String{j-PCkurier = "PCkurier"} X @String{j-PCkurier:adr = "PCkurier, ul. St{\k{e}}pi{\'n}ska 22//23, X 00-739 Warszawa, Poland, mailbox 41 03 74 X (16.00-10.00)"} X @String{j-POSTSCRIPT-LANG-J = "The PostScript Language Journal"} X @String{j-PROGRAM = "Program"} X @String{j-RIV-INFO-MILANO = "Rivista di Informatica (Milano)"} X @String{j-SA = "Scientific American"} X @String{j-SCHOLAR = "Scholarly Publishing"} X @String{j-SEYBOLD = "The Seybold Report on Desktop Publishing"} X @String{j-SIGACT = "ACM SIGACT News"} X @String{j-SIGADA-LETTERS = "ACM SIGADA Ada Letters"} X @String{j-SIGAPL = "ACM SIGAPL APL Quote Quad"} X @String{j-SIGDOC = "ACM SIGDOC Asterisk*"} X @String{j-SIGPLAN = "ACM SIGPLAN Notices"} X @String{j-SIGSAM = "SIGSAM Bulletin"} X @String{j-SPE = "Soft{\-}ware\emdash Prac{\-}tice and X Experience"} X @String{j-STRUCTURED-PROGRAMMING = "Structured programming"} X @String{j-SUNEXPERT = "SunExpert Magazine"} X @String{j-SYS-CTL-INFO = "Systems, Control and Information"} X @String{j-TCS = "Theoretical Computer Science"} X @String{j-TEXHAX = "{\TeX{}hax}"} X @String{j-TEXLINE = "{\TeX{}}line"} X @String{j-TOG = "ACM Transactions on Graphics"} X @String{j-TOMS = "ACM Transactions on Mathematical Software"} X @String{j-TOPLAS = "ACM Transactions on Programming Languages X and Systems"} X @String{j-TSI = "Technology and Science of Informatics"} X @String{j-TUGboat = "{\TUB{}}"} X @String{j-TWIO = "TWIOscoop"} X @String{j-UMAP = "The UMAP Journal"} X @String{j-UMAP:adr = "COMAP, Inc., Suite 210, 57 Bedford St., X Lexington, MA 02173, USA"} X @String{j-UNIV-COMP = "University Computing"} X @String{j-VL = "Visible Language"} X @String{j-WM = "Wiadomo\'sci Matematyczne"} X %%====================================================================== %% Language abbreviations: X @String{lang-eng = "English"} X @String{lang-pl = "Polish"} X %%====================================================================== %% Organization abbreviations: X @String{org-NTG = "Nederlandstalige {\TeX} Gebruikersgroep X (Dutch-speaking {\TeX} Users Group)"} X @String{org-NTG:adr = "P.O. Box 394, 1740 AJ Schagen, The X Netherlands"} X %%====================================================================== %% Preparation details: X %%====================================================================== %% Proceedings: X @String{proc-NIPT91 = "IS\&T's Seventh International Congress on X Advances in Non-impact Printing X Technologies, October 6--11, Portland, OR, X USA."} X @String{proc-TEX85 = "Proceedings of the First European X Conference on {\TeX} for Scientific X Documentation, 16--17 May 1985, Como, Italy"} X %%====================================================================== %% Publisher abbreviations: X @String{pub-ACM = "ACM Press"} @String{pub-ACM:adr = "New York, NY, USA"} X @String{pub-ADOBE = "Adobe Systems Incorporated"} @String{pub-ADOBE:adr = "1585 Charleston Road, P.~O. Box 7900, X Mountain View, CA 94039-7900, USA, Tel: (415) 961-4400"} X @String{pub-ADTP = "Architecture Design and Technology Press, X Ltd."} @String{pub-ADTP:adr = "140 Kensington Church St., London W84 BN, X UK"} X @String{pub-AFIPS = "AFIPS Press"} @String{pub-AFIPS:adr = "Montvale, NJ, USA"} X @String{pub-AHV = "Dr. Alfred H{\"u}thing Verlag"} @String{pub-AHV:adr = "Heidelberg, Germany"} X @String{pub-AMS = "American Mathematical Society"} @String{pub-AMS:adr = "Providence, RI, USA"} X @String{pub-AP = "Academic Press"} @String{pub-AP:adr = "New York, NY, USA"} X @String{pub-APA = "American Psychological Association"} @String{pub-APA:adr = "Washington, DC, USA"} X @String{pub-ARIEL = "Ariel Sp. z o.o"} @String{pub-ARIEL:adr = "Krak{\'o}w, Poland"} X @String{pub-ASCII = "ASCII Corporation"} @String{pub-ASCII:adr = "Tokyo, Japan"} X @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} @String{pub-AW:adr = "Reading, MA, USA"} X @String{pub-AWE = "Ad{\-}di{\-}son-Wes{\-}ley Europe"} @String{pub-AWE:adr = "Amsterdam, The Netherlands"} X @String{pub-AW-FRANCE = "Ad{\-d}i{\-s}on-Wes{\-l}ey France"} @String{pub-AW-FRANCE:adr = "Paris, France"} X @String{pub-AWV = "Ad{\-}di{\-}son-Wes{\-}ley Verlag"} @String{pub-AWV:adr = "Bonn, Germany"} X @String{pub-BH = "Birkh{\"{a}}user"} @String{pub-BH:adr = "Basel, Switzerland"} X @String{pub-BIEL = "Biel"} @String{pub-BIEL:adr = "Savannah, Ga"} X @String{pub-BL = "The British Library"} @String{pub-BL:adr = "London, UK"} X @String{pub-BLUEPRINT = "Blueprint"} @String{pub-BLUEPRINT:adr = "London, UK"} X @String{pub-BOWK = "R. R. Bowker Company"} @String{pub-BOWK:adr = "1180 Avenue of the Americas, New York, NY X 10036, USA"} X @String{pub-BP = "Boole Press"} @String{pub-BP:adr = "Dublin, Ireland"} X @String{pub-BRINKMANN-BOSE = "Brinkmann \& Bose"} @String{pub-BRINKMANN-BOSE:adr = "Berlin, Germany"} X @String{pub-BROOKS-COLE = "Brooks\slash Cole Publishing Co."} @String{pub-BROOKS-COLE:adr = "Pacific Grove, CA, USA"} X @String{pub-CHARTWELL = "Chartwell Books, Inc."} @String{pub-CHARTWELL:adr = "110 Enterprise Avenue, Secaucus, New Jersey X 07094, USA"} X @String{pub-CIAOCO = "Editions Ciaoco"} @String{pub-CIAOCO:adr = "Artel, Bruxelles, Belgium"} X @String{pub-CRC = "CRC Publishers"} @String{pub-CRC:adr = "2000 Corporate Blvd., Boca Raton, FL 33431, X USA"} X @String{pub-CSP = "Computer Science Press"} @String{pub-CSP:adr = "11 Taft Court, Rockville, MD 20850, USA"} X @String{pub-CSTUG = "Czechoslovak{\TeX} Users Group"} @String{pub-CSTUG:adr = "CSTUG M{\'U} UK, Sokolovsk{\'a} 83, 186 00 X Praha 8, The Czech Republic"} X @String{pub-CUP = "Cambridge University Press"} @String{pub-CUP:adr = "New York"} X @String{pub-DP = "Digital Press"} @String{pub-DP:adr = "12 Crosby Drive, Bedford, MA 01730, USA"} X @String{pub-DPUNKT-VERLAG = "dpunkt Verlag"} @String{pub-DPUNKT-VERLAG:adr = "Ringstra{\ss}e 19, 69115 Heidelberg, X Germany"} X @String{pub-EEI = "Editorial Experts, Inc."} @String{pub-EEI:adr = "Alexandria, VA, USA"} X @String{pub-EH = "Ellis Horwood"} @String{pub-EH:adr = "Chichester, UK"} X @String{pub-ELS = "Elsevier Science Publishers B.V."} @String{pub-ELS:adr = "Amsterdam, The Netherlands"} X @String{pub-ENH = "Elsevier North-Holland, Inc."} @String{pub-ENH:adr = "New York, NY, USA"} X @String{pub-ETHIO = "EthiO Systems Co."} @String{pub-ETHIO:adr = "P.O. Box 36921, Houston, TX 77236, USA"} X @String{pub-EUH = "Editore Ulrico Hoepli"} @String{pub-EUH:adr = "Ulrico Hoepli Editore S.p.A., via Hoepli 5, X 20121 Milano, Italy"} X @String{pub-EUUG = "European UNIX Users Group"} @String{pub-EUUG:adr = "Buntingford, Herts, UK"} X @String{pub-EYROLLES = "Editions Eyrolles"} @String{pub-EYROLLES:adr = "Paris, France"} X @String{pub-FCGCC = "F{\'e}d{\'e}ration C. G. C. de la X Communication"} @String{pub-FCGCC:adr = ""} X @String{pub-GODINE = "David R. Godine, Publisher"} @String{pub-GODINE:adr = "Boston, MA, USA"} X @String{pub-GOLEM = "Golem Press"} @String{pub-GOLEM:adr = "Boulder, CO, USA"} X @String{pub-GP = "Graphics Press"} @String{pub-GP:adr = "Box 430, Cheshire, CT 06410, USA"} X @String{pub-HALSTED = "Halsted Press"} @String{pub-HALSTED:adr = "New York, USA"} X @String{pub-HAMISH = "Hamish Hamilton"} @String{pub-HAMISH:adr = "London"} X @String{pub-HANSER = "Carl Hanser"} @String{pub-HANSER:adr = "M{\"u}nchen, Germany"} X @String{pub-HARVARD-INFO-TECH = "Harvard Univ. Of. for Info. and Tech."} @String{pub-HARVARD-INFO-TECH:adr = "Cambridge, MA, USA"} X @String{pub-HHP = "Hastings House, Publishers"} @String{pub-HHP:adr = "New York, NY, USA"} X @String{pub-HLRA = "Harvard Law Review Association"} @String{pub-HLRA:adr = "Cambridge, MA, USA"} X @String{pub-HRP = "Harper \& Row, Publishers"} @String{pub-HRP:adr = "New York, NY, USA"} X @String{pub-HSCHV = "Universit{\"a}tsdruckerei und Verlag Hermann X Schmidt"} @String{pub-HSCHV:adr = "Mainz, Germany"} X @String{pub-IBM = "IBM Corporation"} @String{pub-IBM:adr = "San Jose, CA, USA"} X @String{pub-IE = "InterEditions"} @String{pub-IE:adr = "Paris, France"} X @String{pub-IEEE = "IEEE Computer Society Press"} @String{pub-IEEE:adr = "1109 Spring Street, Suite 300, Silver X Spring, MD 20910, USA"} X @String{pub-INRIA = "INRIA/IRISA"} @String{pub-INRIA:adr = "Rennes, France"} X @String{pub-IREE = "IREE"} @String{pub-IREE:adr = "Edgecliff, NSW, Australia"} X @String{pub-IRISA = "IRISA"} @String{pub-IRISA:adr = "Rennes, France"} X @String{pub-IST = "Imaging Science \& Technology"} @String{pub-IST:adr = "????"} X @String{pub-ITP = "International Thomson Publishing"} @String{pub-ITP:adr = "London, New York, Boston, Madrid, X \\ldots{}"} X @String{pub-ITPG = "International Thomson Publishing GmbH"} @String{pub-ITPG:adr = "K{\"o}nigswintere Str. 418, 53227 Bonn, X Germany"} X @String{pub-KLUWER = "Kluwer Academic Publishers Group"} @String{pub-KLUWER:adr = "Norwell, MA, USA"} X @String{pub-KOMPUT = "a/S ``KompuT'' kirjastus"} @String{pub-KOMPUT:adr = "Tartumaa, Estonia"} X @String{pub-KOSMOINFORM = "Kosmosinform"} @String{pub-KOSMOINFORM:adr = "Moscow, Russia"} X @String{pub-LEARNED-INF = "Learned Information"} @String{pub-LEARNED-INF:adr = "Medford, NJ, USA"} X @String{pub-LUND-HUMPHRIES = "Lund Humphries"} @String{pub-LUND-HUMPHRIES:adr = "London, UK"} X @String{pub-MARSZALEK = "Adam Marsza{\l}ek"} @String{pub-MARSZALEK:adr = "Toru{\'n}, Poland"} X @String{pub-MASARYKOVA = "Masarykova Universita"} @String{pub-MASARYKOVA:adr = "Brno, Czechoslovakia"} X @String{pub-MASSON = "Masson Editeur"} X @String{pub-MASSON-SA = "Masson, S.A."} @String{pub-MASSON-SA:adr = "Barcelona, Spain"} @String{pub-MASSON:adr = "Paris, France"} X @String{pub-MATH-ASSOC-AMER = "Mathematical Association of America"} @String{pub-MATH-ASSOC-AMER:adr = "Washington, DC, USA"} X @String{pub-MH = "McGraw-Hill"} @String{pub-MH:adr = "New York, NY, USA"} X @String{pub-MIR = "Mir Publishers"} @String{pub-MIR:adr = "Moscow, Russia"} X @String{pub-MIT = "MIT Press"} @String{pub-MIT:adr = "Cambridge, MA, USA"} X @String{pub-MLAA = "Modern Language Association of America"} @String{pub-MLAA:adr = "New York, NY, USA"} X @String{pub-NAB = "New Amsterdam Books"} @String{pub-NAB:adr = "New York, NY, USA"} X @String{pub-NBS = "U.S. National Bureau of Standards"} @String{pub-NBS:adr = "Gaithersburg, MD, USA"} X @String{pub-NH = "North-Holland Publishing Company"} @String{pub-NH:adr = "Amsterdam, The Netherlands"} X @String{pub-NIGGLI = "Niggli/Hatje"} @String{pub-NIGGLI:adr = "Heiden, Stuttgart, Germany"} X @String{pub-NORTON = "W. W. Norton \& Co."} @String{pub-NORTON:adr = "New York, NY, USA"} X @String{pub-OHIO = "Ohio University Press"} @String{pub-OHIO:adr = "Athens, OH, USA"} X @String{pub-OLDENBOURG = "R. Oldenbourg Verlag"} @String{pub-OLDENBOURG:adr = "Munich, Germany and Vienna, Austria"} X @String{pub-ORA = "O'Reilly \&{Associates, Inc.}"} @String{pub-ORA:adr = "981 Chestnut Street, Newton, MA 02164, USA"} X @String{pub-OUP = "Oxford University Press"} @String{pub-OUP:adr = "Walton Street, Oxford OX2 6DP, UK"} X @String{pub-PEACHPIT = "Peachpit Press, Inc."} @String{pub-PEACHPIT:adr = "1085 Keith Avenue, Berkeley, CA 94708, USA"} X @String{pub-PFLAUM = "Pflaum"} @String{pub-PFLAUM:adr = "M{\"u}nchen, Germany"} X @String{pub-PH = "Pren{\-}tice-Hall"} @String{pub-PH:adr = "Englewood Cliffs, NJ 07632, USA"} X @String{pub-PHISMATHLIT = "Phismathlit"} @String{pub-PHISMATHLIT:adr = "Moscow, Russia"} X @String{pub-PITAGORA = "Pitagora Editrice"} @String{pub-PITAGORA:adr = "Via del legatore, 3, Bologna, Italy"} X @String{pub-POLYGRAPH = "Polygraph Verlag"} @String{pub-POLYGRAPH:adr = "Frankfurt am Main, Germany"} X @String{pub-PRIME-TIME-FREEWARE = "Prime Time Freeware"} @String{pub-PRIME-TIME-FREEWARE:adr = "370 Altair Way, Suite 150, Sunnyvale, X CA, USA"} X @String{pub-PROTVINO = "Protvino"} @String{pub-PROTVINO:adr = "Moscow, Russia"} X @String{pub-PTI = "Personal{\TeX} Inc."} @String{pub-PTI:adr = "12 Madrona Street, Mill Valley, CA 94941, X USA"} X @String{pub-PTRPH = "P T R Pren{\-}tice-Hall"} @String{pub-PTRPH:adr = "Englewood Cliffs, NJ 07632, USA"} X @String{pub-PUP = "Princeton University Press"} @String{pub-PUP:adr = "Princeton, NJ, USA"} X @String{pub-RISO = "Ris{\o} National Laboratory"} @String{pub-RISO:adr = "Roskilde, Denmark"} X @String{pub-RRB = "R. R. Bowker Company"} @String{pub-RRB:adr = "New York, NY, USA"} X @String{pub-SERIF = "Serif Publishing"} @String{pub-SERIF:adr = "A subsidiary of Xerox Corporation, 701 X South Aviation Boulevard, El Segundo, CA X 90245, USA"} X @String{pub-SF = "Scott, Foresman and Company"} @String{pub-SF:adr = "Glenview, IL, USA"} X @String{pub-SIAM = "Society for Industrial and Applied X Mathematics"} @String{pub-SIAM:adr = "Philadelphia, PA, USA"} X @String{pub-SILICON = "Silicon Press"} @String{pub-SILICON:adr = "25 Beverly Road, Summit, NJ 07901, USA"} X @String{pub-SOC-SCHOL-PUB = "Society for Scholarly Publishing"} @String{pub-SOC-SCHOL-PUB:adr = "Washington, DC, USA"} X @String{pub-SP = "Shapolsky Publishers"} @String{pub-SP:adr = "New York, NY, USA"} X @String{pub-STA = "Society of Typographic Arts"} @String{pub-STA:adr = "Chicago, IL, USA"} X @String{pub-STEINER = "Steiner"} @String{pub-STEINER:adr = "Stuttgart, Germany"} X @String{pub-SUCSLI = "Stanford University Center for the Study of X Language and Information"} @String{pub-SUCSLI:adr = "Stanford, CA, USA"} X @String{pub-SV = "Spring{\-}er-Ver{\-}lag"} @String{pub-SV:adr = "Berlin, Germany~/ Heidelberg, Germany~/ X London, UK~/ etc."} X @String{pub-SYBEX = "Sybex"} @String{pub-SYBEX:adr = "2021 Challenger Driver, Suite 100, Alameda, X CA 94501, USA"} X @String{pub-TEXPLORATORS = "The {\TeX}plorators Corporation"} @String{pub-TEXPLORATORS:adr = "3701 W. Alabama, Suite 450-273, Houston, TX X 77027, USA"} X @String{pub-TH = "Thames and Hudson"} @String{pub-TH:adr = "London, UK"} X @String{pub-TUB = "Technische Universit{\"a}t Berlin, Institut X f{\"u}r Humanwissenschaft in Arbeit und X Ausbildung"} @String{pub-TUB:adr = "10623 Berlin, Germany"} X @String{pub-U-CAL-PRESS = "University of California Press"} @String{pub-U-CAL-PRESS:adr = "Berkeley, CA, USA"} X @String{pub-U-CHICAGO-PRESS = "University of Chicago Press"} @String{pub-U-CHICAGO-PRESS:adr = "Chicago, IL, USA"} X @String{pub-UNIC = "UNI{$\bullet$}C"} @String{pub-UNIC:adr = "Danmarks EDB-Center for Forskning og X Uddannelse, Copenhagen, Denmark"} X @String{pub-URW = "URW (Unternehmensberatung Rubow Weber) X Verlag"} @String{pub-URW:adr = "Hamburg, Germany"} X @String{pub-UTP = "University of Toronto Press"} @String{pub-UTP:adr = "Toronto, Ontario, Canada"} X @String{pub-VIEWEG = "Friedrich Vieweg und Sohn"} @String{pub-VIEWEG:adr = "Braunschweig, Germany"} X @String{pub-VNR = "Van Nostrand Reinhold"} @String{pub-VNR:adr = "New York, NY, USA"} X @String{pub-VOGEL = "Vogel Verlag"} @String{pub-VOGEL:adr = "Postfach 67 40, D-8700 W{\"u}rzburg, X Germany"} X @String{pub-W = "Wiley"} @String{pub-W:adr = "Chichester, UK"} X @String{pub-WCB = "William C. Brown Company Publishers"} @String{pub-WCB:adr = "Dubuque, IA, USA"} X @String{pub-WGP = "Wat{\-}son-Gup{\-}till Publications"} @String{pub-WGP:adr = "1515 Broadway, New York, NY 10036, USA"} X @String{pub-WILEY = "John Wiley and Sons, Inc."} @String{pub-WILEY:adr = "New York, NY, USA"} X @String{pub-WORLD-SCI = "World Scientific"} @String{pub-WORLD-SCI:adr = "Singapore"} X @String{pub-WPC = "Wadsworth Publishing Company"} @String{pub-WPC:adr = "Belmont, CA, USA"} X @String{pub-WWS = "The Wynkyn de Worde Society and Bund X Deutscher Buchk{\"u}nstler"} @String{pub-WWS:adr = "London, UK and Offenbach, Germany"} X @String{pub-YUP = "Yale University Press"} @String{pub-YUP:adr = "New Haven, CT, USA"} X %%====================================================================== %% Bibliography entries: X @Book{Abdelhamid:1992:VLB, X author = "Rames Abdelhamid", X title = "{Das Vieweg {\LaTeX}-Buch: Eine praxisorientierte X Einf{\"u}hrung}", X publisher = pub-VIEWEG, X address = pub-VIEWEG:adr, X pages = "xiii + 169", X year = "1992", X ISBN = "3-528-05145-0", X bibdate = "Sat Mar 07 08:50:13 1998", X acknowledgement = ack-nhfb, } X @Book{Abdelhamid:1993:VLB, X author = "Rames Abdelhamid", X title = "{Das Vieweg {\LaTeX}-Buch: Eine praxisorientierte X Einf{\"u}hrung}", X publisher = pub-VIEWEG, X address = pub-VIEWEG:adr, X edition = "Second", X pages = "xvi + 169", X year = "1993", X ISBN = "3-528-15145-5", X bibdate = "Wed Mar 2 08:33:46 1994", X acknowledgement = ack-rz, } X @Book{Abdelhamid:1996:VLB, X author = "Rames Abdelhamid", X title = "{Das Vieweg {\LaTeX}-Buch: Eine praxisorientierte X Einf{\"u}hrung}", X publisher = pub-VIEWEG, X address = pub-VIEWEG:adr, X edition = "Third", X pages = "xviii + 226", X year = "1996", X ISBN = "3-528-15145-5", X bibdate = "Sat Mar 07 08:51:07 1998", X note = "The ISBN did not change between second and third X editions.", X price = "44,00 DM", X acknowledgement = ack-nhfb, } X @Article{Abikoff:1986:T, X author = "William Abikoff", X title = "{\TeX}", X journal = j-MATHINTEL, X volume = "8", X number = "3", X pages = "64--76", X year = "1986", X bibdate = "Fri Mar 12 09:43:47 1993", X acknowledgement = ack-ps, } X @Article{Abikoff:1988:TEA, X author = "William Abikoff", X title = "{\TeX}: The Ease and Art of Text Processing", X journal = j-ABACUS, X volume = "5", X number = "4", X pages = "10--29", X month = "summer", X year = "1988", X CODEN = "ABACE", X ISSN = "0724-6722", X bibdate = "Thu Sep 01 00:29:22 1994", X abstract = "Discusses the various facets of text-processing X systems. The common thread is a discussion of the TEX X system of text-processing and typesetting developed by X Donald Knuth. The paper also discusses its accompanying X program, METAFONT which creates characters to be X printed. (0 Refs.)", X acknowledgement = ack-nhfb, X classification = "C6130D (Document processing techniques)", X keywords = "Character creation; TeX; Text-processing systems; TEX X system; Typesetting; METAFONT", X thesaurus = "Word processing", } X @Book{Abrahams:1990:TI, X author = "Paul W. Abrahams and Karl Berry and Kathryn A. X Hargreaves", X title = "{\TeX} for the Impatient", X publisher = pub-AW, X address = pub-AW:adr, X pages = "xvii + 357", X year = "1990", X ISBN = "0-201-51375-7", X LCCN = "Z253.4.T47 A27 1990", X bibdate = "Tue Jul 26 08:43:39 1994", } X @Book{Abrahams:1991:TI, X author = "Paul W. Abrahams and Karl Berry and Kathryn A. X Hargreaves", X title = "{\TeX} per l'impaziente", X publisher = pub-AW, X address = pub-AW:adr, X pages = "396", X year = "1991", X ISBN = "88-7192-022-8", X bibdate = "Tue Jul 26 08:43:41 1994", X note = "This is an translation to Italian of X \cite{Abrahams:1990:TI}, with additional material on X Italian hyphenation.", X acknowledgement = ack-cb, X bookreview = "TUGboat 14, number 4, December 1993, 421--422", X translator = "Gaia Franchi and Guido Franchi", } X @InProceedings{Adams:1991:EFQ, X author = "Debra A. Adams", X title = "Evaluating font quality: {A} method of predicting X character image defects", X crossref = "Pietrowski:1991:ISI", X pages = "353--364", X bibdate = "Tue Mar 1 11:52:23 1994", X acknowledgement = ack-kb, } X @Book{Adobe:1985:PLR, X author = "{Adobe Systems Incorporated}", X title = "{\POSTSCRIPT} Language Reference Manual", X publisher = pub-AW, X address = pub-AW:adr, X pages = "ix + 321", X year = "{\noopsort{1985a}}1985", X ISBN = "0-201-10174-2", X LCCN = "QA76.73.P67 A33 1985", X bibdate = "Tue Dec 14 23:18:17 1993", } X @Book{Adobe:1985:PLT, X author = "{Adobe Systems Incorporated}", X title = "{\POSTSCRIPT} Language Tutorial and Cookbook", X publisher = pub-AW, X address = pub-AW:adr, X pages = "x + 243", X year = "{\noopsort{1985b}}1985", X ISBN = "0-201-10179-3", X LCCN = "QA76.73.P67 A34 1985", X bibdate = "Tue Dec 14 23:18:32 1993", } X @Manual{Adobe:1988:DPS, X title = "The Display {\POSTSCRIPT} System Reference", X organization = pub-ADOBE, X address = pub-ADOBE:adr, X month = oct # " 10", X year = "1988", X bibdate = "Sat Feb 10 14:47:06 1996", } X @Manual{Adobe:1990:ATF, X title = "Adobe Type 1 Font Format", X organization = pub-ADOBE, X address = pub-ADOBE:adr, X month = mar, X year = "1990", X bibdate = "Sat Feb 10 14:47:04 1996", X partnumber = "LPS0064", } X @Misc{Adobe:19xx:CAS, X author = "{Adobe Systems Incorporated}", X title = "{Colophon}\emdash {Adobe Systems News} {Publication}", X year = "198?", } X @InProceedings{Agostini:1985:IUF, X author = "M. Agostini and V. Matano and M. Schaerf and M. X Vascotto", X title = "An {Interactive User-Friendly \TeX} in {VM\slash CMS X Environment}", X crossref = "Lucarella:1985:PFE", X pages = "117--132", X year = "1985", X bibdate = "Sat Feb 10 08:47:13 1996", X acknowledgement = ack-hk, } X @Article{Aiello:1983:SPD, X author = "L. Aiello and S. Pavan", X title = "A system for the production of documents based on X {\TeX} (in Italian)", X journal = j-RIV-INFO-MILANO, X volume = "13", X number = "3", X pages = "261--270", X month = jul, X year = "1983", X bibdate = "Thu Jul 21 19:48:28 1994", } X @Book{Alamnehe:1993:EDP, X author = "Abass Alamnehe", X title = "{e\LaTeX}: Document Preparation Guide", X publisher = pub-ETHIO, X address = pub-ETHIO:adr, X pages = "xvi + 230", X year = "1993", X bibdate = "Fri Apr 1 09:00:27 1994", X note = "This book is typeset in {e\LaTeX}, an Ethiopic-based X version of {\LaTeX}, and is entirely in the Amharic X language, including many of the control sequences.", X acknowledgement = ack-aa, } X @Article{Alexander:1992:TTP, X author = "George Alexander", X title = "{\TeX} and {\TeX}tures: Page Composition in a X Completely Different Vein", X journal = j-SEYBOLD, X volume = "7", X number = "1", X pages = "3--7", X month = sep # " 4", X year = "1992", X CODEN = "SRDFE", X ISSN = "0889-9762", X bibdate = "Thu Sep 01 01:17:35 1994", X abstract = "{\TeX} is a typesetting system that is used for X publishing scholarly material, especially works X containing heavy mathematics. It is popular at X universities and research facilities around the world, X but it is hardly known outside academic circles. Since X {\TeX} is available on desktop platforms (as well as on X mainframes and minicomputers), it is competitive to X some extent with desktop publishing software. There are X still many applications where {\TeX} produces results X that are better than those of standard desktop X packages. There are a few things {\TeX} can do that X couldn't be practically done with desktop software. X There is a new {\TeX} implementation, {\TeX}tures, X which moves {\TeX} a little closer to the desktop X mainstream. It holds out the hope that {\TeX} may yet X have the potential to become as easy to use as other X desktop packages. The author discusses the innovations X built in to {\TeX}, its strengths and weaknesses, and X its uses. (0 Refs.)", X acknowledgement = ack-nhfb, X classification = "D2105 (Media-TV, radio, press)", X keywords = "Typesetting system; TeX; Textures; Page composition; X Desktop publishing software", X thesaurus = "Computer controlled typesetting; Electronic X publishing", } X @Article{Allen:1982:CCD, X author = "F. H. Allen and O. Kennard and D. G. Watson and K. M. X Crennell", X title = "Cambridge Crystallographic Data Centre. 6. Preparation X and computer typesetting of ``molecular structures and X dimensions'' bibliographic volumes", X journal = j-J-CHEM-INFO-COMP-SCI, X volume = "22", X number = "3", X pages = "129--138", X month = aug, X year = "1982", X bibdate = "Mon Jul 25 08:37:04 MDT 1994", X acknowledgement = ack-nhfb, X keywords = "documentation", X subject = "H.3.1 Information Systems, INFORMATION STORAGE AND X RETRIEVAL, Content Analysis and Indexing, Dictionaries X \\ H.3.4 Information Systems, INFORMATION STORAGE AND X RETRIEVAL, Systems and Software, Information networks X \\ J.2 Computer Applications, PHYSICAL SCIENCES AND X ENGINEERING, Chemistry", } X @Article{Allport:1992:OND, X author = "G. Allport and P. Jarratt", X title = "The old and the new in document processing", X journal = j-ELECTRONIC-LIBRARY, X volume = "10", X number = "1", X pages = "41--45", X month = feb, X year = "1992", X CODEN = "ELLID", X ISSN = "0264-0473", X bibdate = "Thu Sep 01 01:19:02 1994", X abstract = "{\TeX} is a well-known system for the production of X quality documents, offering the user a high degree of X sophistication in the specification of the final X format. It has companion packages (most notably X {\LaTeX}) which allow other document processing X activities, including the production of new fonts, X pictures and extended production systems. The project X discussed was aimed at rescuing the full power of X {\TeX} packages in the newly emerging X-Windows X technological context. The authors describe software X which was produced to take full advantage of the X facilities of both systems by translating {\TeX} output X into bit-mapped images which can then be displayed on X an X-terminal and mixed with such facilities as the X extra fonts available and bit-maps produced in the X X-environment. An interactive environment is defined X that gives the user flexibility in the creation of a X document of high quality with a friendly human-computer X interface, which allows the windowing environment to X give a new look to an old and well-tried system. (4 X Refs.)", X acknowledgement = ack-nhfb, X affiliation = "Sch. of Comput. Sci., Birmingham Univ., UK", X classification = "C6130D (Document processing techniques); C6180G X (Graphical user interfaces); C7106 (Word processing)", X keywords = "TeX; LaTeX; Document processing; Fonts; X-Windows; X Bit-mapped images; X-terminal; Interactive environment; X Human-computer interface", X thesaurus = "Character sets; Graphical user interfaces; Interactive X systems; Word processing", } X @Article{Alt:1973:CPT, X author = "F. L. Alt and J. Kirk", X title = "Computer Photocomposition of Technical Text", X journal = j-CACM, X volume = "16", X number = "6", X pages = "??--??", X month = jun, X year = "1973", X CODEN = "CACMA2", X ISSN = "0001-0782", X bibdate = "Tue May 28 11:53:03 1996", X abstract = "In computer assisted typesetting by means of X photocomposition, special problems arise in highly X technical material such as mathematical formulas. New X solutions to several of these problems have been X devised in the information system of the American X Institute of Physics. They include: the representation X of special characters (foreign alphabets, mathematical X symbols, etc.) not available on input keyboards or on X the photocomposer; the generation of such symbols, e.g. X by overprinting; the precise positioning of accent X marks (floating diacritics); line breaks, i.e. words or X formulas placed partly at the end of one line and X partly at the beginning of the next; and certain X aspects of error correction.", X keywords = "photocomposition, typesetting, printing, graphics, X text processing", } X @Article{Andre:1983:ABT, X author = "Jacques Andr\'e", X title = "Analytical bibliography on text manipulation", X journal = j-TSI, X volume = "1", X number = "5", X year = "1983", X acknowledgement = ack-hk, } X @InProceedings{Andre:1985:ETM, X author = "Jacques Andr\'e and Richard Southall", X title = "Experiments in teaching {\METAFONT}", X crossref = "Lucarella:1985:PFE", X pages = "141--153", X year = "1985", X bibdate = "Tue Jul 26 09:29:08 1994", X acknowledgement = ack-hk, } X @InProceedings{Andre:1985:TIM, X author = "Jacques Andr\'e and Yann Grundt and Vincent Quint", X title = "Towards an Interactive Math Mode in {\TeX}", X crossref = "Lucarella:1985:PFE", X pages = "79--92", X year = "1985", X bibdate = "Tue Jul 26 09:29:02 1994", } X @Book{Andre:1992:ETN, X author = "Jacques Andr\'e", X title = "Enseigner la typographie num\'erique ({\em English\/}: X Teaching digital typography)", X volume = "1618", X publisher = "Institut National de Recherche en Informatique et en X Automatique", X address = "Le Chesnay, France", X pages = "23", X year = "1992", X bibdate = "Sat Feb 10 14:47:51 1996", X bibsource = "OCLC FirstSearch", X series = "Rapports de recherche", X abstract = "Didot is a project of tuition of digital typography. X In this paper, the domain of digital typography is made X explicit, a curriculum for computer scientists, based X on previous curriculum for computer scientists, based X on previous experiences, is proposed, and a basic X bibliography is given.", X acknowledgement = ack-nhfb, X xxISBN = "(none??)", } X @Book{Anonymous:1982:CMS, X author = "Anonymous", X key = "Chicago", X title = "The Chicago Manual of Style", X publisher = pub-U-CHICAGO-PRESS, X address = pub-U-CHICAGO-PRESS:adr, X edition = "13th", X pages = "ix + 737", X year = "1982", X ISBN = "0-226-10390-0", X LCCN = "Z253 .U69 1982", X bibdate = "Fri Jul 22 08:53:35 1994", X price = "UK\pounds30", X abstract = "For over seventy-five years the University of Chicago X Press `Manual of Style' has been the standard reference X tool for authors, editors, copywriters, and X proofreaders. Updated many times since 1906, it now X goes into its thirteenth edition---the first to X introduce a change in title. Bowing to what has become X nearly universal usage, we now call the `Manual' what X everybody else calls it, `The Chicago Manual of X Style'---or, for short, `The Chicago Manual'.\par Two X pervasive features characterize the present edition: it X reflects the impact of the new technology on the entire X editing and publishing process, and it spells out, in X greater detail and with many more examples, the X procedures with which it deals. It is, in short, much X more a ``how-to'' book for authors and editors than was X its predecessor. In chapter 2, on manuscript X preparation and copyediting, for example, new sections X have been added on how to mark a manuscript and how to X mark type specifications on a script. Chapter 12 X (``Tables''), completely rewritten, begins with advice X on how to make a table from raw data. Chapters 15 X through 17, on documentation, have been reorganized and X greatly expanded, offering many more alternative X methods of citation and a wealth of examples. In X chapter 18 (``Indexes''), clear step-by-step procedures X for the mechanics of index making are set forth. The X terminology and methodology of technological advances X (in word processing, computerized electronic X typesetting, and the like) are reflected most X prominently in chapter 20, ``Composition, Printing, and X Binding'' (new to this edition), and in the Glossary. X Other notable features of the present edition are X chapter 4 (``Rights and Permissions''), rewritten in X light of the new copyright law, and chapter 9 X (``Foreign Languages''), which includes a new table of X dicritics, a pinyin (Chinese) conversion chart and data X on several more languages.\par Throughout, `The Chicago X Manual' aims to give clear and straightforward X guidelines for preparing and editing copy---with the X emphasis on the sensible, the practical, and the X economical. As did its predecessors, the thirteenth X edition of the `Manual' states the style preferences of X the University of Chicago Press and reflects the X current practices and requirements of the great X majority of American publishers.", X acknowledgement = ack-fm # " and " # ack-jpl, X annote = "The standard American work on typesetting style etc. X (CHe)", X bibliography = "yes", X glossary = "yes", X history = "First edition, 1906, 12th edition 1969", X index = "yes", X inprint = "yes", X keywords = "printing, practical style manuals, authorship X handbooks, authorship manuals", X printermarks = "yes", X subtitle = "Rules for Authors, Printers and Publishers", } X @Book{Anonymous:1984:PMA, X author = "Anonymous", X key = "APA", X title = "Publication Manual of the American Psychological X Association", X publisher = pub-APA, X address = pub-APA:adr, X edition = "third", X pages = "208", X year = "1984", X ISBN = "0-912704-57-8", X LCCN = "BF76.7 .P83 1983", X bibdate = "Tue Mar 1 11:52:52 1994", X acknowledgement = ack-fm, X annote = "The book contains style guidelines known as the APA X style. This ranges from spelling conventions to table X formatting. The guidelines assume that papers are X produced using a typewriter. The book itself shows a X very unpleasant design making reading are hard task.", X bibliography = "yes", X index = "yes", X keywords = "document preparation guidelines, style guidelines, X communications in psychology, psychology authorship, X American Psychological Association, publication manual, X writing", } X @Book{Anonymous:1987:CGP, X author = "Anonymous", X title = "Chicago Guide to Preparing Electronic Manuscripts (For X Authors and Publishers)", X publisher = pub-U-CHICAGO-PRESS, X address = pub-U-CHICAGO-PRESS:adr, X pages = "xi + 143", X year = "1987", X ISBN = "0-226-10392-7 (hardcover), 0-226-10393-5 (paperback)", X LCCN = "Z286.E43 U54 1987", X bibdate = "Fri Jul 22 11:10:32 1994", X note = "Short bibliography, examples, appendices, index", X acknowledgement = ack-jpl, X annote = "Describes techniques for electronic submission of X manuscripts, rather than camera-ready copy. Discusses X publication process from acquisition through X typesetting, from perspective of author and X publisher.", } X @TechReport{Anonymous:1988:CDG, X author = "Anonymous", X key = "IBM", X title = "Composing Documents with the Generalized Markup X Language", X number = "S544-3421", X institution = pub-IBM, X address = pub-IBM:adr, X edition = "Second", X month = mar, X year = "1988", X bibdate = "Mon Jul 25 11:12:22 1994", X acknowledgement = ack-fm, X keywords = "GML, document preparation systems, DTD, SCRIPT X (Computer Program), DCF (Computer Program)", } X @Manual{Anonymous:1989:CT, X title = "Code Typographique\emdash Choix de r{\`e}gles {\`a} X l'usage des auteurs et professionels du livre", X organization = pub-FCGCC, X address = pub-FCGCC:adr, X edition = "Seizi{\`e}me", X year = "1989", X bibdate = "Tue Mar 1 11:59:23 1994", X note = "This book is a compendium of rules for French X typography, and for the typesetting of several foreign X languages in French texts. It includes tables of X diacritics for most European languages, and hyphenation X rules for English, German, Greek, Italian, Latin, X Portuguese, and Spanish.", } X @Book{Anonymous:1990:JTB, X author = "Anonymous", X key = "JAPANESETEXNICOLOR", X title = "The Japanese {\TeX}{\-}ni{\-}color Book", X publisher = pub-ASCII, X address = pub-ASCII:adr, X year = "1990", X ISBN = "4-7561-0405-3", X note = "Japanese; contents include chapters on the history of X {\TeX} and of the Japanese {\TeX} extension, file X formats (fonts and {{\tt.dvi}}), and device drivers.", } X @Article{Anonymous:1990:NTF, X author = "Anonymous", X key = "NEWTEXFEATURES", X title = "New {\TeX} Features from {AMS}", X journal = j-NAMS, X volume = "37", X number = "2", X pages = "143--144", X month = feb, X year = "1990", X ISSN = "0002-9920", } X @Book{Anonymous:1991:B, X author = "Anonymous", X key = "Harvard Law Review Association", X title = "The Bluebook", X publisher = pub-HLRA, X address = pub-HLRA:adr, X edition = "15th", X pages = "xvii + 343", X year = "1991", X LCCN = "KF245 .U5 1991", X bibdate = "Fri Jul 22 12:36:10 1994", X acknowledgement = ack-fm, X history = "Compiled by the editors of the Columbia Law Review, X the Harward Law Review, the University of Pennsylvania X Law Review, and the Yale Law Journal", X index = "yes", X inprint = "yes", X keywords = "bibliographies, citation schemes, law", X subtitle = "A Uniform System of Citation", } X @Book{Anonymous:1993:CMS, X author = "Anonymous", X key = "Chicago", X title = "The Chicago Manual of Style", X publisher = pub-U-CHICAGO-PRESS, X address = pub-U-CHICAGO-PRESS:adr, X edition = "14th", X pages = "ix + 921", X year = "1993", X ISBN = "0-226-10389-7", X LCCN = "Z253 .U69 1993", X bibdate = "Mon Sep 23 08:57:34 1996", X price = "US\$40.00", X acknowledgement = ack-nhfb, X annote = "The standard American work on typesetting style etc. X (CHe)", X bibliography = "yes", X glossary = "yes", X history = "First edition, 1906, 12th edition 1969, 13th edition X 1982, 14th edition 1993", X index = "yes", X inprint = "yes", X keywords = "printing, practical style manuals, authorship X handbooks, authorship manuals", X printermarks = "yes", X subtitle = "Rules for Authors, Printers and Publishers", } X @Book{Anonymous:1997:SW, X author = "Anonymous", X title = "{Scientific WorkPlace 2.5}", X publisher = pub-ITPG, X address = pub-ITPG:adr, X pages = "????", X year = "1997", X ISBN = "3-87439-375-5", X LCCN = "????", X bibdate = "Mon Mar 02 09:06:24 1998", X note = "Includes CD-ROM.", X price = "DM 199,00", X URL = "http://www.itp.de/student/index.html", X acknowledgement = ack-nhfb, } X @Article{Antweiler:1989:TRI, X author = "Werner Antweiler and Andreas Strotmann and Volker X Winkelmann", X title = "A {\TeX}-{REDUCE} Interface", X journal = j-SIGSAM, X volume = "23", X number = "2", X pages = "26--33", X month = apr, X year = "1989", X CODEN = "SIGSBZ", X ISSN = "0163-5824", X bibdate = "Thu Mar 20 16:02:15 MST 1997", X acknowledgement = ack-nhfb, X classcodes = "C7310 (Mathematics); C6130 (Data handling techniques); X C7230 (Publishing and reproduction); C6140D (High level X languages); C6110 (Systems analysis and programming)", X corpsource = "Cologne Univ., Comput. Center, West Germany", X keywords = "algebra; algebraic; algorithms; capabilities; computer X controlled typesetting; design; E/X-REDUCE-interface; X high level; high quality output; indentation; X languages; line breaking; manipulation; mathematics X computing; performance; programming; readability; X REDUCE formulas; REDUCE-Lisp; symbol; T/sub; T/sub E/X; X T/sub E/X output; typesetting language; verification; X well known computer algebra system", X subject = "I.3.1 Computing Methodologies, COMPUTER GRAPHICS, X Hardware architecture, Raster display devices \\ I.7.1 X Computing Methodologies, TEXT PROCESSING, Text Editing, X TeX", X treatment = "P Practical", } X @InProceedings{Appelt:1985:HNE, X author = "Wolfgang Appelt", X title = "The Hyphenation of Non-{English} Words with {\TeX}", X crossref = "Lucarella:1985:PFE", X pages = "61--65", X year = "1985", X bibdate = "Tue Jul 26 09:28:56 1994", X acknowledgement = ack-hk, } X @Book{Appelt:1988:TF, X author = "Wolfgang Appelt", X title = "{\TeX} f{\"u}r Fortgeschrittene", X publisher = pub-AW, X address = pub-AW:adr, X pages = "x + 179", X year = "1988", X ISBN = "3-89319-115-1", X bibdate = "Wed Dec 15 08:47:26 1993", } X @TechReport{Appelt:1990:TIG, X author = "Wolfgang Appelt", X title = "{Die {\TeX}-Installation in der GMD}", X type = "Arbeitspapiere der GMD", X institution = "Ges. f. Mathematik u. Datenverarbeitung", X address = "St. Augustin, Germany", X year = "1990", X bibdate = "Sat Mar 07 08:58:17 1998", X acknowledgement = ack-nhfb, } X @Book{Appelt:1994:TF, X author = "Wolfgang Appelt", X title = "{\TeX} f{\"u}r Fortgeschrittene", X publisher = pub-AW, X address = pub-AW:adr, X edition = "Second", X pages = "xii + 183", X year = "1994", X ISBN = "3-89319-695-1", X bibdate = "Tue Mar 1 14:25:32 MET 1994", X acknowledgement = ack-rz, } X @Book{Arnold:1972:IPH, X author = "Edmund C. Arnold", X title = "Ink on Paper 2: a Handbook of the Graphic Arts", X publisher = pub-HRP, X address = pub-HRP:adr, X pages = "374", X year = "1972", X ISBN = "0-06-010131-8", X LCCN = "Z244 .A83 1972", X bibdate = "Tue Mar 1 12:44:08 1994", X note = "Chapter bibliographies, sidebars, glossary, index, pp. X 375.", X acknowledgement = ack-jpl, X annote = "Summarizes evolution of printing technoology, with X focus on current status.", } X @Article{Arrabito:1988:CBT, X author = "R. Arrabito and H. J{\"{u}}rgensen", X title = "Computerized {Braille} Typesetting: Another View of X Mark-up Standards", X journal = j-EPODD, X volume = "1", X number = "2", X pages = "117--131", X month = sep, X year = "1988", X CODEN = "EPODE", X ISSN = "0894-3982", X bibdate = "Mon Jul 25 08:37:04 MDT 1994", X acknowledgement = ack-nhfb, X keywords = "standardization; human factors", X subject = "I.7.0 Computing Methodologies, TEXT PROCESSING, X General \\ B.4.2 Hardware, INPUT/OUTPUT AND DATA X COMMUNICATIONS, Input/Output Devices, Data terminals X and printers", } X @Book{Baecker:1989:HFT, X author = "Ronald M. Baecker and Aaron Marcus", X title = "Human Factors and Typography for More Readable X Programs", X publisher = pub-AW, X address = pub-AW:adr, X pages = "xx + 348", X year = "1989", X ISBN = "0-201-10745-7", X LCCN = "QA76.75 .B34 1990", X bibdate = "Tue Dec 14 22:56:18 1993", X acknowledgement = ack-fm, X bibliography = "yes", X index = "yes", X keywords = "visual programming, computer graphics, human-computer X interaction", } X @Book{Bailey:1970:ASB, X author = "Herbert S. {Bailey, Jr.}", X title = "The Art and Science of Book Publishing", X publisher = pub-HRP, X address = pub-HRP:adr, X pages = "xii + 216", X year = "1970", X LCCN = "Z278 .B15", X note = "Bibliography, tables, figures, appendix, index, pp. X 217.", X acknowledgement = ack-jpl, X annote = "Semi-narrative style analyzing the management of X (book) publishing by a former director of Princeton X University Press.", } X @Book{Bailey:1990:ASB, X author = "Herbert S. {Bailey, Jr.}", X title = "The Art and Science of Book Publishing", X publisher = pub-OHIO, X address = pub-OHIO:adr, X edition = "Third", X pages = "xviii + 216", X year = "1990", X ISBN = "0-8214-0970-0", X LCCN = "Z278 .B15 1990", X bibdate = "Sat Feb 19 12:16:32 1994", X acknowledgement = ack-nhfb, } X @Book{Balda:1997:UNS, X author = "Miroslav Balda", X title = "Uzivatelske nadstavby sazeciho systemu {\LaTeX} 2.09", X publisher = "Zapadoceska univerzita", X address = "Plzen, Czech Republic", X pages = "119", X year = "1997", X ISBN = "80-7082-307-0", X LCCN = "????", X bibdate = "Sat Mar 7 18:25:51 MST 1998", X acknowledgement = ack-nhfb, X keywords = "{\LaTeX} 2.09 -- makra", } X @Book{Barlow:1992:TC, X author = "Geoff Barlow and Simon Eccles", X title = "Typesetting and Composition", X publisher = pub-BLUEPRINT, X address = pub-BLUEPRINT:adr, X edition = "second", X pages = "274", X year = "1992", X ISBN = "0-948905-72-7", X acknowledgement = ack-mc, } X @Book{Barron:1987:TPT, X author = "David Barron and Mike Rees", X title = "Text processing and typesetting with {UNIX}", X publisher = pub-AW, X address = pub-AW:adr, X pages = "xiv + 447", X year = "1987", X ISBN = "0-201-14219-8", X LCCN = "Z286.D47 B37 1987", X bibdate = "Mon Jul 25 11:50:00 1994", X price = "US\$24.95", X series = "International computer science series", X acknowledgement = ack-nhfb, X keywords = "documentation", X review = "ACM CR 8811-0841", X subject = "I.7.2 Computing Methodologies, TEXT PROCESSING, X Document Preparation, nroff \\ I.7.2 Computing X Methodologies, TEXT PROCESSING, Document Preparation, X troff", } X @Article{Barron:1989:WUS, X author = "D. Barron", X title = "Why Use {SGML}?", X journal = j-EPODD, X volume = "2", X number = "1", X pages = "3--24", X month = apr, X year = "1989", X CODEN = "EPODE", X ISSN = "0894-3982", X bibdate = "Tue Mar 1 12:44:34 1994", } X @Article{Barwise:1989:TLA, X author = "Jon Barwise", X title = "{\TeX}, {\LaTeX}, and {\AmSTeX}", X journal = j-NAMS, X volume = "36", X number = "3", X pages = "241--243", X month = mar, X year = "1989", X ISSN = "0002-9920", X bibdate = "Tue Dec 14 11:08:55 1993", X acknowledgement = ack-ps, } X @Book{Barzun:1986:WEP, X author = "Jacques Barzun", X title = "On Writing, Editing, and Publishing: Essays, X Explicative and Hortatory", X publisher = pub-U-CHICAGO-PRESS, X address = pub-U-CHICAGO-PRESS:adr, X pages = "xi + 148", X year = "1986", X ISBN = "0-226-03857-2 (hardcover), 0-226-03858-0 (paperback)", X LCCN = "PN149 .B295 1986", X bibdate = "Tue Dec 14 22:56:20 1993", X acknowledgement = ack-jpl, } X @Article{BCS:1986:TWI, X author = "Report of the {Boston Computer Society}", X title = "Technical {Wordprocessors} for the {IBM PC} and X {Compatibles}", X journal = j-NAMS, X volume = "33", X number = "1", X pages = "8--37", X month = jan, X year = "1986", X ISSN = "0002-9920", X bibdate = "Mon Mar 2 19:43:58 1998", X acknowledgement = ack-hk, } X @Book{Beccari:1991:LGS, X author = "Claudio Beccari", X title = "{\LaTeX}\emdash{}Guida a un sistema di editoria X elettronica", X publisher = pub-EUH, X address = pub-EUH:adr, X pages = "ix + 399", X year = "1991", X ISBN = "88-203-1931-4", X bibdate = "Wed Aug 24 21:53:29 1994", X note = "[From the author]: The book is the first and only one X in Italian at this moment [18-Nov-1991]. Although it X contains an introductory chapter for the beginner, its X main purpose is to give the reader advanced information X on {\LaTeX} (and partially on {\TeX}) in order to X prepare sophisticated macros, style files, and to make X a clever use of fonts. Here is a reduced table of X contents (translated to English): Chapter 1 - X Introduction \\ X \hphantom{Chapter }2 - Introductory \LaTeX{} \\ X \hphantom{Chapter }3 - General commands for text mode X \\ X \hphantom{Chapter }4 - Mathematical commands \\ X \hphantom{Chapter }5 - Environments \\ X \hphantom{Chapter }6 - Figures and tables \\ X \hphantom{Chapter }7 - Macros \\ X \hphantom{Chapter }8 - Typical documents and style X files \\ X \hphantom{Chapter }9 - Fonts \\ X Appendix A - \TeX{} Users Group \\ X \hphantom{Appendix }B - Keyboards \\ X \hphantom{Appendix }C - Font tables \\ X \hphantom{Appendix }D - Hyphenation patterns for X Italian \\ X Bibliography \\ X Index \\ X The publisher received camera-ready pages that were X prepared by the author with a 300-dpi laser printer. X The page style dimensions were suitably enlarged while X the photo plates were reduced so as to minimize the X granulosity of the signs. In practice the book was X prepared with 12pt option and reduced by the X photografic ratio of 0.8 so that the final real font X size is 9.6pt. The whole book was prepared with the X standard Computer Roman fonts on purpose in order to X show the potential user what he can get with a standard X \TeX{}/\LaTeX{} kit. The simple pictures were prepared X with the ``picture'' environment. The cover and the X title page were designed by a graphic expert of the X publishing company.", X acknowledgement = ack-cb, } X @Book{Beccari:1991:TLS, X author = "Claudio Beccari", X title = "La tesi di laurea scientifica\emdash Con note per la X composizione in {\LaTeX}\emdash disco {MS-DOS} da X 5.25in contenente macroistruzioni di stile", X publisher = pub-EUH, X address = pub-EUH:adr, X pages = "vii + 116", X year = "1991", X ISBN = "88-203-1932-2", X bibdate = "Sat Feb 10 08:48:04 1996", X note = "The book was typeset by the author and printed with a X laser printer having a resolution of 300 dpi. The pages X were then photographically reduced by a factor of 0.8 X to the final size.. The fonts used are those of the X standard {\TeX\slash \LaTeX} set, that is Computer X Modern, with a default normal size of 12pt that the X photographic reduction made equivalent to approximately X 10pt. The book is a set of instructions for the X preparation of the thesis (Master and PhD levels) X according to the Italian State Universities X regulations; it deals mostly with literary style but it X also includes extensive tables of scientific symbols X and nomenclature and many references to Standards X regulations. The final chapter deal with the X typesetting of the thesis with a {\LaTeX} style, X TOPTESI, whose source is recorded in a floppy disk that X comes with the book.", } X @Book{Bechtolsheim:1992:TP, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice", X publisher = pub-SV, X address = pub-SV:adr, X pages = "1587, with 31 illustrations", X year = "1992", X ISBN = "0-387-97296-X", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Fri Jul 22 09:26:02 1994", X note = "Four volume set.", X price = "US\$169.00", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1992:TPB, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Basics", X volume = "1", X publisher = pub-SV, X address = pub-SV:adr, X pages = "359, with 9 illustrations", X year = "{\noopsort{1992a}}1992", X ISBN = "0-387-97595-0", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Fri Jul 22 09:25:55 1994", X price = "US\$49.00", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1992:TPO, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Output Routines", X volume = "4", X publisher = pub-SV, X address = pub-SV:adr, X pages = "300", X year = "{\noopsort{1992d}}1992", X ISBN = "0-387-97598-5", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Fri Jul 22 09:25:56 1994", X price = "US\$49.00", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1992:TPP, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Paragraphs, Math, and Fonts", X volume = "2", X publisher = pub-SV, X address = pub-SV:adr, X pages = "384", X year = "{\noopsort{1992b}}1992", X ISBN = "0-387-97596-9", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Fri Jul 22 09:25:58 1994", X price = "US\$49.00", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1992:TPT, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Tokens, Macros", X volume = "3", X publisher = pub-SV, X address = pub-SV:adr, X pages = "544, with 22 illustrations", X year = "{\noopsort{1992c}}1992", X ISBN = "0-387-97597-7", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Fri Jul 22 09:26:06 1994", X price = "US\$49.00", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1993:TPB, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Basics", X volume = "1", X publisher = pub-SV, X address = pub-SV:adr, X year = "1993", X ISBN = "0-387-97595-0, 3-540-97595-0", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Mon Oct 18 15:41:37 1993", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1993:TPO, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Output Routines, Tables", X volume = "4", X publisher = pub-SV, X address = pub-SV:adr, X year = "1993", X ISBN = "0-387-97598-5, 3-540-97598-5", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Mon Oct 18 15:41:37 1993", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1993:TPP, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Paragraphs, Math, and Fonts", X volume = "2", X publisher = pub-SV, X address = pub-SV:adr, X year = "1993", X ISBN = "0-387-97596-9, 3-540-97596-9", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Mon Oct 18 15:41:37 1993", X acknowledgement = ack-nhfb, } X @Book{Bechtolsheim:1993:TPT, X author = "Stephan von Bechtolsheim", X title = "{\TeX} in Practice: Tokens, Macros", X volume = "3", X publisher = pub-SV, X address = pub-SV:adr, X year = "1993", X ISBN = "0-387-97597-7, 3-540-97597-7", X LCCN = "Z253.4.T47 B4 1993", X bibdate = "Mon Oct 18 15:41:37 1993", X acknowledgement = ack-nhfb, } X @Article{Becker:1987:AWP, X author = "Joseph D. Becker", X title = "{Arabic} word processing", X journal = j-CACM, X volume = "30", X number = "7", X pages = "600--610", X month = jul, X year = "1987", X CODEN = "CACMA2", X ISSN = "0001-0782", X bibdate = "Wed Jan 04 08:20:20 1995", X acknowledgement = ack-nhfb, X keywords = "algorithms; human factors; design", X review = "ACM CR 8902-0084", X subject = "H.4.1 Information Systems, INFORMATION SYSTEMS X APPLICATIONS, Office Automation, Word processing \\ J.5 X Computer Applications, ARTS AND HUMANITIES, Linguistics X \\ I.7.1 Computing Methodologies, TEXT PROCESSING, Text X Editing, Languages", } X @Article{Becker:1989:TAD, X author = "Zeev Becker and Daniel Berry", X title = "{{\tt triroff}}, an adaptation of the X device-independent {{\tt troff}} for formatting X tri-directional text", X journal = j-EPODD, X volume = "2", X number = "3", X pages = "119--142", X month = oct, X year = "1989", X CODEN = "EPODE", X ISSN = "0894-3982", X bibdate = "Tue Mar 1 12:45:15 1994", } X @Book{Beckmann:1977:HP, X author = "{Petr} Beckmann", X title = "A History of $\pi$", X publisher = pub-GOLEM, X address = pub-GOLEM:adr, X edition = "Fourth", X pages = "202", X year = "1977", X ISBN = "0-911762-18-3", X LCCN = "QA484 .B4 1977", X bibdate = "Thu Sep 08 11:17:17 1994", X note = "This book chronicles the story of the ultimate version X number of {\TeX}.", X acknowledgement = ack-nhfb, } X @Manual{Beebe:1987:TDD, X author = "Nelson H. F. Beebe", X title = "A {\TeX DVI Driver Family} --- ({Revision}~2.07)", X address = "University of Utah, Salt Lake City, UT 84112, USA", X month = apr, X year = "1987", X acknowledgement = ack-nhfb, } X @Book{Bennett:1991:BP, X editor = "Paul A. Bennett", X title = "Books and Printing", X publisher = pub-BIEL, X address = pub-BIEL:adr, X pages = "417", X year = "1991", X ISBN = "0-913720-72-0", X LCCN = "Z116.A3 B58 1991", X bibdate = "Sat Sep 10 12:52:39 1994", X note = "first published in 1951", X acknowledgement = ack-mc, X subtitle = "A Treasury for Typophiles", } X @Article{Bentley:1986:GLT, X author = "Jon L. Bentley and Brian W. Kernighan", X title = "{GRAP} --- a language for typesetting graphs", X journal = j-CACM, X volume = "29", X number = "8", X pages = "782--792", X month = aug, X year = "1986", X CODEN = "CACMA2", X ISSN = "0001-0782", X bibdate = "Wed Jan 04 08:20:03 1995", X acknowledgement = ack-nhfb, X keywords = "languages", X subject = "I.3.4 Computing Methodologies, COMPUTER GRAPHICS, X Graphics Utilities, Picture description languages \\ X I.7.2 Computing Methodologies, TEXT PROCESSING, X Document Preparation, Languages", } X @Article{Bentley:1986:LP, X author = "Jon Bentley", X title = "Literate Programming", X journal = j-CACM, X volume = "29", X number = "5", X pages = "364--369", X year = "1986", X CODEN = "CACMA2", X ISSN = "0001-0782", } X @Article{Bentley:1986:PPD, X author = "J. L. Bentley", X title = "Programming Pearls: Document Design", X journal = j-CACM, X volume = "29", X number = "9", X pages = "832--839", X month = sep, X year = "1986", X CODEN = "CACMA2", X ISSN = "0001-0782", X bibdate = "Sat Aug 27 17:15:11 1994", X acknowledgement = ack-nhfb, } X @Article{Bentley:1987:CPP, X author = "J. L. Bentley and L. W. Jelinski and B. W. Kernighan", X title = "{CHEM} --- {A} Program for Phototypesetting Chemical X Structure Diagrams", X journal = j-COMP-CHEM, X volume = "11", X number = "4", X pages = "281--297", X year = "1987", X ISSN = "0097-8485", X bibdate = "Sat Aug 27 16:57:14 1994", X acknowledgement = ack-nhfb, } X @TechReport{Bentley:1988:DLT, X author = "J. L. Bentley", X title = "dformat -- {A} Language for Typesetting Data Formats", X type = "Comp. Sci. Tech. Rep. No.", X number = "142", X institution = inst-ATT-BELL, X address = inst-ATT-BELL:adr, X month = apr, X year = "1988", X bibdate = "Sat Aug 27 17:13:19 1994", X note = "142", X acknowledgement = ack-nhfb, X keywords = "CSTR OBS", } X @Article{Bentley:1988:TPI, X author = "J. L. Bentley and B. W. Kernighan", X title = "Tools for Printing Indexes", X journal = j-EPODD, X volume = "1", X number = "1", X pages = "3--18", X month = apr, X year = "1988", X CODEN = "EPODE", X ISSN = "0894-3982", } X @Article{Bentley:1990:GLT, X author = "J. L. Bentley and B. W. Kernighan", X title = "{GRAP} --- {A} Language for Typesetting Graphs. X Tutorial and User Manual", X journal = "Unix Research System Papers", X volume = "II", X pages = "109--146", X year = "1990", X bibdate = "Sat Feb 10 16:06:28 1996", } X @Article{Bentley:1991:SAA, X author = "J. L. Bentley and B. W. Kernighan", X title = "A system for algorithm animation", X journal = j-COMPSYS, X volume = "4", X number = "1", X pages = "5--30", X month = "Winter", X year = "1991", X CODEN = "CMSYE", X ISSN = "0895-6340", X bibdate = "Thu Sep 01 01:07:13 1994", X abstract = "An algorithm or a program can be animated by a movie X that graphically represents its dynamic execution. Such X animations are useful for developing new programs, for X debugging, and for explaining how programs work. This X paper describes ANIM, a basic system for algorithm X animation. The output is crude, but ANIM is easy to X use; a novice user can animate a program in an hour or X two. ANIM currently produces movies with the X window X system, among others; it also renders movies into X stills that can be included in TROFF or {\TeX} X documents. (15 Refs.)", X acknowledgement = ack-nhfb, X affiliation = "AT and T Bell Labs., Princeton, NH, USA", X classification = "C6130B (Graphics techniques)", X keywords = "Program animation; TROFF documents; Algorithm X animation; Movie; Dynamic execution; ANIM; X window X system; Stills; TeX documents", X thesaurus = "Computer animation", } X @Book{Bianco:1992:TGU, X author = "Fiorella Bianco", X title = "{\TeX}\emdash Guida all'uso su personal computer X (Guide for the use on personal computers)", X publisher = pub-PITAGORA, X address = pub-PITAGORA:adr, X pages = "ix + 157", X year = "1992", X ISBN = "88-371-0583-5", X bibdate = "Tue Mar 1 11:55:51 1994", X note = "Prepared with Plain {\TeX} and book macros written by X the author. Final copy produced on a 300-dpi laser X printer at magnification 1.2, then reduced for X printing.", } X @InProceedings{Bien:1985:TRC, X author = "Janusz S. Bie{\'n} and Hanna X Ko{\-}{\l}o{\-}dziej{\-}ska", X title = "{\TeX} for {Riad Computers}", X crossref = "Lucarella:1985:PFE", X pages = "133--140", X year = "1985", X bibdate = "Tue Jul 26 09:28:48 1994", X acknowledgement = ack-hk, X author-l = lang-pl, } X @Article{Bien:1988:PLT, X author = "Janusz S. Bie{\'n}", X title = "{Polish} Language and {\TeX}", X journal = j-TEXLINE, X volume = "8", X pages = "2", X year = "1988", X acknowledgement = ack-hk, X author-l = lang-pl, } X @Article{Bien:1990:CTJ, X author = "Janusz S. Bie{\'n}", X title = "Co to jest {\TeX}? (What is {\TeX}?)", X journal = j-WM, X volume = "29", X number = "1", X pages = "132--156", X year = "1990", X bibdate = "Thu Jun 23 18:23:05 1994", X note = "In Polish.", X author-l = lang-pl, X title-l = lang-pl, } X @Article{Bigelow:1983:DT, X author = "Charles Bigelow and Donald Day", X title = "Digital Typography", X journal = j-SA, X volume = "249", X number = "2", X pages = "106--119", X month = aug, X year = "1983", } X @InProceedings{Bigelow:1986:DLI, X author = "Charles Bigelow and Kris Holmes", X title = "The Design of {Lucida}: an Integrated Family of Types X for Electronic Literacy", X crossref = "vanVliet:1986:TPD", X pages = "1--17", X year = "1986", X bibdate = "Tue Mar 1 12:45:43 1994", X acknowledgement = ack-kb, } X @TechReport{Billawala:1989:MPS, X author = "Neenie Billawala", X title = "Metamarks: Preliminary studies for a {Pandora}'s Box X of Shapes", X number = "{STAN-CS-89-1256}", X institution = inst-STAN-CS, X address = inst-STAN-CS:adr, X month = may, X year = "1989", X bibdate = "Tue Mar 1 12:45:52 1994", } X @Article{Binding:1993:ETS, X author = "Angelika Binding", X title = "{Einsatz von {\TeX} beim Springer-Verlag}", X journal = j-MDMV, X volume = "19", X pages = "19--22", X year = "1993", X bibdate = "Tue Dec 14 10:40:35 1993", X acknowledgement = ack-ps, } X @Book{Black:1990:TDP, X author = "Alison Black", X title = "Typefaces for desktop publishing; a user guide", X publisher = pub-ADTP, X address = pub-ADTP:adr, X pages = "106", X year = "1990", X ISBN = "1-85454-841-7", X LCCN = "Z253.3.B53 1990", X bibdate = "Tue Jul 26 09:19:20 1994", X acknowledgement = ack-fm # " and " # ack-mc, X review = j-TEXLINE # " 13, pp. 10--12", } X @Book{Borceux:1990:LPT, X author = "Francis Borceux", X title = "{\LaTeX}\emdash{}la perfection dans le traitement du X texte", X publisher = pub-CIAOCO, X address = pub-CIAOCO:adr, X year = "1990", X ISBN = "2-87085-194-4", X bibdate = "Wed Dec 15 08:46:29 1993", } X @Book{Borde:1992:TE, X author = "Arvind Borde", X title = "{\TeX} by Example", X publisher = pub-AP, X address = pub-AP:adr, X pages = "xiv + 169", X year = "1992", X ISBN = "0-12-117650-9", X LCCN = "Z253.4.T47 B67 1992", X bibdate = "Tue Mar 1 11:56:22 1994", X note = "This book was designed by the author, with some X assistance from the production department of Academic X Press, Boston. The covers were done by the publisher. X It was typeset by the author using Plain {\TeX} plus X specially written macros. The code for all macros used X for the book are reproduced in it so that the book X itself contains all the information---page layout X specifications, fonts used, and so on---about its own X typesetting. Over half the book consists of {\TeX} X input and output shown side-by-side, providing an X explicit example of how a part of the book was typeset. X The Academic Press logo on page iii, the X cataloging-in-publication data on page iv, and the X diagrams on page 33 were pasted in place by the X production department of Academic Press. The diagrams X were drawn using {\LaTeX}. Sample printouts of pages X were made on various laser printers. When everything X seemed satisfactory, the dvi files were copied onto IBM X diskettes and were mailed to Academic Press, and from X them to the American Mathematical Society. The final X copy was produced by the A.M.S. using an APS micro-5 X phototypesetter. All fonts used in the book are from X the Computer Modern family. Parts of the covers of the X book, inside and outside, were done in {\TeX} by the X author (the code for this is not included in the book). X The outside cover was designed by Camille Pecoul of X Academic Press and produced at Allison Associates in X Boston. The font used for the title (on the covers) is X Meridien. The background pattern was obtained by X shooting a handmade marble paper as a black-and-white X halftone and then overprinting with the Pantone X Matching System (PMS). The placement of material on the X cover was done by hand by Ms. Pecoul using a mechanical X board. The drop shadow effect was done at Allison X Associates.", X acknowledgement = ack-ab, } X @Book{Borde:1993:MTE, X author = "Arvind Borde", X title = "Mathematical {\TeX} by Example", X publisher = pub-AP, X address = pub-AP:adr, X pages = "xii + 352", X year = "1993", X ISBN = "0-12-117645-2", X LCCN = "Z253.4.T47 B67 1993", X bibdate = "Wed Dec 15 08:46:21 1993", X acknowledgement = ack-nhfb, } X @Book{Borde:1993:UGL, X author = "Arvind Borde and Tomas Rokicki", X title = "A User's Guide for {\TeX}Help; The On-Line {\TeX} X Handbook", X publisher = pub-AP, X address = pub-AP:adr, X pages = "v + 28", X year = "1993", X ISBN = "0-12-117640-1", X bibdate = "Sat Sep 25 13:57:28 1993", X note = "This small booklet documents the {\TeX}Help program X for IBM PC and compatible microcomputers.", X acknowledgement = ack-nhfb, } X @Book{Borkowski:1992:LPP, X author = "Kazimierz M. Borkowski", X title = "{\LaTeX}. Profesjonalny sk{\l}ad publikacji", X publisher = pub-MARSZALEK, X address = pub-MARSZALEK:adr, X year = "1992", X bibdate = "Thu Jun 23 18:23:12 1994", X note = "In Polish.", X acknowledgement = ack-md, X address-l = lang-pl, X author-l = lang-pl, X publisher-l = lang-pl, X title-l = lang-pl, } X @Book{Boston:1986:STT, X author = "Bruce O. Boston", X title = "{STET!} Tricks of the Trade for Writers and Editors", X publisher = pub-EEI, X address = pub-EEI:adr, X pages = "310", X year = "1986", X ISBN = "0-935012-07-9", X LCCN = "PN162 .S741 1986", X bibdate = "Fri Jul 22 08:47:44 1994", X price = "US\$15.95", X acknowledgement = ack-jpl, X annote = "A collection of articles from {\em The Editorial Eye}, X the newsletter on publications standards and practices. X Covers editing, writing, proof-reading, and X publications management (mostly writing, editing, and X proofing).", } X @Booklet{Botway:1985:LCS, X author = "Lloyd Botway and Chris Biemesderfer", X title = "{\LaTeX} Command Summary ({\TeX} 1.3, {\LaTeX} 2.08)", X howpublished = "Prepared for the Space Telescope Institute, Baltimore, X MD; reprinted with permission and distributed by TUG", X year = "1985", X bibdate = "Tue Mar 1 11:57:04 1994", X acknowledgement = ack-hk, } X @InProceedings{Bouma:1988:DP, X author = "Louis G. Bouma and Jeroen Bruijning and Johannes C. X {van Vliet}", X title = "Document processing", X crossref = "Veer:1988:HCI", X pages = "144--169", X year = "1988", X bibdate = "Thu Jul 21 23:40:26 1994", X acknowledgement = ack-nhfb, } X @Book{Brandt:1989:CAC, X editor = "Josef Brandt and Ivar K. Ugi", X title = "Computer Applications in Chemical Research and X Education: {A} Collection of Papers Based on Lectures X that were Presented at the {VII}th International X Conference on Computers in Chemical Research and X Education at Garmisch-Partenkirchen, {DE}", X publisher = pub-AHV, X address = pub-AHV:adr, X edition = "1", X pages = "xiii + 449", X year = "1989", X ISBN = "3-7785-1804-6", X LCCN = "QD39.3.E46 I56 1985", X bibdate = "Fri Jul 22 08:49:47 1994", X price = "DM128.00", X series = "Computeranwendung in der Chemie", X acknowledgement = ack-rw, } X @Book{Braswell:1989:IP, X author = "Frank Merritt Braswell", X title = "Inside {\POSTSCRIPT}", X publisher = pub-PEACHPIT, X address = pub-PEACHPIT:adr, X year = "1989", X ISBN = "0-938151-10-X", X LCCN = "QA76.73.P67 B73 1989", X bibdate = "Tue Dec 14 23:35:41 1993", X price = "US\$37.50", } X @Article{Brooks:1991:LTV, X author = "Kenneth P. Brooks", X title = "Lilac: {A} Two-View Document Editor", X journal = j-COMPUTER, X volume = "24", X number = "6", X pages = "7--19", X month = jun, X year = "1991", X CODEN = "CPTRB", X ISSN = "0018-9162", X bibdate = "Tue Mar 1 11:57:20 1994", } X @Book{Brown:1989:IPT, X author = "Alex Brown", X title = "In Print: Text and Type", X publisher = pub-WGP, X address = pub-WGP:adr, X pages = "191", X year = "1989", X ISBN = "0-8230-2544-6", X LCCN = "Z250.B868 1989", X bibdate = "Wed Aug 10 10:10:49 1994", X acknowledgement = ack-nhfb, } X @Book{Brown:1994:PTT, X editor = "Vicki Brown", X title = "Prime Time {\TeX}cetera", X publisher = pub-PRIME-TIME-FREEWARE, X address = pub-PRIME-TIME-FREEWARE:adr, X pages = "96", X year = "1994", X ISBN = "1-881957-10-1", X bibdate = "Wed Aug 10 10:52:33 1994", X note = "Includes CD-ROM.", X price = "US\$60.00", X acknowledgement = ack-nhfb, } X @Article{Brueggeman-Klein:1989:DTN, X author = "A. Br{\"{u}}ggeman-Klein and D. Wood", X title = "Drawing Trees Nicely with {\TeX}", X journal = j-EPODD, X volume = "2", X number = "2", X pages = "101--115", X month = jul, X year = "1989", X CODEN = "EPODE", X ISSN = "0894-3982", } X @TechReport{Bruin:1988:PL, X author = "R. de Bruin and C. G. {van der Laan} and J. R. Luyten X and H. F. Vogt", X title = "Publiceren met {\LaTeX}", X type = "CWI Syllabus", X number = "19", X institution = inst-CWI, X address = inst-CWI:adr, X year = "1988", X ISBN = "90-6196-357-5", X bibdate = "Tue Mar 1 12:47:03 1994", X note = "In Dutch; copious examples.", } X @Book{Bryan:1988:SAG, X author = "Martin Bryan", X title = "{SGML}\emdash{}An Author's Guide to the Standard X Generalized Markup Language", X publisher = pub-AW, X address = pub-AW:adr, X pages = "xvii + 364", X year = "1988", X ISBN = "0-201-17535-5", X LCCN = "QA76.73.S44 B79 1988", X bibdate = "Tue Dec 14 23:35:58 1993", X acknowledgement = ack-nhfb # " and " # ack-fm, X annote = "Complete description of SGML including example DTDs.", X keywords = "SGML, DTD, document representation", } X @Book{Buerger:1990:LES, X author = "David J. Buerger", X title = "{\LaTeX} for Engineers and Scientists", X publisher = pub-MH, X address = pub-MH:adr, X pages = "xvi + 198", X year = "1990", X ISBN = "0-07-008845-4", X LCCN = "Z253.4.L38 B84 1990", X bibdate = "Tue Dec 14 22:43:21 1993", } X @Book{Butcher:1981:CEC, X author = "Judith Butcher", X title = "Copy editing: the Cambridge handbook", X publisher = pub-CUP, X address = pub-CUP:adr, X edition = "Second", X year = "1981", X ISBN = "0-521-23868-4, 0-521-25638-0", X LCCN = "PN162 .B86 1981", X bibdate = "Fri Jul 22 08:50:18 1994", X price = "UK\pounds22", X acknowledgement = ack-fm, X annote = "The standard English work on copy editing (CHe)", X inprint = "yes", } X @Book{Buxton:1988:MLL, X author = "H. W. Buxton", X title = "Memoir of the life and labours of the late Charles X Babbage Esq. {F.R.S}", X publisher = pub-MIT, X address = pub-MIT:adr, X pages = "xix + 401", X year = "1988", X ISBN = "0-262-02269-9", X LCCN = "QA29.B2 B891 1988", X bibdate = "Mon Jul 25 08:37:04 MDT 1994", X note = "From {\em Computing Reviews\/}: ``Charles Babbage was X a nineteenth-century polymath who initially studied X mathematics at Cambridge and subsequently pursued X interests in fields as diverse as philosophy, political X economy, and mechanical computing. While attempting to X realize a machine for calculating and printing X error-free mathematical tables, he visited factories to X learn metalworking techniques, invented a system of X mechanical notation to represent the states of the X machine, and devised a method for correct typesetting. X As the editor of this series notes, the scope of X Babbage's work makes him a difficult subject to X understand in our modern age of specialized X scholarship.''", X price = "US\$50", X series = "Reprint series for the history of computing, vol. 13", X acknowledgement = ack-nhfb, X review = "ACM CR 8903-0095", X subject = "A.0 General Literature, GENERAL, Charles Babbage \\ X K.2 Computing Milieux, HISTORY OF COMPUTING, Charles X Babbage", } X @Booklet{Bzyl:1993:TT, X author = "W{\l}odek Bzyl", X title = "{\TeX}. {\TeX}??", X howpublished = "broszura z konferencji cz{\l}onk{\'o}w GUSTu", X address = "Bachotek", X year = "1993", X bibdate = "Thu Jun 23 18:23:18 1994", X note = "In Polish.", X acknowledgement = ack-md, X address-l = lang-pl, X author-l = lang-pl, X howpublished-l = lang-pl, X title-l = lang-pl, } X @InProceedings{Canzii:1985:SSD, X author = "G. Canzii and G. {Degli Antoni} and S. Mussi and G. X Rossi", X title = "{SDDS: Scientific Document Delivery System}", X crossref = "Lucarella:1985:PFE", X pages = "15--25", X year = "1985", X bibdate = "Tue Jul 26 09:26:07 1994", X acknowledgement = ack-hk, } X @Article{Casti:1991:VTP, X author = "John L. Casti", X title = "{V\TeX} Typesetting Package", X journal = j-NAMS, X volume = "38", X number = "2", X pages = "105--109", X month = feb, X year = "1991", X ISSN = "0002-9920", } X @Article{Casti:1993:BFT, X author = "John L. Casti", X title = "Bitmap-free {\TeX}", X journal = j-NAMS, X volume = "40", X number = "5", X pages = "464--469", X month = may # "/" # jun, X year = "1993", X ISSN = "0002-9920", X bibdate = "Mon May 10 12:29:15 1993", X note = "A review of {Y\&Y}'s {DVIWindo} and {DVIPSONE}, and X comments on outline fonts for {\TeX}.", } X @InProceedings{Cerofolini:1985:LCL, X author = "Luigi Cerofolini", X title = "A Low Cost Laser Beam Printer Controller", X crossref = "Lucarella:1985:PFE", X pages = "191--195", X year = "1985", X bibdate = "Tue Jul 26 09:28:37 1994", X acknowledgement = ack-hk, } X @InProceedings{Chan:1988:JAC, X author = "Kai Ming Chan and Kam Pui Chow and Wai Man Lo", X title = "{JACM}---just another {Chinese Metafont}", X crossref = "ICCPCOL:1988:ICC", X pages = "311--315", X year = "1988", X bibdate = "Mon Oct 24 12:44:52 MDT 1994", X abstract = "An interactive Chinese font design system, JACM (just X another Chinese metafont), is reported. JACM consists X of two components: the font generator (FG) and the user X interface (UI). The FG is a metafont system together X with a set of predefined strokes, radicals and X subcharacter. The UI provides an easy to use front end X for the designer to communicate with the FG. The design X of the UI is based on the hierarchical structure of X Chinese characters. (10 Refs.)", X acknowledgement = ack-nhfb, X affiliation = "Dept. of Comput. Sci., Hong Kong Univ., Hong Kong", X classification = "C6130D (Document processing techniques); C1250B X (Character recognition); C6180 (User interfaces)", X conf_date = "29 Aug.--1 Sept. 1988", X conf_location = "Toronto, Ontario, Canada", X conf_sponsor = "Chinese Language Comput. Soc.; Chinese Canadian Inf. X Processing Professionals; Philips Electron", X keywords = "JACM; Just another Chinese metafont; Interactive X Chinese font design system; Font generator; User X interface; FG; Metafont system; Predefined strokes; X Radicals; Subcharacter; Front end; Hierarchical X structure; Chinese characters", X language = "English", X pub_country = "Canada", X thesaurus = "Character recognition; Character sets; Interactive X systems; User interfaces; Word processing", } X @TechReport{Chen:1987:AIP, X author = "Pehong Chen and Michael A. Harrison", X title = "Automating Index Preparation", X type = "Technical Report", X number = "87/347", X institution = "Computer Science Division, University of California", X address = "Berkeley, CA, USA", X month = mar, X year = "1987", X note = "This is an expanded version of \cite{Chen:1988:IPP}.", } X @Article{Chen:1988:IPP, X author = "Pehong Chen and Michael A. Harrison", X title = "Index Preparation and Processing", X journal = j-SPE, X volume = "19", X number = "9", X pages = "897--915", X month = sep, X year = "1988", X CODEN = "SPEXBL", X ISSN = "0038-0644", X note = "The {\LaTeX} text of this paper is included in the X {\tt makeindex} software distribution.", } X @TechReport{Cheswick:1990:PI, X author = "Bill Cheswick", X title = "A Permuted Index for {\TeX} and {\LaTeX}", X type = "Computing Science Technical Report", X number = "145", X institution = inst-ATT-BELL, X address = inst-ATT-BELL:adr, X month = feb, X year = "1990", X bibdate = "Tue Mar 1 12:47:28 1994", X note = "Also published by TUG as {\TeX}niques No.~14.", } X @Book{Christian:1987:UTP, X author = "Kaare Christian", X title = "The {UNIX} text processing system", X publisher = pub-WILEY, X address = pub-WILEY:adr, X pages = "xii + 250", X year = "1987", X ISBN = "0-471-85581-2", X LCCN = "QA76.76.O63 C47 1987", X bibdate = "Mon Jul 25 11:51:08 1994", X price = "US\$24.95", X acknowledgement = ack-nhfb, X keywords = "documentation; languages", X review = "ACM CR 8806-0406", X subject = "I.7.2 Computing Methodologies, TEXT PROCESSING, X Document Preparation \\ I.7.1 Computing Methodologies, X TEXT PROCESSING, Text Editing \\ D.4.0 Software, X OPERATING SYSTEMS, General, UNIX \\ D.4.9 Software, X OPERATING SYSTEMS, Systems Programs and Utilities", } X @Article{Church:1992:UWT, X author = "P. T. Church", X title = "Using Workshops to Teach {\TeX}", X journal = j-NAMS, X volume = "39", X number = "8", X pages = "842", X month = oct, X year = "1992", X ISSN = "0002-9920", X note = "{\AmSTeX} input for two workshop handouts may be X obtained by anonymous ftp from {\tt syr.edu} in the X directory {\tt /math/papers}.", X acknowledgement = ack-bnb, } X @Periodical{Clark:1987:T, X editor = "Malcolm Clark", X key = "TEXLINE", X title = j-TEXLINE, X address = "Warwick, UK", X year = "1987" # "\unskip--", X ISSN = "0961-3978", X bibdate = "Sat Feb 10 14:55:29 1996", X note = "This is an informal newsletter of the {\TeX} X community.", } X @Book{Clark:1992:PTP, X author = "Malcolm Clark", X title = "A Plain {\TeX} Primer", X publisher = pub-OUP, X address = pub-OUP:adr, X pages = "481", X year = "1992", X ISBN = "0-19-853784-0 (hardback), 0-19-853724-7 (softback)", X LCCN = "Z253.4.T47 C46 1992", X bibdate = "Tue Dec 14 23:36:18 1993", X acknowledgement = ack-mc, } X @Book{Collier:1991:CRD, X author = "David Collier", X title = "Collier's Rules for Desktop Design and Typography", X publisher = pub-AW, X address = pub-AW:adr, X pages = "v + 135", X year = "1991", X ISBN = "0-201-54416-4", X LCCN = "Z286.D47 C65 1991", X bibdate = "Wed Aug 10 11:29:00 1994", X price = "US\$14.95", X acknowledgement = ack-nhfb, } X @Misc{comp.text.tex:1989:CTT, X key = "comp.text.tex", X title = "comp.text.tex", X year = "1989" # "\unskip--", X note = "This is an unmoderated Usenet discussion list about X {\TeX}.", } X @Article{Cornell:1986:CHS, X author = "Gary Cornell", X title = "Chiwriter: Horstman Software Group", X journal = j-MATHINTEL, X volume = "8", X number = "2", X pages = "64--65", X year = "1986", X bibdate = "Fri Mar 12 09:41:19 1993", X acknowledgement = ack-ps, } X @Article{Cosar:1991:TIG, X author = "A. Cosar and B. Ozguc", X title = "A text, image, and graphics editor", X journal = j-COMPUTERS-AND-GRAPHICS, X volume = "15", X number = "1", X pages = "57--66", X month = "", X year = "1991", X CODEN = "COGRD", X ISSN = "0097-8493", X bibdate = "Thu Sep 01 01:08:27 1994", X abstract = "A system for the manipulation of text, image, and X graphics items is presented. There are many products X that manipulate text, image, or graphics data X independently, but most of these systems are unable to X manipulate them in a unified document. With the X introduction of Smalltalk. Star, Lisa, Macintosh, and X {\TeX} it has become possible to mix text and graphics X data in a single document. The ODA/ODIF standard has X also been developed for the preparation, processing and X interchange of text as used in office documents. The X presented system is based on similar ideas but it X allows the documents to be created using relational X geometry as well. Any change in a given data item X causes the relational expressions existing in a X document to be reevaluated and this makes the system an X interactive WYSIWYG document editor. Currently the X system is used for documenting various instances of X animations generated by an animation package developed X at Bilkent University. (28 Refs.)", X acknowledgement = ack-nhfb, X affiliation = "Dept. of Comput. Eng. and Inf. Sci., Bilkent Univ., X Ankara, Turkey", X classification = "C6130B (Graphics techniques)", X keywords = "Text editor; Image editor; Graphics editor; Unified X document; ODA/ODIF standard; Relational geometry; X Relational expressions; Interactive WYSIWYG document X editor; Animation package; Bilkent University", X thesaurus = "Computer graphics; Text editing", } X @Book{Craig:1971:DT, X author = "James Craig", X title = "Designing with Type", X publisher = pub-WGP, X address = pub-WGP:adr, X pages = "175", X year = "1971", X ISBN = "0-8230-1320-0", X LCCN = "70-159564", X bibdate = "Wed Jul 6 13:57:38 1994", X acknowledgement = ack-nhfb, X comments = "Spiralbound. Seventh printing, 1978.", X libnote = "Not yet in my library.", } X @Article{Crawford:1987:CSW, X author = "Walt Crawford", X title = "Common sense Wordworking {III}: desktop publishing and X desktop typesetting", X journal = j-LIB-HI-TECH, X volume = "5", X number = "1", X pages = "43--52", X month = "Spring", X year = "1987", X ISSN = "0737-8831", X bibdate = "Mon Jul 25 08:37:04 MDT 1994", X acknowledgement = ack-nhfb, X keywords = "human factors; documentation; design", X subject = "J.7 Computer Applications, COMPUTERS IN OTHER SYSTEMS, X Publishing", } X @Article{Crawford:1987:DTL, X author = "Walt Crawford", X title = "Desktop typesetting and the {LITA} newsletter", X journal = j-INFO-TECH-LIB, X volume = "6", X number = "2", X pages = "89--96", X month = jun, X year = "1987", X ISSN = "0730-9295", X bibdate = "Mon Jul 25 08:37:04 MDT 1994", X acknowledgement = ack-nhfb, X keywords = "management; human factors", X subject = "J.7 Computer Applications, COMPUTERS IN OTHER SYSTEMS, X Publishing \\ H.3.6 Information Systems, INFORMATION X STORAGE AND RETRIEVAL, Library Automation \\ K.7.2 X Computing Milieux, THE COMPUTING PROFESSION, X Organizations", } X @Book{Dair:1967:DT, X author = "Carl Dair", X title = "Design with Type", X publisher = pub-UTP, X address = pub-UTP:adr, X pages = "vi + 162", X year = "1967", X ISBN = "0-8020-1426-7 (hardcover), 0-8020-6519-8 (paperback)", X LCCN = "Z246 D35 1967", X bibdate = "Fri Jul 22 08:54:08 1994", X acknowledgement = ack-fm, X annote = "A good survey of traditional typography with many X useful rules of thumb. (RRu)", X history = "Paperback reprint 1985", } X @Misc{DANTE:1989:TK, X key = "DANTE", X title = "Die {\TeX}nische {Kom{\"o}die}", X year = "1989" # "\unskip--", X bibdate = "Tue Mar 1 11:59:14 1994", X note = "Journal of DANTE (Deutschsprachige Anwendervereinigung X {\TeX} e.V.); Group of German-speaking {\TeX{} X Users}.", } X @Article{Darling:1993:F, X author = "R. W. R. Darling", X title = "{FrameMaker} 3.0", X journal = j-NAMS, X volume = "40", X number = "2", X pages = "150--152", X month = feb, X year = "1993", X ISSN = "0002-9920", X bibdate = "Sat Sep 10 12:57:01 1994", X acknowledgement = ack-ps, } X @Article{Day:1983:TMM, X author = "R. A. Day", X title = "Typesetting mathematics on multi-access systems", X journal = j-SPE, X volume = "13", X number = "2", X pages = "131--138", X month = feb, X year = "1983", X CODEN = "SPEXBL", X ISSN = "0038-0644", X bibdate = "Mon Jul 25 12:25:44 1994", X acknowledgement = ack-nhfb, X keywords = "design; documentation", X review = "ACM CR 8402-0128", X subject = "I.7.2.B Computing Methodologies, TEXT PROCESSING, X Document Preparation, Format and notation \\ I.7.2 C.2 X Computer Systems Organization, COMPUTER-COMMUNICATION X NETWORKS, Network Architecture and Design \\ I.7 X Computing Methodologies, TEXT PROCESSING, Document X Preparation", } X @Article{Deach:1992:OFH, X author = "Stephen Deach", X title = "Outline font hints and rasterization: {A} technology X primer", X journal = j-SEYBOLD, X volume = "6", X number = "7", X pages = "21--31", X month = mar # " 9", X year = "1992", X CODEN = "SRDFE", X ISSN = "0889-9762", X bibdate = "Tue Mar 1 11:59:50 1994", X note = "This paper is followed by a dissent from Adobe (Terry X O'Donnell), and a response from the author (p. 32). A X sidebar (historical note, p. 25) contains a short X description of {\MF} and cites {\MF} as a forerunner of X the hinting mechanism used in TrueType.", X acknowledgement = ack-bnb, } X @InProceedings{DeLaBeaujardiere:1988:WDI, X author = "Jean-M. De La Beaujardiere", X title = "Well-established document interchange formats", X crossref = "vanVliet:1988:DMT", X pages = "83--94", X year = "1988", X bibdate = "Sat Sep 10 12:52:32 1994", X series = "Cambridge series on electronic publishing", X acknowledgement = ack-nhfb, X keywords = "design; standardization; performance; documentation", X review = "ACM CR 8909-0687", X subject = "I.7.2 Computing Methodologies, TEXT PROCESSING, X Document Preparation, Format and notation \\ C.2.0 X Computer Systems Organization, COMPUTER-COMMUNICATION X NETWORKS, General, Data communications \\ C.2.2 X Computer Systems Organization, COMPUTER-COMMUNICATION X NETWORKS, Network Protocols, ODA \\ I.7.2 Computing X Methodologies, TEXT PROCESSING, Document Preparation, X SGML \\ C.2.2 Computer Systems Organization, X COMPUTER-COMMUNICATION NETWORKS, Network Protocols \\ X C.2.2 Computer Systems Organization, X COMPUTER-COMMUNICATION NETWORKS, Network Protocols", } X @Book{Delpech:1997:TDL, X author = "Jean-Pierre Delpech and Marc-Andre Figueres and Nicole Mari", X title = "Techniques du {\LaTeX}", X publisher = pub-EYROLLES, X address = pub-EYROLLES:adr, X pages = "128", X year = "1997", X ISBN = "2-212-02609-9", X LCCN = "????", X bibdate = "Sat Mar 7 18:25:51 MST 1998", X acknowledgement = ack-nhfb, } X @TechReport{DeMillo:1991:USA, X author = "Richard A. DeMillo and Aditya P. Mathur", X title = "On the Use of Software Artifacts to Evaluate the X Effectiveness of Mutation Analysis for Detecting Errors X in Production Software", X type = "Technical Report", X number = "SERC-TR-92-P", X institution = "Software Engineering Research Center", X address = "Purdue University, W. Lafayette, IN 47907, USA", X year = "1991", X bibdate = "Tue Mar 1 12:48:47 1994", } X @Article{Demmig:1989:PBP, X author = "S. Demmig", X title = "Printing books on the {PC} or the fantastic X possibilities of {\TeX}", X journal = j-MIKROCOMP-Z, X volume = "7", X pages = "60--66", X month = jul, X year = "1989", X CODEN = "MDMZD", X ISSN = "0720-4442", X bibdate = "Wed Aug 31 00:54:39 MDT 1994", X abstract = "TeX is a printing composition system of the highest X quality, particularly well suited for mathematical and X generally technical manuscripts. Its flexibility and X portability are unequalled. It was developed at the X Stanford University and has ever since been used X whenever great accuracy and efficiency were required. X The operational principle is explained and an example X of its product is shown. (5 Refs.)", X acknowledgement = ack-nhfb, X classification = "C5550 (Printers, plotters and other hard-copy output X devices)", X keywords = "Mathematical manuscripts; TeX; Printing composition X system; Technical manuscripts; Portability; Operational X principle", X language = "German", X thesaurus = "Printers", } X @Book{Denton:1992:GVC, X author = "Craig Denton", X title = "Graphics for visual communication", X publisher = pub-WCB, X address = pub-WCB:adr, X year = "1992", X ISBN = "0-697-08540-6", X LCCN = " P93.5.D46 1992", X acknowledgement = ack-nhfb, X pages = "xv + 383", X acknowledgement = ack-nhfb, X bibdate = "Thu Mar 19 09:23:02 1998", } X @Article{Department:1990:MPP, X author = "{AMS Composition Services Department}", X title = "From Manuscript to Published Paper: How Does it X Happen? Part 2", X journal = j-NAMS, X volume = "37", X number = "8", X pages = "1027--1028", X month = oct, X year = "1990", X ISSN = "0002-9920", } X @Book{DeRose:1994:MHW, X author = "Steven J. DeRose and David G. Durand", X title = "Making Hypermedia Work", X publisher = pub-KLUWER, X address = pub-KLUWER:adr, X pages = "xxii + 384", X year = "1994", X ISBN = "0-7923-9432-1", X LCCN = "QA76.76.I59 D47 1994", X bibdate = "Sat Sep 10 12:43:32 1994", X price = "UK\pounds 51.00, US\$68.00", X acknowledgement = ack-hg, X annote = "Harry Gaylord comments: ``Much nonsense and hype has X been written about hypertext. Much software has been X written to produce hypertext documents which are high X on pzaz and whistles and bangs, but requires X painstaking work on the part of the writer. Revising X the documents often means that they have to be X time-consumingly debugged in obscure ways before they X can be used again. Documents cannot be used in any X other system except the one they were written in. More X importantly often the documents have to be broken up X first into structures which are not inherent to the X document. A library card catalogue contains cards, a X newspaper or a novel doesn't. To force a novel into X cards violates the very structure of the document. X Other so-called hypertext systems are organised very X simply and do what they claim to do very well, but X documents produced in them will have to be X substantially revised when more facilities are X required. To create order out of this, ISO X JTC1/SC18/WG8 created a group to draw up a standard for X hypertext. The result of this work is ISO 10744:1992 X HyTime. About the same time, the Text Encoding X Initiative appointed a hypertext committee of four X members. Its chair was DeRose and the members include X Durand, Ed Fox, and Eve Wilson. The committee has X proposed important revisions and extensions to HyTime, X and the TEI Guidelines include all the query facilities X of HyTime plus other extensions. If these extensions X are found useful in the wider community, they will be X incorporated in the next revision of HyTime. This is X the first book to appear on HyTime. Eliot Kimber is X preparing one which is scheduled to appear in August, X and Charles Goldfarb is working on another which is X being modeled on the SGML Handbook in that it will X include the commented standard itself. This book is X divided into three parts. Part 1 is called Introducing X HyTime. This is the most general and provides an X excellent starting point for anyone who needs to know X what HyTime is, what its relation to SGML is, what its X modules are, and why anyone who is producing or using X electronic documents needs SGML and/or HyTime products. X For many this will be enough to convince them that they X should hand the book on to their software purchasers X and implementors to get to work. Part 2 is entitled X Basic HyTime. The chapters include Basic Measurement, X Hyperlinks, Locating Data Objects, The HyTime Query X Language, and Modifying a DTD for HyTime. Many hours of X my time would have been saved if I had received this X section when I received the draft of the standard X itself. When one reads this part carefully, one has a X clear idea of most of the details involved in HyTime. X One of my strongest criticisms of HyTime is the obscure X short names. They could have been clear if the X committee had not decided to limit name lengths to less X than 8 letters as was specified in SGML Reference X Syntax. As it is only insiders in the work on the X standard itself can understand what they actually refer X to. Part 3 is entitled Intermediate HyTime. Here are X the extra detailed treatments of aspects of HyTime X which implementors need to know. Appendixes include the X HyTime Meta-DTD with its corrections and Graphic X Notations. The book is concluded with a bibliography, X glossary, and index. If I understand the authors, the X highest level of hypertext which can be reached at the X moment is Intermediate, not Advanced. The field is too X young. They are, of course, right in this. It is no X accident that these authors are part of that Brown X group which has spread out to Boston now. It has been X the major center for producing systems for structuring X and linking highly complex documents and have built X extensive experience since the 1960's. The didactic X arrangement is impressive. Basic issues are discussed X clearly first and nuances are added later when they are X needed by the reader. It is not often that in a very X complex subject the authors so clearly have understood X what is forest and what is trees, and have been such X good guides to the uninitiated and initiated alike. X With this book I have a proper coursebook for my X students this year. If you want to know about X electronic documents which are usable in more than X one system and future-oriented, then you should buy X this book without waiting for anything else to X appear. It provides an excellent introduction for X the general reader, and thorough treatment for those X who need it.''", } X @InCollection{Desarmenien:1984:DOM, X author = "Jacques D{\'e}sarm{\'e}nien", X booktitle = "How to run {\TeX} in {French}", X title = "La division par ordinateur des mots fran\c cais avec X le logiciel {\TeX}", X publisher = inst-STANFORD, X address = inst-STANFORD:adr, X pages = "19--42", X year = "1984", X bibdate = "Sat Mar 12 18:15:30 1994", X acknowledgement = ack-hk, } X @TechReport{Desarmenien:1984:HRT, X author = "Jacques D{\'e}sarm{\'e}nien", X title = "How to run {\TeX} in {French}", X number = "STAN-CS-84-1013", X institution = inst-STANFORD, X address = inst-STANFORD:adr, X month = aug, X year = "1984", X bibdate = "Sat Feb 10 14:55:27 1996", } X @InProceedings{Desarmenien:1985:UTF, X author = "Jacques D{\'e}sarm{\'e}nien", X title = "The {Use} of {\TeX} in {French}: {Hyphenation} and X {Typography}", X crossref