X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=pipex_win32.c;h=a07df7d676ad0828fb6bbb1c4667a6d2dae610aa;hb=5eed4adb3552562329c0b0b460c8851efb1a38bb;hp=3f9ed90638b2087af8d83071f97ec9d3b906f6df;hpb=a0f731f21d6aa26dbf7246039a1c66c2ade0533f;p=polyglot.git diff --git a/pipex_win32.c b/pipex_win32.c index 3f9ed90..a07df7d 100644 --- a/pipex_win32.c +++ b/pipex_win32.c @@ -92,7 +92,7 @@ void pipex_open(pipex_t *pipex, si.hStdInput = hStdinRead; si.hStdOutput = hStdoutWrite; si.hStdError = hStdoutWrite; - if((szCurrentDir = _getcwd( NULL, 0 )) == NULL ) + if((szCurrentDir = (char*)_getcwd( NULL, 0 )) == NULL ) my_fatal("pipex_open(): no current directory: %s\n", strerror(errno)); if(_chdir(szWorkingDir)){ @@ -191,9 +191,9 @@ void pipex_send_eof(pipex_t *pipex) { // pipex_exit() void pipex_exit(pipex_t *pipex) { + DWORD lpexit; CloseHandle(pipex->hInput); CloseHandle(pipex->hOutput); - DWORD lpexit; if(GetExitCodeProcess(pipex->hProcess,&lpexit)){ if(lpexit==STILL_ACTIVE) @@ -219,10 +219,7 @@ static void pipex_set_eof_input(pipex_t *pipex){ EnterCriticalSection(&(pipex->CriticalSection)); (pipex->state)|=PIPEX_EOF; LeaveCriticalSection(&(pipex->CriticalSection)); - // not quit the right place - my_log("%s->Adapter: EOF\n",pipex->name); - -} + } // pipex_active() @@ -395,6 +392,7 @@ bool pipex_readln(pipex_t *pipex, char *szLineStr) { WaitForSingleObject(pipex->hEvent,INFINITE); } } + my_log("%s->Adapter: EOF\n",pipex->name); szLineStr[0]='\0'; return FALSE; } @@ -431,12 +429,13 @@ void pipex_set_priority(pipex_t *pipex, int value){ // pipex_set_affinit() +typedef void (WINAPI *SPAM)(HANDLE, int); void pipex_set_affinity(pipex_t *pipex, int value){ + SPAM pSPAM; + if(pipex->hProcess) return; if(value==-1) return; - typedef void (WINAPI *SPAM)(HANDLE, int); - SPAM pSPAM; pSPAM = (SPAM) GetProcAddress( GetModuleHandle(TEXT("kernel32.dll")), "SetProcessAffinityMask"); @@ -474,8 +473,8 @@ void pipex_write(pipex_t *pipex, const char *szLineStr) { void pipex_writeln(pipex_t *pipex, const char *szLineStr) { DWORD dwBytes; DWORD dwLengthWriteBuffer; - my_log("Adapter->%s: %s\n",pipex->name,pipex->szWriteBuffer); pipex_write(pipex, szLineStr); + my_log("Adapter->%s: %s\n",pipex->name,pipex->szWriteBuffer); if(pipex->bPipe){ dwLengthWriteBuffer = strlen(pipex->szWriteBuffer); if(dwLengthWriteBuffer>=sizeof(pipex->szWriteBuffer)-3){