Exemplo n.º 1
0
//
//	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;

}
Exemplo n.º 2
0
//
//	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);

}