* fixed bug when waiting for sub-process related to handling of multiple

children (as created by piped commands). This caused the compilation
  of AboutHaiku to fail on Zeta.


git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@18503 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Tappe 2006-08-13 14:27:48 +00:00
parent c8cb9d20d2
commit c4d9c2df99

View File

@ -272,29 +272,29 @@ execwait()
if( !cmdsrunning )
return 0;
/* Pick up process pid and status */
do
{
/* Pick up process pid and status */
while( ( w = wait( &status ) ) == -1 && errno == EINTR )
while( ( w = wait( &status ) ) == -1 && errno == EINTR )
;
if( w == -1 )
{
printf( "child process(es) lost!\n" );
perror("wait");
exit( EXITBAD );
}
if( w == -1 )
{
printf( "child process(es) lost!\n" );
perror("wait");
exit( EXITBAD );
}
/* Find the process in the cmdtab. */
/* Find the process in the cmdtab. */
for( i = 0; i < MAXJOBS; i++ )
if( w == cmdtab[ i ].pid )
break;
for( i = 0; i < MAXJOBS; i++ )
if( w == cmdtab[ i ].pid )
break;
if( i == MAXJOBS )
{
printf( "waif child found!\n" );
exit( EXITBAD );
}
if( i == MAXJOBS )
printf( "jam: waif child process %ld found, ignoring it!\n", w );
} while( i == MAXJOBS );
# ifdef USE_EXECNT
/* Clear the temp file */