[comp.text] BibTeX in C, 5/6

rokicki@rocky.STANFORD.EDU (Tomas Rokicki) (12/30/87)

---cut here---
          if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
          else 
          { bstidprint () ; 
            
            { tputs ( cnull , "entry" ) ;
              bsterrprintandlookfo () ; 
              goto lab10 ; 
              } 
            } 
          } 
        
#ifdef TRACE
        traceprtoken () ; 
        tputs ( logfile , " is a string 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 ] = 7 ; 
        ilkinfo [ fnloc ] = numentstrs ; 
        incr ( numentstrs ) ; 
        
        { if ( ( ! eatbstwhitespace () ) ) 
          { eatbstprint () ; 
            
            { tputs ( cnull , "entry" ) ;
              bsterrprintandlookfo () ; 
              goto lab10 ; 
              } 
            } 
          } 
        } 
      incr ( bufptr2 ) ; 
    lab10 : ; 
    } 
  bstexecutecommand () { /* 10 */ if ( ( ! readseen ) ) 
    { tputs ( cnull , "illegal, execute command before read command" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { scanidentifier ( 125 , 37 ) ; 
      if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
      else 
      { bstidprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is a to be executed function\n" ) ;
    
#endif
    lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , false 
    ) ; 
    if ( ( ! hashfound ) ) 
    { printtoken () ; 
      
      { tputs ( cnull , " is an unknown function" ) ;
        bstwarnprint () ; 
        } 
      } 
    else if ( ( ( fntype [ fnloc ] != 0 ) && ( fntype [ fnloc ] != 2 ) ) ) 
    printfunctiontypebst () ; 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 125 ) ) 
      { bstrightbraceprint () ; 
        
        { tputs ( cnull , "execute" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { initcommandexecution () ; 
      messwithentries = false ; 
      executefn ( fnloc ) ; 
      checkcommandexecutio () ; 
      } 
    lab10 : ; 
    } 
  bstfunctioncommand () { /* 10 */ 
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { scanidentifier ( 125 , 37 ) ; 
      if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
      else 
      { bstidprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is a wizard-defined function\n" ) ;
    
#endif
    lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    wizloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , true 
    ) ; 
    
    { if ( ( hashfound ) ) 
      { alreadyseenfunctionp ( wizloc ) ; 
        goto lab10 ; 
        } 
      } 
    fntype [ wizloc ] = 2 ; 
    if ( ( hashtext [ wizloc ] == sdefault ) ) bdefault = wizloc ; 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 125 ) ) 
      { bstrightbraceprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "function" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    scanfndef ( wizloc ) ; 
    lab10 : ; 
    } 
  bstintegerscommand () { /* 10 */ 
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "integers" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "integers" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "integers" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    while ( ( buffer [ bufptr2 ] != 125 ) ) 
      { 
        { scanidentifier ( 125 , 37 ) ; 
          if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
          else 
          { bstidprint () ; 
            
            { tputs ( cnull , "integers" ) ;
              bsterrprintandlookfo () ; 
              goto lab10 ; 
              } 
            } 
          } 
        
#ifdef TRACE
        traceprtoken () ; 
        tputs ( logfile , " is an integer global-variable\n" ) ;
        
#endif
        lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
        fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
        true ) ; 
        
        { if ( ( hashfound ) ) 
          { alreadyseenfunctionp ( fnloc ) ; 
            goto lab10 ; 
            } 
          } 
        fntype [ fnloc ] = 8 ; 
        ilkinfo [ fnloc ] = 0 ; 
        
        { if ( ( ! eatbstwhitespace () ) ) 
          { eatbstprint () ; 
            
            { tputs ( cnull , "integers" ) ;
              bsterrprintandlookfo () ; 
              goto lab10 ; 
              } 
            } 
          } 
        } 
      incr ( bufptr2 ) ; 
    lab10 : ; 
    } 
  bstiteratecommand () { /* 10 */ if ( ( ! readseen ) ) 
    { tputs ( cnull , "illegal, iterate command before read command" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { scanidentifier ( 125 , 37 ) ; 
      if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
      else 
      { bstidprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is a to be iterated function\n" ) ;
    
#endif
    lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , false 
    ) ; 
    if ( ( ! hashfound ) ) 
    { printtoken () ; 
      
      { tputs ( cnull , " is an unknown function" ) ;
        bstwarnprint () ; 
        } 
      } 
    else if ( ( ( fntype [ fnloc ] != 0 ) && ( fntype [ fnloc ] != 2 ) ) ) 
    printfunctiontypebst () ; 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 125 ) ) 
      { bstrightbraceprint () ; 
        
        { tputs ( cnull , "iterate" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { initcommandexecution () ; 
      messwithentries = true ; 
      sortciteptr = 0 ; 
      while ( ( sortciteptr < numcites ) ) 
        { citeptr = sortedcites [ sortciteptr ] ; 
          
#ifdef TRACE
          traceprpoolstr ( hashtext [ fnloc ] ) ; 
          tputs ( logfile , " to be iterated on " ) ;
          traceprpoolstr ( citelist [ citeptr ] ) ; 
          tputc ( logfile , 10 ) ;
          
#endif
          executefn ( fnloc ) ; 
          checkcommandexecutio () ; 
          incr ( sortciteptr ) ; 
          } 
        } 
    lab10 : ; 
    } 
  bstmacrocommand () { /* 10 */ if ( ( readseen ) ) 
    { tputs ( cnull , "illegal, macro command after read command" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { scanidentifier ( 125 , 37 ) ; 
      if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
      else 
      { bstidprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is a macro\n" ) ;
    
#endif
    lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 13 
    , true ) ; 
    
    { if ( ( hashfound ) ) 
      { alreadyseenfunctionp ( macronameloc ) ; 
        goto lab10 ; 
        } 
      } 
    fntype [ macronameloc ] = 1 ; 
    ilkinfo [ macronameloc ] = macronameloc ; 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 125 ) ) 
      { bstrightbraceprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 123 ) ) 
      { bstleftbraceprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    if ( ( buffer [ bufptr2 ] != 34 ) ) 
    { tputs ( cnull , "a macro definition must be \"-delimited" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    incr ( bufptr2 ) ; 
    if ( ( ! scan1 ( 34 ) ) ) 
    { tputs ( cnull , "no `\"' to end macro string literal" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    
#ifdef TRACE
    tputs ( logfile , "\"" ) ;
    traceprtoken () ; 
    tputs ( logfile , "\"" ) ;
    tputs ( logfile , " is a macro string\n" ) ;
    
#endif
    macrodefloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 0 , 
    true ) ; 
    fntype [ macrodefloc ] = 4 ; 
    ilkinfo [ macronameloc ] = macrodefloc ; 
    incr ( bufptr2 ) ; 
    
    { if ( ( ! eatbstwhitespace () ) ) 
      { eatbstprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
    { if ( ( buffer [ bufptr2 ] != 125 ) ) 
      { bstrightbraceprint () ; 
        
        { tputs ( cnull , "macro" ) ;
          bsterrprintandlookfo () ; 
          goto lab10 ; 
          } 
        } 
      incr ( bufptr2 ) ; 
      } 
    lab10 : ; 
    } 
  getbibcommandorentry () { /* 10 */ while ( ( ! scan1 ( 64 ) ) ) 
      { if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) goto lab10 ; 
        incr ( biblinenum ) ; 
        bufptr2 = 0 ; 
        } 
      if ( ( buffer [ bufptr2 ] != 64 ) ) 
    { tputs ( cnull , "this can't happen---an \"" ) ;
      tputc ( cnull , xchr [ 64 ]  ) ;
      tputs ( cnull , "\" disappeared" ) ;
      biberrprint () ; 
      goto lab10 ; 
      } 
    incr ( bufptr2 ) ; 
    
    { if ( ( ! eatbibwhitespace () ) ) 
      { eatbibprint () ; 
        goto lab10 ; 
        } 
      } 
    scanidentifier ( 123 , 40 ) ; 
    
    { if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
      else 
      { bibidprint () ; 
        
        { tputs ( cnull , "an entry type" ) ;
          biberrprint () ; 
          goto lab10 ; 
          } 
        } 
      } 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is an entry type or a database-file command\n" ) ;
    
#endif
    lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
    ) , 12 , false ) ] ; 
    if ( ( hashfound ) ) 
    { switch ( commandnum ) 
      { case 0 : 
        
        { goto lab10 ; 
          } 
        break ; 
        case 1 : 
        
        { 
          { if ( ( ! eatbibwhitespace () ) ) 
            { eatbibprint () ; 
              goto lab10 ; 
              } 
            } 
          if ( ( buffer [ bufptr2 ] == 123 ) ) rightouterdelim = 125 ; 
          else if ( ( buffer [ bufptr2 ] == 40 ) ) rightouterdelim = 41 ; 
          else 
          { biboneoftwoprint ( 123 , 40 ) ; 
            goto lab10 ; 
            } 
          incr ( bufptr2 ) ; 
          
          { if ( ( ! eatbibwhitespace () ) ) 
            { eatbibprint () ; 
              goto lab10 ; 
              } 
            } 
          scanidentifier ( 61 , 61 ) ; 
          
          { if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
            else 
            { bibidprint () ; 
              
              { tputs ( cnull , "a string name" ) ;
                biberrprint () ; 
                goto lab10 ; 
                } 
              } 
            } 
          
#ifdef TRACE
          traceprtoken () ; 
          tputs ( logfile , " is a database-defined macro\n" ) ;
          
#endif
          lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
          macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
          , 13 , true ) ; 
          fntype [ macronameloc ] = 1 ; 
          ilkinfo [ macronameloc ] = macronameloc ; 
          
          { if ( ( ! eatbibwhitespace () ) ) 
            { eatbibprint () ; 
              goto lab10 ; 
              } 
            } 
          if ( ( buffer [ bufptr2 ] != 61 ) ) 
          { bibequalssignprint () ; 
            goto lab10 ; 
            } 
          incr ( bufptr2 ) ; 
          
          { if ( ( ! eatbibwhitespace () ) ) 
            { eatbibprint () ; 
              goto lab10 ; 
              } 
            } 
          storefield = true ; 
          if ( ( buffer [ bufptr2 ] == 123 ) ) 
          { rightstrdelim = 125 ; 
            if ( ( ! scanbalancedbraces () ) ) goto lab10 ; 
            } 
          else if ( ( buffer [ bufptr2 ] == 34 ) ) 
          { rightstrdelim = 34 ; 
            if ( ( ! scanbalancedbraces () ) ) goto lab10 ; 
            } 
          else 
          { biboneoftwoprint ( 123 , 34 ) ; 
            goto lab10 ; 
            } 
          ilkinfo [ macronameloc ] = fieldvalloc ; 
          
          { if ( ( ! eatbibwhitespace () ) ) 
            { eatbibprint () ; 
              goto lab10 ; 
              } 
            } 
          if ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
          { tputs ( cnull , "missing \"" ) ;
            tputc ( cnull , xchr [ rightouterdelim ]  ) ;
            tputs ( cnull , "\" in string command" ) ;
            biberrprint () ; 
            goto lab10 ; 
            } 
          incr ( bufptr2 ) ; 
          goto lab10 ; 
          } 
        break ; 
        default : 
        
        { tputs ( cnull , "this can't happen---unknown database-file command" ) ;
          biberrprint () ; 
          goto lab10 ; 
          } 
        break ; 
        } } 
    else 
    { entrytypeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 
      11 , false ) ; 
      if ( ( ( ! hashfound ) || ( fntype [ entrytypeloc ] != 2 ) ) ) 
      typeexists = false ; 
      else typeexists = true ; 
      } 
    
    { if ( ( ! eatbibwhitespace () ) ) 
      { eatbibprint () ; 
        goto lab10 ; 
        } 
      } 
    if ( ( buffer [ bufptr2 ] == 123 ) ) rightouterdelim = 125 ; 
    else if ( ( buffer [ bufptr2 ] == 40 ) ) rightouterdelim = 41 ; 
    else 
    { biboneoftwoprint ( 123 , 40 ) ; 
      goto lab10 ; 
      } 
    incr ( bufptr2 ) ; 
    
    { if ( ( ! eatbibwhitespace () ) ) 
      { eatbibprint () ; 
        goto lab10 ; 
        } 
      } 
    if ( ( rightouterdelim == 41 ) ) 
    { if ( ( scan1white ( 44 ) ) ) ; 
      } 
    else if ( ( scan2white ( 44 , 125 ) ) ) ; 
    
#ifdef TRACE
    traceprtoken () ; 
    tputs ( logfile , " is a database key\n" ) ;
    
#endif
    tmpptr = bufptr1 ; 
    while ( ( tmpptr < bufptr2 ) ) 
      { exbuf [ tmpptr ] = buffer [ tmpptr ] ; 
        incr ( tmpptr ) ; 
        } 
      lowercase ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
    lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 10 , 
    false ) ; 
    if ( ( ! hashfound ) ) storeentry = false ; 
    else 
    { storeentry = true ; 
      if ( ( typelist [ ilkinfo [ lcciteloc ] ] != 0 ) ) 
      { tputs ( cnull , "database entry \"" ) ;
        printtoken () ; 
        tputs ( cnull , "\" is a duplicate\n" ) ;
        bibwarnprint () ; 
        } 
      if ( ( typeexists ) ) typelist [ ilkinfo [ lcciteloc ] ] = entrytypeloc 
      ; 
      else 
      { typelist [ ilkinfo [ lcciteloc ] ] = 5001 ; 
        tputs ( cnull , "the entry type for database entry \"" ) ;
        printtoken () ; 
        tputs ( cnull , "\" is not style-file defined\n" ) ;
        bibwarnprint () ; 
        } 
      } 
    
    { if ( ( ! eatbibwhitespace () ) ) 
      { eatbibprint () ; 
        goto lab10 ; 
        } 
      } 
    while ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
      { if ( ( buffer [ bufptr2 ] != 44 ) ) 
        { biboneoftwoprint ( 44 , rightouterdelim ) ; 
          goto lab10 ; 
          } 
        incr ( bufptr2 ) ; 
        
        { if ( ( ! eatbibwhitespace () ) ) 
          { eatbibprint () ; 
            goto lab10 ; 
            } 
          } 
        scanidentifier ( 61 , 61 ) ; 
        
        { if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
          else 
          { bibidprint () ; 
            
            { tputs ( cnull , "a field name" ) ;
              biberrprint () ; 
              goto lab10 ; 
              } 
            } 
          } 
        
#ifdef TRACE
        traceprtoken () ; 
        tputs ( logfile , " is a field name\n" ) ;
        
#endif
        storefield = false ; 
        if ( ( storeentry ) ) 
        { lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
          fieldnameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
          , 11 , false ) ; 
          if ( ( ( hashfound ) && ( fntype [ fieldnameloc ] == 5 ) ) ) 
          storefield = true ; 
          } 
        
        { if ( ( ! eatbibwhitespace () ) ) 
          { eatbibprint () ; 
            goto lab10 ; 
            } 
          } 
        if ( ( buffer [ bufptr2 ] != 61 ) ) 
        { bibequalssignprint () ; 
          goto lab10 ; 
          } 
        incr ( bufptr2 ) ; 
        
        { if ( ( ! eatbibwhitespace () ) ) 
          { eatbibprint () ; 
            goto lab10 ; 
            } 
          } 
        switch ( buffer [ bufptr2 ] ) 
        { case 123 : 
          
          { rightstrdelim = 125 ; 
            if ( ( ! scanbalancedbraces () ) ) goto lab10 ; 
            } 
          break ; 
          case 34 : 
          
          { rightstrdelim = 34 ; 
            if ( ( ! scanbalancedbraces () ) ) goto lab10 ; 
            } 
          break ; 
          case 48 : 
          case 49 : 
          case 50 : 
          case 51 : 
          case 52 : 
          case 53 : 
          case 54 : 
          case 55 : 
          case 56 : 
          case 57 : 
          
          { if ( ( ! scannonneginteger () ) ) tputs ( cnull , "this can't happen---a digit disappeared\n" ) ;
            if ( ( storefield ) ) 
            { 
#ifdef TRACE
              traceprtoken () ; 
              tputs ( logfile , " is a number\n" ) ;
              
#endif
              fieldvalloc = strlookup ( buffer , bufptr1 , ( bufptr2 - 
              bufptr1 ) , 0 , true ) ; 
              fntype [ fieldvalloc ] = 4 ; 
              } 
            } 
          break ; 
          default : 
          
          { scanidentifier ( 44 , rightouterdelim ) ; 
            
            { if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) ; 
              else 
              { bibidprint () ; 
                
                { tputs ( cnull , "a string name" ) ;
                  biberrprint () ; 
                  goto lab10 ; 
                  } 
                } 
              } 
            if ( ( storefield ) ) 
            { 
#ifdef TRACE
              traceprtoken () ; 
              tputs ( logfile , " is a macro\n" ) ;
              
#endif
              lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
              macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - 
              bufptr1 ) , 13 , false ) ; 
              if ( ( ! hashfound ) ) 
              { tputs ( cnull , "the string name \"" ) ;
                printtoken () ; 
                tputs ( cnull , "\" for database entry \"" ) ;
                printpoolstr ( citelist [ ilkinfo [ lcciteloc ] ] ) ; 
                tputs ( cnull , "\" is undefined\n" ) ;
                bibwarnprint () ; 
                storefield = false ; 
                } 
              else fieldvalloc = ilkinfo [ macronameloc ] ; 
              } 
            } 
          break ; 
          } 
        { if ( ( ! eatbibwhitespace () ) ) 
          { eatbibprint () ; 
            goto lab10 ; 
            } 
          } 
        if ( ( storefield ) ) 
        { fieldptr = ilkinfo [ lcciteloc ] * numfields + ilkinfo [ 
          fieldnameloc ] ; 
          if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
          { tputs ( cnull , "I'm overwriting a field for database entry \"" ) ;
            printpoolstr ( citelist [ ilkinfo [ lcciteloc ] ] ) ; 
            tputs ( cnull , "\"\n" ) ;
            bibwarnprint () ; 
            } 
          fieldinfo [ fieldptr ] = fieldvalloc ; 
          } 
        } 
      incr ( bufptr2 ) ; 
    lab10 : ; 
    } 
  bstreadcommand () { /* 10 */ if ( ( readseen ) ) 
    { tputs ( cnull , "illegal, another read command" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    readseen = true ; 
    if ( ( ! entryseen ) ) 
    { tputs ( cnull , "illegal, read command before entry command" ) ;
      bsterrprintandlookfo () ; 
      goto lab10 ; 
      } 
    readperformed = true ; 
    svptr1 = bufptr2 ; 
    svptr2 = last ; 
    tmpptr = svptr1 ; 
    while ( ( tmpptr < svptr2 ) ) 
      { svbuffer [ tmpptr ] = buffer [ tmpptr ] ; 
        incr ( tmpptr ) ; 
        } 
      if ( ( numfields * numcites > maxfields ) ) 
    { tputi ( cnull , numfields * numcites  ) ;
      tputs ( cnull , " " ) ;
      
      { tputs ( cnull , "Sorry, you've exceeded BibTeX's total number of fields " ) ;
        tputi ( cnull , maxfields  ) ;
        tputc ( cnull , 10 ) ;
        jumpout ( 1 ) ; 
        } 
      } 
    fieldptr = 0 ; 
    while ( ( fieldptr < numfields * numcites ) ) 
      { fieldinfo [ fieldptr ] = 0 ; 
        incr ( fieldptr ) ; 
        } 
      if ( ( numentints * numcites > maxentints ) ) 
    { tputi ( cnull , numentints * numcites  ) ;
      tputs ( cnull , " " ) ;
      
      { tputs ( cnull , "Sorry, you've exceeded BibTeX's total number of integer entry-variables " ) ;
        tputi ( cnull , maxentints  ) ;
        tputc ( cnull , 10 ) ;
        jumpout ( 1 ) ; 
        } 
      } 
---cut here---