--- parser3/src/main/pa_exec.C 2004/07/07 11:29:06 1.63 +++ parser3/src/main/pa_exec.C 2004/12/23 16:34:50 1.65 @@ -7,7 +7,7 @@ @todo setrlimit */ -static const char * const IDENT_EXEC_C="$Date: 2004/07/07 11:29:06 $"; +static const char * const IDENT_EXEC_C="$Date: 2004/12/23 16:34:50 $"; #include "pa_config_includes.h" @@ -27,6 +27,7 @@ static const char * const IDENT_EXEC_C=" /// this func from http://www.ccas.ru/~posp/popov/spawn.htm static DWORD CreateHiddenConsoleProcess(LPCTSTR szCmdLine, + LPCTSTR szScriptFileSpec, char *szEnv, PROCESS_INFORMATION* ppi, LPHANDLE phInWrite, @@ -72,10 +73,9 @@ static DWORD CreateHiddenConsoleProcess( // calculating script's directory char dir[MAX_STRING]; - strncpy(dir, szCmdLine, MAX_STRING-1); dir[MAX_STRING-1]=0; + strncpy(dir, szScriptFileSpec, MAX_STRING-1); dir[MAX_STRING-1]=0; lsplit(dir,' '); // trim arguments rsplit(dir,'/'); rsplit(dir,'\\'); // trim filename - chdir(dir); // Create a child process (suspended) fCreated=CreateProcess(NULL, @@ -132,7 +132,7 @@ static const char* buildCommand(const ch buf[size]=0; if(strncmp(buf, "#!", 2)==0) { const char* begin=buf+2; - if(*begin==' ') // alx: were an old magic for some linux-es + while(*begin==' ') // alx: were an old magic for some linux-es begin++; if(char *end=strchr(begin, '\n')) { String string(pa_strdup(begin, end-begin)); @@ -339,7 +339,8 @@ PA_exec_result pa_exec( PROCESS_INFORMATION pi; HANDLE hInWrite, hOutRead, hErrRead; - const char* cmd=buildCommand(file_spec.cstr(String::L_FILE_SPEC), argv); + const char* script_spec_cstr=file_spec.cstr(String::L_FILE_SPEC); + const char* cmd=buildCommand(script_spec_cstr, argv); char* env_cstr=0; if(env) { String::Body body; @@ -350,7 +351,7 @@ PA_exec_result pa_exec( if(*replacer=='\1') *replacer=0; } - if(DWORD error=CreateHiddenConsoleProcess(cmd, env_cstr, &pi, &hInWrite, &hOutRead, &hErrRead)) { + if(DWORD error=CreateHiddenConsoleProcess(cmd, script_spec_cstr, env_cstr, &pi, &hInWrite, &hOutRead, &hErrRead)) { char szErrorDesc[MAX_STRING]; const char* param="the file you tried to run"; size_t error_size=FormatMessage(