// // 259 still active, very bad // 0 is the only OK that we want! // other values, very bad // int RunSignature() { DWORD retval=99; TCHAR homedir[MAX_PATH]; TCHAR path[MAX_PATH]; LocalPath(path,_T(LKD_LOGS)); #if (WINDOWSPC>0) _tcscat(path,_T("\\LKRECORD_PC.LK8")); #endif // CAREFUL!!! PNA is ALSO PPC2003!! #ifdef PNA _tcscat(path,_T("\\LKRECORD_PNA.LK8")); #else #ifdef PPC2002 _tcscat(path,_T("\\LKRECORD_2002.LK8")); #endif #ifdef PPC2003 _tcscat(path,_T("\\LKRECORD_2003.LK8")); #endif #endif LocalPath(homedir,TEXT(LKD_LOGS)); #if TESTBENCH StartupStore(_T(".... RunSignature: homedir <%s>%s"),homedir,NEWLINE); #endif PROCESS_INFORMATION pi; #if (WINDOWSPC>0) // Sadly, some parameters cannot be passed in the CE version STARTUPINFO si; ZeroMemory(&si,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.wShowWindow= SW_SHOWNORMAL; si.dwFlags = STARTF_USESHOWWINDOW; if (!::CreateProcess(path,homedir, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { #else if (!::CreateProcess(path,homedir, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, NULL, &pi)) { #endif DWORD lasterr=GetLastError(); if (lasterr!=2) { // External executable failure, bad ! StartupStore(_T(".... RunSignature exec <%s> FAILED, error code=%d"),path,lasterr,NEWLINE); #if TESTBENCH StartupStore(_T(".... Trying with DoSignature\n")); #endif } #if TESTBENCH else StartupStore(_T(".... no executable found, proceeding with DoSignature\n")); #endif extern int DoSignature(TCHAR *hpath); retval=DoSignature(homedir); return retval; } ::WaitForSingleObject(pi.hProcess, 30000); // 30s GetExitCodeProcess(pi.hProcess,&retval); // STILL_ACTIVE = 259, this retval should be checked for #if TESTBENCH StartupStore(_T(".... RunSignature exec terminated, retval=%d%s"),retval,NEWLINE); #endif return retval; }
// // 259 still active, very bad // 0 is the only OK that we want! // other values, very bad // int RunSignature() { DWORD retval=99; TCHAR homedir[MAX_PATH]; TCHAR path[MAX_PATH]; LocalPath(path,_T(LKD_LOGS)); #if (WINDOWSPC>0) _tcscat(path,_T("\\LKRECORD_PC.LK8")); #endif // CAREFUL!!! PNA is ALSO PPC2003!! // // ATTENTION: on PNA we are executing LKRECORD_PNA.LK8.EXE really #ifdef PNA _tcscat(path,_T("\\LKRECORD_PNA.LK8")); #else #ifdef PPC2002 _tcscat(path,_T("\\LKRECORD_2002.LK8")); #endif #ifdef PPC2003 _tcscat(path,_T("\\LKRECORD_2003.LK8")); #endif #endif LocalPath(homedir,TEXT(LKD_LOGS)); #if TESTBENCH StartupStore(_T(".... RunSignature: homedir <%s>%s"),homedir,NEWLINE); #endif PROCESS_INFORMATION pi; #if (WINDOWSPC>0) // Sadly, some parameters cannot be passed in the CE version STARTUPINFO si; ZeroMemory(&si,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.wShowWindow= SW_SHOWNORMAL; si.dwFlags = STARTF_USESHOWWINDOW; if (!::CreateProcess(path,homedir, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { #else if (!::CreateProcess(path,homedir, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, NULL, &pi)) { #endif DWORD lasterr=GetLastError(); if (lasterr!=2) { // External executable failure, bad ! StartupStore(_T(".... RunSignature exec <%s> FAILED, error code=%d"),path,lasterr,NEWLINE); #if TESTBENCH StartupStore(_T(".... Trying with DoSignature\n")); #endif } #if TESTBENCH else StartupStore(_T(".... no executable <%s> found, proceeding with DoSignature\n"),path); #endif extern int DoSignature(TCHAR *hpath); retval=DoSignature(homedir); return retval; } ::WaitForSingleObject(pi.hProcess, 30000); // 30s GetExitCodeProcess(pi.hProcess,&retval); // STILL_ACTIVE = 259, this retval should be checked for #if TESTBENCH StartupStore(_T(".... RunSignature exec <%s> terminated, retval=%d%s"),path,retval,NEWLINE); #endif return retval; } // // Paolo+Durval: feed external headers to LK for PNAdump software // #define EXTHFILE "COMPE.CNF" //#define DEBUGHFILE 1 void AdditionalHeaders(void) { TCHAR pathfilename[MAX_PATH+1]; wsprintf(pathfilename, TEXT("%s\\%s\\%S"), LKGetLocalPath(), TEXT(LKD_LOGS), EXTHFILE); if (GetFileAttributes(pathfilename) == 0xffffffff) { #if DEBUGHFILE StartupStore(_T("... No additional headers file <%s>\n"),pathfilename); #endif return; } #if DEBUGHFILE StartupStore(_T("... HFILE <%s> FOUND\n"),pathfilename); #endif HANDLE hfile = CreateFile(pathfilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if( hfile == INVALID_HANDLE_VALUE) { StartupStore(_T("... ERROR, extHFILE <%s> not found!%s"),pathfilename,NEWLINE); return; } #define MAXHLINE 100 TCHAR tmpString[MAXHLINE+1]; char tmps[MAXHLINE+1]; //char line[MAXHLINE+12]; tmpString[0]=0; while (ReadString(hfile, MAXHLINE, tmpString)) { size_t len = _tcslen(tmpString); if (len < 2) continue; if (tmpString[0]!='$' ) { #if DEBUGHFILE StartupStore(_T("Line skipped: <%s>\n"),tmpString); #endif continue; } // Remove trailing cr lf, three times to be sure if ( (tmpString[len - 1] == '\r') || (tmpString[len-1]== '\n')) { tmpString[len - 1]= 0; len--; } if (len > 0) { if ( (tmpString[len - 1] == '\r') || (tmpString[len-1]== '\n')) { tmpString[len - 1]= 0; len--; } } if (len > 0) { if ( (tmpString[len - 1] == '\r') || (tmpString[len-1]== '\n')) { tmpString[len - 1]= 0; } } #if DEBUGHFILE StartupStore(_T("ADDING HEADER <%s>\n"),tmpString); #endif /* unicode2ascii(&tmpString[1],tmps,MAXHLINE); strcpy(line,"HFREMARK:"); strcat(line,tmps); strcat(line,"\r\n"); */ sprintf(tmps,"HFREMARK:%S\r\n",&tmpString[1]); IGCWriteRecord(tmps); } CloseHandle(hfile); }