// constants\r
\r
\r
-static const char * const Version = "1.4.50b";\r
+static const char * const Version = "1.4.60b";\r
static const char * const HelpMessage = "\\r
SYNTAX\n\\r
-* polyglot [configfile] [-noini] [-ec engine] [-ed enginedirectory] [-en enginename] [-log] [-lf logfile] [-hash value] [-bk book] [-pg <name>=<value>]* [-uci <name>=<value>]*\n\\r
+* polyglot [configfile] [-noini] [-ec engine] [-ed enginedirectory] [-en enginename] [-log true/false] [-lf logfile] [-pg <name>=<value>]* [-uci <name>=<value>]*\n\\r
* polyglot make-book [-pgn inputfile] [-bin outputfile] [-max-ply ply] [-min-game games] [-min-score score] [-only-white] [-only-black] [-uniform]\n\\r
* polyglot merge-book -in1 inputfile1 -in2 inputfile2 [-out outputfile]\n\\r
* polyglot info-book [-bin inputfile] [-exact]\n\\r
\r
static void write_ini(const char *filename,\r
ini_t *ini){\r
+ // TODO Quote, dequote\r
const char *quote;\r
ini_entry_t *entry;\r
char tmp[StringSize];\r
+ char tmp1[StringSize];\r
+ char tmp2[StringSize];\r
FILE *f;\r
time_t t=time(NULL);\r
f=fopen(filename,"w");\r
ini_start_iter(ini);\r
while((entry=ini_next(ini))){\r
if(my_string_case_equal(entry->section,"polyglot")){\r
- if(strchr(entry->value,';')|| strchr(entry->value,'#')|| strchr(entry->value,'"')){\r
- quote="\"";\r
- }else{\r
- quote="";\r
- }\r
- snprintf(tmp,sizeof(tmp),"%s=%s%s%s\n",\r
- entry->name,\r
- quote,\r
- entry->value,\r
- quote);\r
+ my_quote(tmp1,entry->name,ini_specials);\r
+ my_quote(tmp2,entry->value,ini_specials);\r
+ snprintf(tmp,sizeof(tmp),"%s=%s\n",\r
+ tmp1,\r
+ tmp2);\r
tmp[sizeof(tmp)-1]='\0';\r
fprintf(f,"%s",tmp);\r
}\r
fprintf(f,"[Engine]\n");\r
ini_start_iter(ini);\r
while((entry=ini_next(ini))){\r
- if(my_string_case_equal(entry->section,"engine")){\r
- if(strchr(entry->value,';')|| strchr(entry->value,'#')|| strchr(entry->value,'"')){\r
- quote="\"";\r
- }else{\r
- quote="";\r
- }\r
- snprintf(tmp,sizeof(tmp),"%s=%s%s%s\n",\r
- entry->name,\r
- quote,\r
- entry->value,\r
- quote);\r
+ if(my_string_case_equal(entry->section,"engine")){\r
+ my_quote(tmp1,entry->name,ini_specials);\r
+ my_quote(tmp2,entry->value,ini_specials);\r
+ snprintf(tmp,sizeof(tmp),"%s=%s\n",\r
+ tmp1,\r
+ tmp2);\r
tmp[sizeof(tmp)-1]='\0';\r
fprintf(f,"%s",tmp);\r
}\r
\r
Init = FALSE;\r
\r
+ gui_init(GUI);\r
+\r
util_init();\r
option_init_pg();\r
\r
\r
if(!my_string_equal(option_get_string(Option,"SettingsFile"),"<empty>")){\r
if(ini_parse(ini,option_get_string(Option,"SettingsFile"))){\r
- my_fatal("main(): Can't open file \"%s\": %s\n",\r
+ my_fatal("main(): Can't open config file \"%s\": %s\n",\r
option_get_string(Option,"SettingsFile"),\r
strerror(errno));\r
}\r
option_set(Option,entry->name,entry->value);\r
}\r
\r
+ // Make sure that EngineCommand has been set\r
+ if(my_string_case_equal(option_get(Option,"EngineCommand"),"<empty>")){\r
+ my_fatal("main(): EngineCommand not set\n");\r
+ }\r
+\r
// start engine\r
\r
engine_open(Engine);\r
+\r
if(!engine_active(Engine)){\r
- my_fatal("Could not start \"%s\"\n",option_get(Option,"EngineCommand"));\r
+ my_fatal("main(): Could not start \"%s\"\n",option_get(Option,"EngineCommand"));\r
}\r
\r
// switch to UCI mode if necessary\r
// initialize uci parsing and send uci command. \r
// Parse options and wait for uciok\r
\r
+ // XXX\r
uci_open(Uci,Engine);\r
\r
option_set_default(Option,"EngineName",Uci->name);\r
if(my_string_case_equal(entry->section,"engine")){\r
// also updates value in Uci->option\r
uci_send_option(Uci,entry->name,"%s",entry->value);\r
- // this is inherited, it probably does not work correctly\r
- if(my_string_case_equal(entry->name,"MultiPV") &&\r
- atoi(entry->value)>1){\r
- Uci->multipv_mode=TRUE;\r
- }\r
}\r
}\r
\r
argc=1;\r
while((arg=argv[argc++])){\r
if(!my_string_equal(arg,"")){\r
- my_fatal("main(): Option: \"%s\" not found\n",argv[argc-1]);\r
+ my_fatal("main(): Incorrect use of option: \"%s\"\n",argv[argc-1]);\r
}\r
}\r
\r
- gui_init(GUI);\r
+ // gui_init(GUI);\r
mainloop();\r
return EXIT_SUCCESS; \r
}\r
ini_t ini[1];\r
int ret;\r
ini_init(ini);\r
- my_log("POLYGLOT Setting PolyGlot option %s=\"%s\"\n",name,value);\r
+ my_log("POLYGLOT Setting PolyGlot option \"%s=%s\"\n",name,value);\r
if(my_string_case_equal(name,"Save")){\r
ret=my_mkdir(option_get(Option,"SettingsDir"));\r
if(ret){\r
// quit()\r
\r
void quit() {\r
-\r
my_log("POLYGLOT *** QUIT ***\n");\r
- \r
- if (Init) {\r
- \r
+ if (Init && !Engine->pipex->quit_pending) {\r
stop_search();\r
+ Engine->pipex->quit_pending=TRUE;\r
engine_send(Engine,"quit");\r
- my_log("POLYGLOT Closing engine\n");\r
engine_close(Engine);\r
\r
}\r
- my_log("POLYGLOT Calling exit\n");\r
+ my_sleep(200);\r
+ my_log("POLYGLOT Calling exit\n");\r
exit(EXIT_SUCCESS);\r
}\r
\r