#include "option.h"\r
#include "util.h"\r
\r
+\r
+// defines\r
+\r
+#define NNB { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL }\r
+\r
// constants\r
\r
static const bool UseDebug = FALSE;\r
-\r
+static const int StringSize = 4096;\r
\r
// variables\r
\r
-#define NNB { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL }\r
\r
option_list_t Option[1];\r
\r
option_t DefaultOptions[] = { \r
- { "OptionFile", "string","0","0", "polyglot.ini", NULL,0,NNB, PG}, \r
-\r
// options\r
\r
- { "Persist", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD},\r
+ { "SettingsFile", "file","0","0", "polyglot.ini", NULL,0,NNB, PG|XBOARD|XBSEL}, \r
+\r
+ { "SettingsDir", "path","0","0", "<empty>" , NULL,0,NNB, PG},\r
+\r
+ { "OnlyWbOptions", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD},\r
\r
- { "PersistFile", "string","0","0", "<empty>" , NULL,0,NNB, PG},\r
- \r
{ "EngineName", "string","0","0", "<empty>" , NULL,0,NNB, PG}, \r
- { "EngineDir", "string","0","0", "." , NULL,0,NNB, PG}, \r
+ { "EngineDir", "path","0","0", "." , NULL,0,NNB, PG}, \r
{ "EngineCommand", "string","0","0", "<empty>" , NULL,0,NNB, PG}, \r
\r
- { "Log", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|UCI}, \r
- { "LogFile", "string","0","0", "polyglot.log", NULL,0,NNB, PG|XBOARD|UCI}, \r
+ { "Log", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
+ { "LogFile", "file","0","0", "polyglot.log", NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
\r
{ "UCI", "check","0","0", "false" , NULL,0,NNB, PG}, \r
\r
{ "UseNice", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|UCI}, \r
{ "NiceValue", "spin", "0","20", "5" , NULL,0,NNB, PG|XBOARD|UCI}, \r
\r
- { "Chess960", "check","0","0", "false" , NULL,0,NNB, PG}, \r
-\r
- { "Resign", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
- { "ResignMoves", "spin","0","10000", "3" , NULL,0,NNB, PG|XBOARD}, \r
- { "ResignScore", "spin","0","10000", "600" , NULL,0,NNB, PG|XBOARD}, \r
+ { "Resign", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|XBSEL}, \r
+ { "ResignMoves", "spin","0","10000", "3" , NULL,0,NNB, PG|XBOARD|XBSEL}, \r
+ { "ResignScore", "spin","0","10000", "600" , NULL,0,NNB, PG|XBOARD|XBSEL}, \r
\r
{ "MateScore", "spin","0","100000", "10000" , NULL,0,NNB, PG|XBOARD}, \r
\r
- { "Book", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|UCI}, \r
- { "BookFile", "string","0","0", "book.bin" , NULL,0,NNB, PG|XBOARD|UCI}, \r
+ { "Book", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
+ { "BookFile", "file","0","0", "book.bin" , NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
\r
- { "BookRandom", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD|UCI}, \r
- { "BookDepth", "spin","0","256", "256" , NULL,0,NNB, PG|XBOARD}, \r
+ { "BookRandom", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
+ { "BookDepth", "spin","0","256", "256" , NULL,0,NNB, PG|XBOARD|XBSEL|UCI}, \r
{ "BookTreshold", "spin","0","1000", "5" , NULL,0,NNB, PG|XBOARD|UCI}, \r
{ "BookLearn", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
\r
{ "KibitzDelay", "spin","0","1000", "5" , NULL,0,NNB, PG|XBOARD}, \r
{ "KibitzInterval", "spin","0","1000", "0" , NULL,0,NNB, PG|XBOARD}, \r
\r
- { "ShowPonder", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
+ { "ShowPonder", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, \r
{ "ScoreWhite", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
\r
// work-arounds\r
\r
{ "UCIVersion", "spin","1","2", "2" , NULL,0,NNB, PG|XBOARD}, \r
{ "CanPonder", "check","1","2", "false" , NULL,0,NNB, PG|XBOARD}, \r
- { "SyncStop", "check","1","2", "false" , NULL,0,NNB, PG|XBOARD}, \r
+ { "SyncStop", "check","1","2", "false" , NULL,0,NNB, PG|XBOARD|XBSEL}, \r
{ "Affinity", "spin","-1","32", "-1" , NULL,0,NNB, PG}, \r
{ "RepeatPV", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD},\r
- { "PromoteWorkAround","check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
+ { "PromoteWorkAround","check","0","0", "false" , NULL,0,NNB, PG|XBOARD},\r
+\r
+ // internal\r
\r
- { "WbWorkArounds", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, \r
- { "WbWorkArounds2", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, \r
+ { "Chess960", "check","0","0", "false" , NULL,0,NNB, PG}, \r
+\r
+ // These options flag various hacks in the source to work around\r
+ // WB quirks. They will eventually all be set to false. Probably\r
+ // in 4.5.0\r
+ \r
+ { "WbWorkArounds", "check","0","0", "true" , NULL,0,NNB, PG}, \r
+ { "WbWorkArounds2", "check","0","0", "false" , NULL,0,NNB, PG}, \r
+ { "WbWorkArounds3", "check","0","0", "true" , NULL,0,NNB, PG}, \r
+\r
+ // Buttons\r
+\r
+ { "Save", "save","0","0", "false" , NULL,0,NNB, PG|XBOARD|XBSEL},\r
+\r
+ // Sentinel\r
+ \r
{ NULL, NULL,"0","0", NULL , NULL,0,NNB, 0},\r
\r
};\r
\r
int i;\r
option_t *p=DefaultOptions;\r
+ char *home_dir;\r
+ char SettingsDir[StringSize];\r
\r
option_init(Option);\r
while(p){\r
for(i=0;i<Option->option_nb;i++){\r
Option->options[i].value=my_strdup(Option->options[i].default_);\r
}\r
+#ifndef _WIN32\r
+ home_dir=getenv("HOME");\r
+ if(!home_dir){\r
+ home_dir=".";\r
+ }\r
+ snprintf(SettingsDir,sizeof(SettingsDir),"%s/.polyglot",home_dir);\r
+ SettingsDir[sizeof(SettingsDir)-1]='\0';\r
+#else\r
+ sprintf(SettingsDir,".\\_PG");\r
+#endif\r
+ option_set(Option,"SettingsDir",SettingsDir);\r
+ option_set_default(Option,"SettingsDir",SettingsDir);\r
}\r
\r
// option_init()\r
opt = option_find(option,name);\r
if (opt == NULL) return FALSE;\r
\r
+ if(my_string_case_equal(opt->type,"check")){\r
+ value=(my_string_equal(value,"1")||\r
+ my_string_case_equal(value,"true"))?"true":"false";\r
+ }\r
+\r
my_string_set(&opt->value,value);\r
\r
if (UseDebug) my_log("POLYGLOT OPTION SET \"%s\" -> \"%s\"\n",opt->name,opt->value);\r
opt = option_find(option,name);\r
if (opt == NULL) return FALSE;\r
\r
+ if(my_string_case_equal(opt->type,"check")){\r
+ value=(my_string_equal(value,"1")||\r
+ my_string_case_equal(value,"true"))?"true":"false";\r
+ }\r
+\r
my_string_set(&opt->default_,value);\r
\r
if (UseDebug) my_log("POLYGLOT OPTION DEFAULT SET \"%s\" -> \"%s\"\n",opt->name,opt->default_);\r