rokicki@rocky.STANFORD.EDU (Tomas Rokicki) (12/30/87)
---cut here---
else if ( ( strpool [ spptr ] == 125 ) )
{ bracesunbalancedcomp () ;
incr ( spptr ) ;
}
else
{
{ if ( ( exbufptr == bufsize ) )
{ tputs ( cnull , "Sorry, you've exceeded BibTeX's execution buffer size " ) ;
tputi ( cnull , bufsize ) ;
tputc ( cnull , 10 ) ;
jumpout ( 1 ) ;
}
exbuf [ exbufptr ] = strpool [ spptr ] ;
incr ( exbufptr ) ;
}
incr ( spptr ) ;
}
if ( ( spbracelevel > 0 ) ) bracesunbalancedcomp () ;
exbuflength = exbufptr ;
addpoolbufandpush () ;
}
}
xinttochr () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 0 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 0 ) ;
pushlitstk ( snull , 1 ) ;
}
else if ( ( ( poplit1 < 0 ) || ( poplit1 > 127 ) ) )
{
{ tputi ( cnull , poplit1 ) ;
tputs ( cnull , " isn't valid ASCII" ) ;
bstexwarnprint () ;
}
pushlitstk ( snull , 1 ) ;
}
else
{ exbuf [ 0 ] = poplit1 ;
exbuflength = 1 ;
addpoolbufandpush () ;
}
}
xinttostr () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 0 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 0 ) ;
pushlitstk ( snull , 1 ) ;
}
else
{ exbuflength = inttoASCII ( poplit1 , exbuf , 0 ) ;
addpoolbufandpush () ;
}
}
xmissing () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else if ( ( ( poptyp1 != 1 ) && ( poptyp1 != 3 ) ) )
{ printstklit ( poplit1 , poptyp1 ) ;
tputs ( cnull , ", not a string or missing-field\n" ) ;
{ tputs ( cnull , " " ) ;
bstexwarnprint () ;
}
pushlitstk ( 0 , 0 ) ;
}
else if ( ( poptyp1 == 3 ) ) pushlitstk ( 1 , 0 ) ;
else pushlitstk ( 0 , 0 ) ;
}
xnumnames () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 1 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 1 ) ;
pushlitstk ( 0 , 0 ) ;
}
else
{ exbuflength = 0 ;
addbufpool ( poplit1 ) ;
exbufptr = 0 ;
numnames = 0 ;
while ( ( exbufptr < exbuflength ) )
{ namescanforand ( poplit1 ) ;
incr ( numnames ) ;
}
pushlitstk ( numnames , 0 ) ;
}
}
xpurify () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 1 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 1 ) ;
pushlitstk ( snull , 1 ) ;
}
else
{ exbuflength = 0 ;
addbufpool ( poplit1 ) ;
exbufxptr = 0 ;
exbufptr = 0 ;
while ( ( exbufptr < exbuflength ) )
{ if ( ( lexclass [ exbuf [ exbufptr ] ] == 1 ) )
{ exbuf [ exbufxptr ] = 32 ;
incr ( exbufxptr ) ;
}
else if ( ( ( lexclass [ exbuf [ exbufptr ] ] == 2 ) || ( lexclass
[ exbuf [ exbufptr ] ] == 3 ) ) )
{ exbuf [ exbufxptr ] = exbuf [ exbufptr ] ;
incr ( exbufxptr ) ;
}
incr ( exbufptr ) ;
}
exbuflength = exbufxptr ;
addpoolbufandpush () ;
}
}
xquote () { exbuf [ 0 ] = 34 ;
exbuflength = 1 ;
addpoolbufandpush () ;
}
xsubstring () { poplit1 = poplitstk ( poptyp1 ) ;
poplit2 = poplitstk ( poptyp2 ) ;
poplit3 = poplitstk ( poptyp3 ) ;
if ( ( poptyp1 != 0 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 0 ) ;
pushlitstk ( snull , 1 ) ;
}
else if ( ( poptyp2 != 0 ) )
{ printwrongstklit ( poplit2 , poptyp2 , 0 ) ;
pushlitstk ( snull , 1 ) ;
}
else if ( ( poptyp3 != 1 ) )
{ printwrongstklit ( poplit3 , poptyp3 , 1 ) ;
pushlitstk ( snull , 1 ) ;
}
else
{ exbuflength = 0 ;
addbufpool ( poplit3 ) ;
if ( ( ( poplit1 <= 0 ) || ( poplit2 == 0 ) || ( poplit2 > exbuflength
) || ( poplit2 + (int) exbuflength < 0 ) ) ) exbuflength = 0 ;
else if ( ( poplit2 > 0 ) )
{ if ( ( poplit1 > exbuflength - ( poplit2 - 1 ) ) ) poplit1 =
exbuflength - ( poplit2 - 1 ) ;
exbufptr = 0 ;
while ( ( exbufptr < poplit1 ) )
{ exbuf [ exbufptr ] = exbuf [ exbufptr + ( poplit2 - 1 ) ] ;
incr ( exbufptr ) ;
}
exbuflength = exbufptr ;
}
else
{ poplit2 = - poplit2 ;
if ( ( poplit1 > exbuflength - ( poplit2 - 1 ) ) ) poplit1 =
exbuflength - ( poplit2 - 1 ) ;
exbufptr = 0 ;
while ( ( exbufptr < poplit1 ) )
{ exbuf [ exbufptr ] = exbuf [ exbufptr + exbuflength - ( poplit2 -
1 ) - poplit1 ] ;
incr ( exbufptr ) ;
}
exbuflength = exbufptr ;
}
addpoolbufandpush () ;
}
}
xswap () { poplit1 = poplitstk ( poptyp1 ) ;
poplit2 = poplitstk ( poptyp2 ) ;
if ( ( poptyp1 != 1 ) )
{ pushlitstk ( poplit1 , poptyp1 ) ;
if ( ( poptyp2 != 1 ) ) pushlitstk ( poplit2 , poptyp2 ) ;
else
{ exbuflength = 0 ;
addbufpool ( poplit2 ) ;
addpoolbufandpush () ;
}
}
else if ( ( poptyp2 != 1 ) )
{ exbuflength = 0 ;
addbufpool ( poplit1 ) ;
addpoolbufandpush () ;
pushlitstk ( poplit2 , poptyp2 ) ;
}
else
{ exbuflength = 0 ;
addbufpool ( poplit2 ) ;
svptr2 = exbuflength ;
tmpptr = 0 ;
while ( ( tmpptr < svptr2 ) )
{ svbuffer [ tmpptr ] = exbuf [ tmpptr ] ;
incr ( tmpptr ) ;
}
exbuflength = 0 ;
addbufpool ( poplit1 ) ;
addpoolbufandpush () ;
exbuflength = svptr2 ;
tmpptr = 0 ;
while ( ( tmpptr < exbuflength ) )
{ exbuf [ tmpptr ] = svbuffer [ tmpptr ] ;
incr ( tmpptr ) ;
}
addpoolbufandpush () ;
}
}
xtype () { if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else if ( ( ( typelist [ citeptr ] == 5001 ) || ( typelist [ citeptr ] ==
0 ) ) ) pushlitstk ( snull , 1 ) ;
else pushlitstk ( hashtext [ typelist [ citeptr ] ] , 1 ) ;
}
xwidth () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 1 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 1 ) ;
pushlitstk ( 0 , 0 ) ;
}
else
{ stringwidth = 0 ;
spptr = strstart [ poplit1 ] ;
while ( ( spptr < strstart [ poplit1 + 1 ] ) )
{ stringwidth = stringwidth + charwidth [ strpool [ spptr ] ] ;
incr ( spptr ) ;
}
pushlitstk ( stringwidth , 0 ) ;
}
}
xwrite () { poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 1 ) ) printwrongstklit ( poplit1 , poptyp1 , 1 ) ;
else addoutpool ( poplit1 ) ;
}
zexecutefn ( exfnloc )
hashloc exfnloc ;
{ /* 51 */ integer rpoplt1, rpoplt2 ;
stktype rpoptp1, rpoptp2 ;
wizfnloc wizptr ;
#ifdef TRACE
tputs ( logfile , "execute_fn `" ) ;
traceprpoolstr ( hashtext [ exfnloc ] ) ;
tputs ( logfile , "'\n" ) ;
#endif
switch ( fntype [ exfnloc ] )
{ case 0 :
{
#ifdef STAT
incr ( executioncount [ ilkinfo [ exfnloc ] ] ) ;
#endif
switch ( ilkinfo [ exfnloc ] )
{ case 0 :
xequals () ;
break ;
case 1 :
xgreaterthan () ;
break ;
case 2 :
xlessthan () ;
break ;
case 3 :
xplus () ;
break ;
case 4 :
xminus () ;
break ;
case 5 :
xconcatenate () ;
break ;
case 6 :
xgets () ;
break ;
case 7 :
xaddperiod () ;
break ;
case 8 :
{ if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else if ( ( typelist [ citeptr ] == 5001 ) ) executefn ( bdefault
) ;
else if ( ( typelist [ citeptr ] == 0 ) ) ;
else executefn ( typelist [ citeptr ] ) ;
}
break ;
case 9 :
xchangecase () ;
break ;
case 10 :
xchrtoint () ;
break ;
case 11 :
xcite () ;
break ;
case 12 :
xduplicate () ;
break ;
case 13 :
xformatname () ;
break ;
case 14 :
{ poplit1 = poplitstk ( poptyp1 ) ;
poplit2 = poplitstk ( poptyp2 ) ;
poplit3 = poplitstk ( poptyp3 ) ;
if ( ( poptyp1 != 2 ) ) printwrongstklit ( poplit1 , poptyp1 , 2
) ;
else if ( ( poptyp2 != 2 ) ) printwrongstklit ( poplit2 , poptyp2
, 2 ) ;
else if ( ( poptyp3 != 0 ) ) printwrongstklit ( poplit3 , poptyp3
, 0 ) ;
else if ( ( poplit3 > 0 ) ) executefn ( poplit2 ) ;
else executefn ( poplit1 ) ;
}
break ;
case 15 :
xinttochr () ;
break ;
case 16 :
xinttostr () ;
break ;
case 17 :
xmissing () ;
break ;
case 18 :
{ outputbblline () ;
}
break ;
case 19 :
xnumnames () ;
break ;
case 20 :
{ poplit1 = poplitstk ( poptyp1 ) ;
}
break ;
case 21 :
xpurify () ;
break ;
case 22 :
xquote () ;
break ;
case 23 :
{ ;
}
break ;
case 24 :
{ popwholestack () ;
}
break ;
case 25 :
xsubstring () ;
break ;
case 26 :
xswap () ;
break ;
case 27 :
{ poptopandprint () ;
}
break ;
case 28 :
xtype () ;
break ;
case 29 :
{ rpoplt1 = poplitstk ( rpoptp1 ) ;
rpoplt2 = poplitstk ( rpoptp2 ) ;
if ( ( rpoptp1 != 2 ) ) printwrongstklit ( rpoplt1 , rpoptp1 , 2
) ;
else if ( ( rpoptp2 != 2 ) ) printwrongstklit ( rpoplt2 , rpoptp2
, 2 ) ;
else while ( true )
{ executefn ( rpoplt2 ) ;
poplit1 = poplitstk ( poptyp1 ) ;
if ( ( poptyp1 != 0 ) )
{ printwrongstklit ( poplit1 , poptyp1 , 0 ) ;
goto lab51 ;
}
else if ( ( poplit1 > 0 ) ) executefn ( rpoplt1 ) ;
else goto lab51 ;
}
lab51 : ;
}
break ;
case 30 :
xwidth () ;
break ;
case 31 :
xwrite () ;
break ;
default :
tputs ( cnull , "this can't happen---unknown built-in function\n" ) ;
break ;
} }
break ;
case 1 :
pushlitstk ( hashtext [ ilkinfo [ exfnloc ] ] , 1 ) ;
break ;
case 2 :
{ wizptr = ilkinfo [ exfnloc ] ;
while ( ( wizfunctions [ wizptr ] != 5001 ) )
{ if ( ( wizfunctions [ wizptr ] != 0 ) ) executefn ( wizfunctions
[ wizptr ] ) ;
else
{ incr ( wizptr ) ;
pushlitstk ( wizfunctions [ wizptr ] , 2 ) ;
}
incr ( wizptr ) ;
}
}
break ;
case 3 :
pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ;
break ;
case 4 :
pushlitstk ( hashtext [ exfnloc ] , 1 ) ;
break ;
case 5 :
{ if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else if ( ( fieldinfo [ citeptr * numfields + ilkinfo [ exfnloc ] ]
== 0 ) ) pushlitstk ( hashtext [ exfnloc ] , 3 ) ;
else pushlitstk ( hashtext [ fieldinfo [ citeptr * numfields +
ilkinfo [ exfnloc ] ] ] , 1 ) ;
}
break ;
case 6 :
{ if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else pushlitstk ( entryints [ citeptr * numentints + ilkinfo [
exfnloc ] ] , 0 ) ;
}
break ;
case 7 :
{ if ( ( ! messwithentries ) )
{ tputs ( cnull , "you can't mess with entries here" ) ;
bstexwarnprint () ;
}
else
{ strentptr = citeptr * numentstrs + ilkinfo [ exfnloc ] ;
exbufptr = 0 ;
while ( ( entrystrs [ strentptr ] [ exbufptr ] != 127 ) )
{ exbuf [ exbufptr ] = entrystrs [ strentptr ] [ exbufptr ] ;
incr ( exbufptr ) ;
}
exbuflength = exbufptr ;
addpoolbufandpush () ;
}
}
break ;
case 8 :
pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ;
break ;
case 9 :
{ strglbptr = ilkinfo [ exfnloc ] ;
exbufptr = 0 ;
while ( ( globalstrs [ strglbptr ] [ exbufptr ] != 127 ) )
{ exbuf [ exbufptr ] = globalstrs [ strglbptr ] [ exbufptr ] ;
incr ( exbufptr ) ;
}
exbuflength = exbufptr ;
addpoolbufandpush () ;
}
break ;
default :
tputs ( cnull , "this can't happen---unknown function class\n" ) ;
break ;
} }
auxbibdatacommand () { /* 10 */ if ( ( bibseen ) )
{ tputs ( cnull , "illegal, another \\bibdata command" ) ;
auxerrprint () ;
goto lab10 ;
}
bibseen = true ;
while ( ( buffer [ bufptr2 ] != 125 ) )
{ incr ( bufptr2 ) ;
if ( ( ! scan2white ( 125 , 44 ) ) )
{ tputs ( cnull , "no \"}\" for \\bibdata command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) )
{ tputs ( cnull , "white space in argument to \\bibdata command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) )
{ tputs ( cnull , "stuff after \"}\" for \\bibdata command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( bibptr == maxbibfiles ) )
{ tputs ( cnull , "Sorry, you've exceeded BibTeX's number of database files " ) ;
tputi ( cnull , maxbibfiles ) ;
tputc ( cnull , 10 ) ;
jumpout ( 1 ) ;
}
lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
biblist [ bibptr ] = hashtext [ strlookup ( buffer , bufptr1 , (
bufptr2 - bufptr1 ) , 6 , true ) ] ;
if ( ( hashfound ) )
{ tputs ( cnull , "This database file appears more than once: " ) ;
printbibname () ;
{ tputs ( cnull , " for \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
startname ( biblist [ bibptr ] ) ;
addextension ( sbibextension ) ;
if ( ( ! aopenin ( bibfile [ bibptr ] , texbib ) ) )
{ tputs ( cnull , "I couldn't open database file " ) ;
printbibname () ;
{ tputs ( cnull , " for \\bibdata command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
#ifdef TRACE
traceprpoolstr ( biblist [ bibptr ] ) ;
traceprpoolstr ( sbibextension ) ;
tputs ( logfile , " is a bibdata file\n" ) ;
#endif
incr ( bibptr ) ;
}
lab10 : ;
}
auxbibstylecommand () { /* 10 */ if ( ( bstseen ) )
{ tputs ( cnull , "illegal, another \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
bstseen = true ;
incr ( bufptr2 ) ;
if ( ( ! scan1white ( 125 ) ) )
{ tputs ( cnull , "no \"}\" for \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) )
{ tputs ( cnull , "white space in argument to \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( last > bufptr2 + 1 ) )
{ tputs ( cnull , "stuff after \"}\" for \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
bststr = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 )
, 5 , true ) ] ;
if ( ( hashfound ) )
{ tputs ( cnull , "this can't happen---already encountered style file " ) ;
printbstname () ;
{ tputs ( cnull , " for \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
startname ( bststr ) ;
addextension ( sbstextension ) ;
if ( ( ! aopenin ( bstfile , texinputs ) ) )
{ tputs ( cnull , "I couldn't open style file " ) ;
printbstname () ;
bststr = 0 ;
{ tputs ( cnull , " for \\bibstyle command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
tputs ( cnull , "The style file: " ) ;
printbstname () ;
lab10 : ;
}
auxcitationcommand () { /* 10 */ citationseen = true ;
while ( ( buffer [ bufptr2 ] != 125 ) )
{ incr ( bufptr2 ) ;
if ( ( ! scan2white ( 125 , 44 ) ) )
{ tputs ( cnull , "no \"}\" for \\citation command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) )
{ tputs ( cnull , "white space in argument to \\citation command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) )
{ tputs ( cnull , "stuff after \"}\" for \\citation command" ) ;
auxerrprint () ;
goto lab10 ;
}
#ifdef TRACE
traceprtoken () ;
tputs ( logfile , " \\cite key encountered" ) ;
#endif
tmpptr = bufptr1 ;
while ( ( tmpptr < bufptr2 ) )
{ svbuffer [ tmpptr ] = buffer [ tmpptr ] ;
incr ( tmpptr ) ;
}
lowercase ( svbuffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
lcciteloc = strlookup ( svbuffer , bufptr1 , ( bufptr2 - bufptr1 ) ,
10 , true ) ;
if ( ( hashfound ) )
{
#ifdef TRACE
tputs ( logfile , " previously\n" ) ;
#endif
dummyloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9
, false ) ;
if ( ( ! hashfound ) )
{ tputs ( cnull , "case mismatch between \\cite keys " ) ;
printtoken () ;
tputs ( cnull , " and " ) ;
printpoolstr ( citelist [ ilkinfo [ lcciteloc ] ] ) ;
tputc ( cnull , 10 ) ;
{ tputs ( cnull , " " ) ;
auxerrprint () ;
goto lab10 ;
}
}
}
else
{
#ifdef TRACE
tputc ( logfile , 10 ) ;
#endif
if ( ( citeptr == maxcites ) )
{ tputs ( cnull , "Sorry, you've exceeded BibTeX's number of \\cite keys " ) ;
tputi ( cnull , maxcites ) ;
tputc ( cnull , 10 ) ;
jumpout ( 1 ) ;
}
citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9
, true ) ;
if ( ( hashfound ) )
{ tputs ( cnull , "this can't happen---cite hash error" ) ;
auxerrprint () ;
goto lab10 ;
}
citelist [ citeptr ] = hashtext [ citeloc ] ;
ilkinfo [ citeloc ] = citeptr ;
ilkinfo [ lcciteloc ] = citeptr ;
incr ( citeptr ) ;
}
}
lab10 : ;
}
auxinputcommand () { /* 10 */ boolean auxextensionok ;
incr ( bufptr2 ) ;
if ( ( ! scan1white ( 125 ) ) )
{ tputs ( cnull , "no \"}\" for \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) )
{ tputs ( cnull , "white_space in argument to \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
if ( ( last > bufptr2 + 1 ) )
{ tputs ( cnull , "stuff after \"}\" for \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
incr ( auxptr ) ;
if ( ( auxptr == auxstacksize ) )
{ tputs ( cnull , "Sorry, you've exceeded BibTeX's number of auxiliary files " ) ;
tputi ( cnull , auxstacksize ) ;
tputc ( cnull , 10 ) ;
jumpout ( 1 ) ;
}
auxextensionok = true ;
lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
if ( ( ( bufptr2 - bufptr1 ) < ( strstart [ sauxextension + 1 ] -
strstart [ sauxextension ] ) ) ) auxextensionok = false ;
else if ( ( ! streqbuf ( sauxextension , buffer , bufptr2 - ( strstart [
sauxextension + 1 ] - strstart [ sauxextension ] ) , ( strstart [
sauxextension + 1 ] - strstart [ sauxextension ] ) ) ) ) auxextensionok =
false ;
if ( ( ! auxextensionok ) )
{ printtoken () ;
tputs ( cnull , " has a wrong extension\n" ) ;
decr ( auxptr ) ;
{ tputs ( cnull , " for \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
auxlist [ auxptr ] = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2
- bufptr1 ) , 3 , true ) ] ;
if ( ( hashfound ) )
{ tputs ( cnull , "already encountered file " ) ;
printauxname () ;
decr ( auxptr ) ;
{ tputs ( cnull , " for \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
startname ( auxlist [ auxptr ] ) ;
nameptr = namelength + 1 ;
while ( ( nameptr <= 100 ) )
{ nameoffile [ nameptr ] = ' ' ;
incr ( nameptr ) ;
}
if ( ( ! aopenin ( auxfile [ auxptr ] , "." ) ) )
{ tputs ( cnull , "I couldn't open auxiliary file " ) ;
printauxname () ;
decr ( auxptr ) ;
{ tputs ( cnull , " for \\@input command" ) ;
auxerrprint () ;
goto lab10 ;
}
}
{ tputs ( cnull , "A level-" ) ;
tputi ( cnull , auxptr ) ;
tputs ( cnull , " auxiliary file: " ) ;
}
printauxname () ;
auxlnstack [ auxptr ] = 0 ;
lab10 : ;
}
boolean poptheauxstack () { aclose ( auxfile [ auxptr ] ) ;
if ( ( auxptr == 0 ) )
return ( 1 ) ;
else decr ( auxptr ) ;
return ( 0 ) ;
}
getauxcommandandproc () { /* 10 */ bufptr2 = 0 ;
if ( ( ! scan1 ( 123 ) ) ) goto lab10 ;
commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1
) , 2 , false ) ] ;
if ( ( hashfound ) ) switch ( commandnum )
{ case 0 :
auxbibdatacommand () ;
break ;
case 1 :
auxbibstylecommand () ;
break ;
case 2 :
auxcitationcommand () ;
break ;
case 3 :
auxinputcommand () ;
break ;
default :
{ tputs ( cnull , "this can't happen---unknown auxiliary-file command" ) ;
auxerrprint () ;
goto lab10 ;
}
break ;
} lab10 : ;
}
lastcheckforauxerror () { numcites = citeptr ;
numbibfiles = bibptr ;
if ( ( ! citationseen ) )
{ tputs ( cnull , "I found no \\citation commands" ) ;
auxenderrprint () ;
}
else if ( ( numcites == 0 ) )
{ tputs ( cnull , "I found no \\cite keys" ) ;
auxenderrprint () ;
}
if ( ( ! bibseen ) )
{ tputs ( cnull , "I found no \\bibdata command" ) ;
auxenderrprint () ;
}
else if ( ( numbibfiles == 0 ) )
{ tputs ( cnull , "I found no database files" ) ;
auxenderrprint () ;
}
if ( ( ! bibseen ) )
{ tputs ( cnull , "I found no \\bibstyle command" ) ;
auxenderrprint () ;
}
else if ( ( bststr == 0 ) )
{ tputs ( cnull , "I found no style file" ) ;
auxenderrprint () ;
}
}
bstentrycommand () { /* 10 */ if ( ( entryseen ) )
{ tputs ( cnull , "illegal, another entry command" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
entryseen = true ;
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
{ if ( ( buffer [ bufptr2 ] != 123 ) )
{ bstleftbraceprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
incr ( bufptr2 ) ;
}
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
while ( ( buffer [ bufptr2 ] != 125 ) )
{
{ scanidentifier ( 125 , 37 ) ;
if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ;
else
{ bstidprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
#ifdef TRACE
traceprtoken () ;
tputs ( logfile , " is a field\n" ) ;
#endif
lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 ,
true ) ;
{ if ( ( hashfound ) )
{ alreadyseenfunctionp ( fnloc ) ;
goto lab10 ;
}
}
fntype [ fnloc ] = 5 ;
ilkinfo [ fnloc ] = numfields ;
incr ( numfields ) ;
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
}
incr ( bufptr2 ) ;
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
if ( ( numfields == 0 ) )
{ tputs ( cnull , "---I didn't find any fields" ) ;
bstwarnprint () ;
}
{ if ( ( buffer [ bufptr2 ] != 123 ) )
{ bstleftbraceprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
incr ( bufptr2 ) ;
}
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
while ( ( buffer [ bufptr2 ] != 125 ) )
{
{ scanidentifier ( 125 , 37 ) ;
if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ;
else
{ bstidprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
#ifdef TRACE
traceprtoken () ;
tputs ( logfile , " is an integer entry-variable\n" ) ;
#endif
lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ;
fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 ,
true ) ;
{ if ( ( hashfound ) )
{ alreadyseenfunctionp ( fnloc ) ;
goto lab10 ;
}
}
fntype [ fnloc ] = 6 ;
ilkinfo [ fnloc ] = numentints ;
incr ( numentints ) ;
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
}
incr ( bufptr2 ) ;
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
{ if ( ( buffer [ bufptr2 ] != 123 ) )
{ bstleftbraceprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
incr ( bufptr2 ) ;
}
{ if ( ( ! eatbstwhitespace () ) )
{ eatbstprint () ;
{ tputs ( cnull , "entry" ) ;
bsterrprintandlookfo () ;
goto lab10 ;
}
}
}
while ( ( buffer [ bufptr2 ] != 125 ) )
{
{ scanidentifier ( 125 , 37 ) ;
---cut here---