static int DoPMake( pmake_data *data ) { pmake_list *curr; int res; char cmd[PMAKE_COMMAND_SIZE]; int rc = 0; for( curr = data->dir_list; curr != NULL; curr = curr->next ) { res = SysChdir( curr->dir_name ); if( res != 0 ) { if( !data->ignore_errors ) { return( res ); } Log( false, "'cd %s' non-zero return: %d\n", curr->dir_name, res ); rc = res; continue; } getcwd( IncludeStk->cwd, sizeof( IncludeStk->cwd ) ); if( data->display ) LogDir( IncludeStk->cwd ); PMakeCommand( data, cmd ); res = SysRunCommand( cmd ); if( res != 0 ) { if( !data->ignore_errors ) { return( res ); } Log( false, "'%s' non-zero return: %d\n", cmd, res ); rc = res; } } return( rc ); }
static int DoPMake( pmake_data *data ) { pmake_list *curr; int res; char cmd[256]; int rc; res = 0; for( curr = data->dir_list; curr != NULL; curr = curr->next ) { rc = chdir( curr->dir_name ); if( rc != 0 ) { res = rc; break; } if( data->display ) { fputs( "==== ", stdout ); puts( curr->dir_name ); } PMakeCommand( data, cmd ); rc = RunCommand( cmd ); if( rc != 0 ) { res = rc; if( data->ignore_err == 0 ) { break; } } } return( res ); }
static unsigned DoPMake( pmake_data *data, bool ignore_errors ) { pmake_list *curr; unsigned res; char cmd[256]; for( curr = data->dir_list; curr != NULL; curr = curr->next ) { res = SysChdir( curr->dir_name ); if( res != 0 ) { if( ignore_errors ) { Log( FALSE, "non-zero return: %d\n", res ); continue; } else { return( res ); } } getcwd( IncludeStk->cwd, sizeof( IncludeStk->cwd ) ); if( data->display ) LogDir( IncludeStk->cwd ); PMakeCommand( data, cmd ); res = SysRunCommand( cmd ); if( res != 0 ) { if( ignore_errors ) { Log( FALSE, "non-zero return: %d\n", res ); } else { return( res ); } } } return( 0 ); }
static void WriteCmdFile( pmake_data *data ) { FILE *fp; pmake_list *curr; fp = fopen( TMPBAT, "w+t" ); if( fp == NULL ) { printf( "PMAKE: unable to open %s for writing: %s\n", TMPBAT, strerror( errno ) ); exit( EXIT_FAILURE ); } #ifdef __UNIX__ fprintf( fp, "#!/bin/sh\n" ); fprintf( fp, "rm "TMPBAT"\n" ); fchmod( fileno( fp ), 0777 ); #else fprintf( fp, "@echo off\n" ); #endif for( curr = data->dir_list; curr != NULL; curr = curr->next ) { if( curr->dir_name[0] != '\0' ) { fprintf( fp, "cd %s\n", curr->dir_name ); if( data->display ) { fprintf( fp, "cdsay .\n" ); } } PMakeCommand( data, buffer ); fprintf( fp, "%s\n", buffer ); } getcwd( buffer, sizeof( buffer ) ); fprintf( fp, "cd %s\n", buffer ); if( fclose( fp ) ) { printf( "PMAKE: unable to close %s: %s\n", TMPBAT, strerror( errno ) ); exit( EXIT_FAILURE ); } }