X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=option.c;h=ec0dc48dcaea6956bdec97bab07e70b96ce66bc3;hb=cd81270f2b1723e0798f4d6dcaee134f0b4aca7f;hp=975940bd8770f9b79275c05d32b9409df175ba38;hpb=a8209ad25e331b9938321744c3cf0e03867eac1c;p=polyglot.git diff --git a/option.c b/option.c index 975940b..ec0dc48 100644 --- a/option.c +++ b/option.c @@ -12,7 +12,7 @@ // constants static const bool UseDebug = FALSE; - +static const int StringSize = 4096; // variables @@ -25,9 +25,9 @@ option_t DefaultOptions[] = { // options - { "SaveSettingsOnExit","check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, - - { "SaveFile", "string","0","0", "" , NULL,0,NNB, PG}, + { "Persist", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, + { "PersistFile", "string","0","0", "" , NULL,0,NNB, PG}, + { "PersistDir", "string","0","0", "" , NULL,0,NNB, PG}, { "EngineName", "string","0","0", "" , NULL,0,NNB, PG}, { "EngineDir", "string","0","0", "." , NULL,0,NNB, PG}, @@ -78,6 +78,11 @@ option_t DefaultOptions[] = { { "WbWorkArounds", "check","0","0", "true" , NULL,0,NNB, PG|XBOARD}, { "WbWorkArounds2", "check","0","0", "false" , NULL,0,NNB, PG|XBOARD}, + + // Buttons + +// { "Defaults", "reset","0","0", "false" , NULL,0,NNB, PG|XBOARD}, + { NULL, NULL,"0","0", NULL , NULL,0,NNB, 0}, }; @@ -100,6 +105,8 @@ void option_init_pg() { int i; option_t *p=DefaultOptions; + char *home_dir; + char PersistDir[StringSize]; option_init(Option); while(p){ @@ -113,6 +120,18 @@ void option_init_pg() { for(i=0;ioption_nb;i++){ Option->options[i].value=my_strdup(Option->options[i].default_); } +#ifndef _WIN32 + home_dir=getenv("HOME"); + if(!home_dir){ + home_dir="."; + } + snprintf(PersistDir,sizeof(PersistDir),"%s/.polyglot",home_dir); + PersistDir[sizeof(PersistDir)-1]='\0'; +#else + sprintf(PersistDir,".\\Polyglot Settings"); +#endif + option_set(Option,"PersistDir",PersistDir); + option_set_default(Option,"PersistDir",PersistDir); } // option_init() @@ -167,6 +186,11 @@ bool option_set(option_list_t *option, opt = option_find(option,name); if (opt == NULL) return FALSE; + if(my_string_case_equal(opt->type,"check")){ + value=(my_string_equal(value,"1")|| + my_string_case_equal(value,"true"))?"true":"false"; + } + my_string_set(&opt->value,value); if (UseDebug) my_log("POLYGLOT OPTION SET \"%s\" -> \"%s\"\n",opt->name,opt->value); @@ -187,6 +211,11 @@ bool option_set_default(option_list_t *option, opt = option_find(option,name); if (opt == NULL) return FALSE; + if(my_string_case_equal(opt->type,"check")){ + value=(my_string_equal(value,"1")|| + my_string_case_equal(value,"true"))?"true":"false"; + } + my_string_set(&opt->default_,value); if (UseDebug) my_log("POLYGLOT OPTION DEFAULT SET \"%s\" -> \"%s\"\n",opt->name,opt->default_);