int intertrace( tsd_t *TSD ) { streng *str=NULL; int retvalue1,rc; tra_tsd_t *tt; tt = (tra_tsd_t *)TSD->tra_tsd; if ( tt->intercount ) { tt->intercount -= 1; if ( tt->intercount == 0 ) { tt->quiet = 0; tt->traceflag = 0; } else return 0; } if ( tt->traceflag ) return 0; if ( tt->notnow == 1 ) { tt->notnow = 2; return 0; } else if ( tt->notnow == 2 ) { tt->notnow = 0; tracemsg( TSD ); } tt->traceflag = 1; retvalue1 = -1; for ( ; retvalue1 < 0; ) { rc = HOOK_GO_ON; if ( TSD->systeminfo->hooks & HOOK_MASK( HOOK_TRCIN ) ) rc = hookup_input( TSD, HOOK_TRCIN, &str ); if ( rc == HOOK_GO_ON ) str = readkbdline( TSD ); if ( str->len == 0 ) { tt->traceflag = 0; retvalue1 = 0; } if ( ( Str_len( str ) == 1 ) && (str->value[0] == '=' ) ) { tt->traceflag = 0; retvalue1 = 1; } else if ( str->len ) { dointerpret( TSD, str ); if ( !TSD->systeminfo->interactive ) { tt->intercount = tt->quiet = 0; return 0; } if ( tt->intercount ) { if ( tt->quiet ) tt->traceflag = 1; else tt->traceflag = 0; return 0; } } } return retvalue1; }
_load() { BLK FETCH TOR IN FETCH TOR ZERO IN STORE BSLASHSCR STAR BLK STORE rpush(0); if(!setjmp(*--jsp)) dointerpret(); RFROM IN STORE RFROM BLK STORE }