\r
// functions\r
\r
+void set_affinity(engine_t *engine, int affin){\r
+ if(affin==-1) return;\r
+\r
+ typedef void (WINAPI *SPAM)(HANDLE, int);\r
+ SPAM pSPAM;\r
+ pSPAM = (SPAM) GetProcAddress(\r
+ GetModuleHandle(TEXT("kernel32.dll")), \r
+ "SetProcessAffinityMask");\r
+ if(NULL != pSPAM){\r
+ // [HGM] avoid crash on Win95 by first checking if API call exists\r
+ my_log("POLYGLOT Setting process affinity to %d\n",affin);\r
+ pSPAM((engine->io).hProcess,affin);\r
+ }else{\r
+ my_log("POLYGLOT API call \"SetProcessAffinityMask\" not available\n");\r
+ }\r
+}\r
+\r
DWORD GetWin32Priority(int nice)\r
{\r
/*\r
return 0x00000040;\r
}\r
\r
-\r
-\r
-void set_affinity(engine_t *engine, int affin){\r
- if(affin==-1) return;\r
- SetProcessAffinityMask((engine->io).hProcess,affin);\r
-}\r
-\r
-// Eric Mullins!\r
-\r
void engine_set_nice_value(engine_t *engine, int value){\r
SetPriorityClass((engine->io).hProcess,\r
GetWin32Priority(value));\r
}\r
\r
-\r
void engine_send_queue(engine_t * engine,const char *szFormat, ...) {\r
nQueuePtr += vsprintf(szQueueString + nQueuePtr, szFormat, (va_list) (&szFormat + 1));\r
}\r
char string[StringSize];\r
(engine->io).Close();\r
// TODO: Timeout\r
- while (!engine_eof(Engine)) { \r
- engine_get_non_blocking(Engine,string,StringSize);\r
- Idle();\r
+ while (!engine_eof(engine)) { \r
+ engine_get(Engine,string,StringSize);\r
}\r
(engine->io).Kill();\r
}\r
\r
-\r
void engine_open(engine_t * engine){\r
int affinity;\r
char *my_dir;\r
\r
bool engine_get_non_blocking(engine_t * engine, char *szLineStr, int size){\r
if(engine_eof(engine)){ return false;}\r
- if ((engine->io).GetBuffer(szLineStr)) {\r
+ if ((engine->io).GetBuffer(szLineStr)) {\r
my_log("Engine->Adapter: %s\n",szLineStr);\r
return true;\r
} else {\r
szLineStr[0]='\0';\r
if(engine->io.EOF_()){\r
engine->state|=ENGINE_EOF;\r
+ my_log("POLYGLOT *** EOF from Engine ***\n");\r
}\r
return false;\r
}\r
void engine_get(engine_t * engine, char *szLineStr, int size){\r
(engine->io).LineInput(szLineStr);\r
if(engine->io.EOF_()){\r
- engine->state|=ENGINE_EOF;\r
+ engine->state|=ENGINE_EOF;\r
+ my_log("POLYGLOT *** EOF from Engine ***\n");\r
+ }else{\r
+ my_log("Engine->Adapter: %s\n",szLineStr);\r
}\r
}\r
\r