int cs;
int init( );
- int execute( const char *data, int len );
+ int execute( const char *data, int len, bool isEof );
int finish( );
};
return 1;
}
-int Concurrent::execute( const char *data, int len )
+int Concurrent::execute( const char *data, int len, bool isEof )
{
const char *p = data;
const char *pe = data + len;
+ const char *eof = isEof ? pe : 0;
%% write exec;
int Concurrent::finish( )
{
- %% write eof;
if ( cs == Concurrent_error )
return -1;
if ( cs >= Concurrent_first_final )
concurrent.init();
while ( 1 ) {
int len = fread( buf, 1, BUFSIZE, stdin );
- concurrent.execute( buf, len );
+ concurrent.execute( buf, len, len != BUFSIZE );
if ( len != BUFSIZE )
break;
}