version 1.4.42b
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 9 Jun 2011 08:04:31 +0000 (10:04 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Thu, 9 Jun 2011 08:04:31 +0000 (10:04 +0200)
12 files changed:
ChangeLog
README
config.h
configure
configure.ac
main.c
main.h
option.c
polyglot.man
polyglot.pod
polyglot.spec
xboard2uci.c

index 9becd56..d7968be 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+=========1.4.42b================\r
+- SaveSettingsOnExit/SaveFile renamed as Persist/PersistFile.\r
+- Many bug fixes in the persistence feature.\r
+- The PG_<myname>.ini file now contains only options that have been changed. So the resulting ini files are much smaller. This makes this version of PG usable on WB 4.3.15 as now the engine specific ini file will be empty (the user has no way to change options).\r
 =========1.4.41b================\r
 - Some segfaults fixed in case of corrupt config files.\r
 - Persistence of options. If the option SaveSettingsOnExit is true (the default) PolyGlot now saves its options in a file whose name is given by the option SaveFile which by default is equal to the engine name, prefixex by PG_ and suffixed by ".ini".\r
diff --git a/README b/README
index 37b76f5..7e70bf8 100644 (file)
--- a/README
+++ b/README
@@ -426,15 +426,16 @@ CONFIG FILE FORMAT
            This a bit vector in which each bit represents the processors that
            a process is allowed to run on. This option works only on Windows.
 
-       SaveSettingsOnExit (default: true)
+       Persist (default: true)
            If true then PolyGlot will implement persistence by loading options
-           from an additional INI file which is specified by the option "Save-
-           File". At exit PolyGlot will also save its options to this INI
+           from an additional INI file which is specified by the option "Per-
+           sistFile". At exit PolyGlot will also save its options to this INI
            file.
 
-       SaveFile (default: PG_<EngineName>.ini)
+       PersistFile (default: PG_<EngineName>.ini)
            The name of the file from which to take the additional options.
-           You can safely edit this file.
+           You can safely edit this file, or delete it to restore the default
+           options.
 
        Work arounds
 
@@ -569,4 +570,4 @@ SEE ALSO
 
 
 
-                                  2009-08-31                       POLYGLOT(6)
+                                  2009-09-01                       POLYGLOT(6)
index e72fdc2..28eb06b 100644 (file)
--- a/config.h
+++ b/config.h
 #define PACKAGE_NAME "polyglot"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "polyglot 1.4.41b"
+#define PACKAGE_STRING "polyglot 1.4.42b"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "polyglot"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.4.41b"
+#define PACKAGE_VERSION "1.4.42b"
 
 /* Define to 1 if the C compiler supports function prototypes. */
 #define PROTOTYPES 1
 #define TIME_WITH_SYS_TIME 1
 
 /* Version number of package */
-#define VERSION "1.4.41b"
+#define VERSION "1.4.42b"
 
 /* Define like PROTOTYPES; this can be used by system headers. */
 #define __PROTOTYPES 1
index 4e41c1a..0e727f1 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for polyglot 1.4.41b.
+# Generated by GNU Autoconf 2.61 for polyglot 1.4.42b.
 #
 # Report bugs to <michel.vandenbergh@uhasselt.be>.
 #
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='polyglot'
 PACKAGE_TARNAME='polyglot'
-PACKAGE_VERSION='1.4.41b'
-PACKAGE_STRING='polyglot 1.4.41b'
+PACKAGE_VERSION='1.4.42b'
+PACKAGE_STRING='polyglot 1.4.42b'
 PACKAGE_BUGREPORT='michel.vandenbergh@uhasselt.be'
 
 ac_unique_file="mainloop.c"
@@ -1207,7 +1207,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures polyglot 1.4.41b to adapt to many kinds of systems.
+\`configure' configures polyglot 1.4.42b to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1273,7 +1273,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of polyglot 1.4.41b:";;
+     short | recursive ) echo "Configuration of polyglot 1.4.42b:";;
    esac
   cat <<\_ACEOF
 
@@ -1357,7 +1357,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-polyglot configure 1.4.41b
+polyglot configure 1.4.42b
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1371,7 +1371,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by polyglot $as_me 1.4.41b, which was
+It was created by polyglot $as_me 1.4.42b, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2061,7 +2061,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='polyglot'
- VERSION='1.4.41b'
+ VERSION='1.4.42b'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6848,7 +6848,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by polyglot $as_me 1.4.41b, which was
+This file was extended by polyglot $as_me 1.4.42b, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6901,7 +6901,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-polyglot config.status 1.4.41b
+polyglot config.status 1.4.42b
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index 36f79aa..ced072e 100644 (file)
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.61)
-AC_INIT([polyglot], [1.4.41b], [michel.vandenbergh@uhasselt.be])
+AC_INIT([polyglot], [1.4.42b], [michel.vandenbergh@uhasselt.be])
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([mainloop.c])
 AC_CONFIG_HEADER([config.h])
diff --git a/main.c b/main.c
index 6ffac64..fad2ed8 100644 (file)
--- a/main.c
+++ b/main.c
@@ -36,7 +36,7 @@
 // constants\r
 \r
 \r
-static const char * const Version = "1.4.41b";\r
+static const char * const Version = "1.4.42b";\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
@@ -65,17 +65,18 @@ static void stop_search  ();
 \r
 // arg_shift_left()\r
 \r
-void arg_shift_left(char **argv, int index){\r
+static void arg_shift_left(char **argv, int index){\r
     int i;\r
     for(i=index; argv[i]!=NULL; i++){\r
         argv[i]=argv[i+1];\r
     }\r
 }\r
 \r
+// write_ini()\r
 \r
-void write_ini(const char *filename,\r
-               option_list_t *pg_options,\r
-               option_list_t *uci_options){\r
+static void write_ini(const char *filename,\r
+                      option_list_t *pg_options,\r
+                      option_list_t *uci_options){\r
     option_t *opt;\r
     char tmp[StringSize];\r
     FILE *f;\r
@@ -91,7 +92,9 @@ void write_ini(const char *filename,
     fprintf(f,"[PolyGlot]\n");\r
     option_start_iter(pg_options);\r
     while((opt=option_next(pg_options))){\r
-        if(!my_string_case_equal(opt->type,"button") && (opt->mode & XBOARD)){\r
+        if(!my_string_equal(opt->value,opt->default_)&&\r
+           !my_string_case_equal(opt->type,"button") &&\r
+           (opt->mode & XBOARD)){\r
             snprintf(tmp,sizeof(tmp),"%s=%s\n",opt->name,opt->value);\r
             tmp[sizeof(tmp)-1]='\0';\r
             fprintf(f,"%s",tmp);\r
@@ -100,7 +103,8 @@ void write_ini(const char *filename,
     fprintf(f,"[Engine]\n");\r
     option_start_iter(uci_options);\r
     while((opt=option_next(uci_options))){\r
-        if(!my_string_case_equal(opt->type,"button")){\r
+        if(!my_string_equal(opt->value,opt->default_)&&\r
+           !my_string_case_equal(opt->type,"button")){\r
             snprintf(tmp,sizeof(tmp),"%s=%s\n",opt->name,opt->value);\r
             tmp[sizeof(tmp)-1]='\0';\r
             fprintf(f,"%s",tmp);\r
@@ -113,7 +117,7 @@ void write_ini(const char *filename,
 // main()\r
 \r
 int main(int argc, char * argv[]) {\r
-    ini_t ini[1];\r
+    ini_t ini[1],ini_save[1];\r
     ini_entry_t *entry;\r
     char *arg;\r
     int arg_index;\r
@@ -145,6 +149,9 @@ int main(int argc, char * argv[]) {
 \r
     my_random_init();\r
 \r
+    ini_init(ini);\r
+    ini_init(ini_save);\r
+\r
         // book utilities\r
     \r
     if (argc >= 2 && my_string_equal(argv[1],"make-book")) {\r
@@ -174,7 +181,10 @@ int main(int argc, char * argv[]) {
         return EXIT_SUCCESS;\r
     }\r
 \r
-        // what is the config file? This is very hacky right now?\r
+        // TODO: If logging is enabled on the command line turn it on NOW\r
+        // and do not allow it to be overridden later. \r
+    \r
+        // What is the config file? This is very hacky right now.\r
 \r
         // Do we want a config file at all?\r
 \r
@@ -203,10 +213,9 @@ int main(int argc, char * argv[]) {
         arg_shift_left(argv,1);\r
     }else{\r
             // Config file is the default.\r
-            // This has already been set above or in "option_init_pg"\r
+            // This has already been set above or in "option_init_pg()"\r
     }\r
     \r
-    ini_init(ini);\r
 \r
         // if we use a config file: load it!\r
     \r
@@ -217,56 +226,133 @@ int main(int argc, char * argv[]) {
                    strerror(errno));\r
         }\r
     }\r
+        // remind the reader of what options are in effect\r
+\r
+    my_log("POLYGLOG Options from ini file\n");\r
+    ini_disp(ini);\r
+\r
+        // extract PG options\r
+    \r
+    ini_start_iter(ini);\r
+    while((entry=ini_next(ini))){\r
+        if(my_string_case_equal(entry->section,"polyglot")){\r
+            option_set(Option,entry->name,entry->value);\r
+            option_set_default(Option,entry->name,entry->value);\r
+        }\r
+    }\r
+\r
+        // start logging if required\r
+    \r
+    if (option_get_bool(Option,"Log")) {\r
+        my_log_open(option_get_string(Option,"LogFile"));\r
+    }\r
 \r
-        // parse the command line and merge options\r
+        // log welcome stuff\r
+    \r
+    if(!DEBUG){\r
+        my_log("PolyGlot %s by Fabien Letouzey\n",Version);\r
+    }else{\r
+        my_log("PolyGlot %s by Fabien Letouzey (debug build)\n",Version);\r
+    }    \r
+    my_log("POLYGLOT *** START ***\n");\r
+    my_log("POLYGLOT INI file \"%s\"\n",option_get_string(Option,"OptionFile"));\r
+\r
+        // open book (presumably this should go else where)\r
+    \r
+    init_book();\r
 \r
+        // scavenge command line for options necessary to start the engine\r
+    \r
     arg_index=1;\r
     while((arg=argv[arg_index])){\r
-//        int i=1;\r
-//        char *arg1;\r
-//        printf("arg_index=%d\n",arg_index);\r
-//        while((arg1=argv[i++])){\r
-//            printf("arg=%s ",arg1);\r
-//        }\r
-//        printf("\n");\r
         if(my_string_equal(arg,"-ec") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"PolyGlot","EngineCommand",argv[arg_index+1]);\r
+            option_set(Option,"EngineCommand",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
         if(my_string_equal(arg,"-ed") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"PolyGlot","EngineDir",argv[arg_index+1]);\r
+            option_set(Option,"EngineDir",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
         if(my_string_equal(arg,"-en") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"PolyGlot","EngineName",argv[arg_index+1]);\r
+            option_set(Option,"EngineName",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
+        arg_index++;\r
+    }\r
+\r
+        // start engine\r
+    \r
+    engine_open(Engine);\r
+    if(!engine_active(Engine)){\r
+        my_fatal("Could not start \"%s\"\n",option_get(Option,"EngineCommand"));\r
+    }\r
+\r
+        // switch to UCI mode if necessary\r
+    \r
+    if (option_get_bool(Option,"UCI")) {\r
+        my_log("POLYGLOT *** Switching to UCI mode ***\n");\r
+    }\r
+\r
+        // initialize uci parsing and send uci command. Parse options and wait\r
+        // for uciok\r
+    \r
+    uci_open(Uci,Engine);\r
+\r
+        // get engine name from engine if not supplied in config file\r
+    \r
+    if (my_string_equal(option_get_string(Option,"EngineName"),"<empty>")) {\r
+        option_set(Option,"EngineName",Uci->name);\r
+    }\r
+\r
+        // what is the name of the persist file?\r
+\r
+    if(my_string_equal(option_get_string(Option,"PersistFile"),"<empty>")){\r
+        char tmp[StringSize];\r
+        snprintf(tmp,sizeof(tmp),"PG_%s.ini",\r
+                 option_get_string(Option,"EngineName"));\r
+        tmp[sizeof(tmp)-1]='\0';\r
+        option_set(Option,"PersistFile",tmp);\r
+    }\r
+\r
+        // if "Persist" is true, load the persist file!\r
+    \r
+    if(option_get_bool(Option,"Persist")){\r
+        my_log("POLYGLOT PersistFile=%s\n",option_get_string(Option,"PersistFile"));\r
+        if(ini_parse(ini_save,option_get_string(Option,"PersistFile"))){\r
+            my_log("POLYGLOT Unable to open PersistFile\n"); \r
+        }\r
+    }\r
+    \r
+        // parse the command line and merge remaining options\r
+\r
+    arg_index=1;\r
+    while((arg=argv[arg_index])){\r
         if(my_string_equal(arg,"-log")){\r
-            ini_insert_ex(ini,"PolyGlot","Log","true");\r
+            ini_insert_ex(ini_save,"PolyGlot","Log","true");\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
         if(my_string_equal(arg,"-lf") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"PolyGlot","LogFile",argv[arg_index+1]);\r
+            ini_insert_ex(ini_save,"PolyGlot","LogFile",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
         if(my_string_equal(arg,"-hash") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"Engine","Hash",argv[arg_index+1]);\r
+            ini_insert_ex(ini_save,"Engine","Hash",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
         }\r
         if(my_string_equal(arg,"-bk") && argv[arg_index+1]){\r
-            ini_insert_ex(ini,"PolyGlot","Book","true");\r
-            ini_insert_ex(ini,"PolyGlot","BookFile",argv[arg_index+1]);\r
+            ini_insert_ex(ini_save,"PolyGlot","Book","true");\r
+            ini_insert_ex(ini_save,"PolyGlot","BookFile",argv[arg_index+1]);\r
             arg_shift_left(argv,arg_index);\r
             arg_shift_left(argv,arg_index);\r
             continue;\r
@@ -280,9 +366,9 @@ int main(int argc, char * argv[]) {
             ret=ini_line_parse(argv[arg_index++],section,name,value);\r
             if(ret==NAME_VALUE){\r
                 if(my_string_equal(arg,"-pg")){\r
-                    ini_insert_ex(ini,"PolyGlot",name,value);\r
+                    ini_insert_ex(ini_save,"PolyGlot",name,value);\r
                 }else{\r
-                    ini_insert_ex(ini,"Engine",name,value);\r
+                    ini_insert_ex(ini_save,"Engine",name,value);\r
                 }\r
             }\r
             arg_shift_left(argv,arg_index);\r
@@ -292,77 +378,21 @@ int main(int argc, char * argv[]) {
         arg_index++;\r
     }\r
 \r
-        // extract PG options\r
-        // this sets both the default and the value\r
-    \r
-    option_from_ini(Option,ini,"polyglot");\r
-    \r
-        // start logging if required\r
-    \r
-    if (option_get_bool(Option,"Log")) {\r
-        my_log_open(option_get_string(Option,"LogFile"));\r
-    }\r
-\r
-        // log welcome stuff\r
-    \r
-    if(!DEBUG){\r
-        my_log("PolyGlot %s by Fabien Letouzey\n",Version);\r
-    }else{\r
-        my_log("PolyGlot %s by Fabien Letouzey (debug build)\n",Version);\r
-    }    \r
-    my_log("POLYGLOT *** START ***\n");\r
-    my_log("POLYGLOT INI file \"%s\"\n",option_get_string(Option,"OptionFile"));\r
+        // remind the reader once again about options\r
 \r
-        // start engine\r
-    \r
-    engine_open(Engine);\r
-    if(!engine_active(Engine)){\r
-        my_fatal("Could not start \"%s\"\n",option_get(Option,"EngineCommand"));\r
-    }\r
+    my_log("POLYGLOG Options from save file and command line\n");\r
+    ini_disp(ini_save);\r
 \r
-        // switch to UCI mode if necessary\r
+        // extract PG options; this time do not set the default\r
+        // polyglot_set_option() performs the necessary actions such\r
+        // as opening the log file/opening book etcetera.\r
     \r
-    if (option_get_bool(Option,"UCI")) {\r
-        my_log("POLYGLOT *** Switching to UCI mode ***\n");\r
-    }\r
-\r
-        // initialize uci parsing and send uci command. Parse options and wait\r
-        // for uciok\r
-    \r
-    uci_open(Uci,Engine);\r
-\r
-        // get engine name from engine if not supplied in config file\r
-    \r
-    if (my_string_equal(option_get_string(Option,"EngineName"),"<empty>")) {\r
-        option_set(Option,"EngineName",Uci->name);\r
-    }\r
-\r
-        // if there is a save file: load it!\r
-\r
-    if(my_string_equal(option_get_string(Option,"SaveFile"),"<empty>")){\r
-        char tmp[StringSize];\r
-        snprintf(tmp,sizeof(tmp),"PG_%s.ini",\r
-                 option_get_string(Option,"EngineName"));\r
-        tmp[sizeof(tmp)-1]='\0';\r
-        option_set(Option,"SaveFile",tmp);\r
-    }\r
-    if(option_get_bool(Option,"SaveSettingsOnExit")){\r
-        my_log("POLYGLOT SaveFile=%s\n",option_get_string(Option,"SaveFile"));\r
-        if(ini_parse(ini,option_get_string(Option,"SaveFile"))){\r
-            my_log("POLYGLOT Unable to open SaveFile\n"); \r
+    ini_start_iter(ini_save);\r
+    while((entry=ini_next(ini_save))){\r
+        if(my_string_case_equal(entry->section,"polyglot")){\r
+            polyglot_set_option(entry->name,entry->value);\r
         }\r
     }\r
-        // start if it was enabled in the SaveFile\r
-    \r
-    my_log_close();\r
-    if (option_get_bool(Option,"Log")) {\r
-        my_log_open(option_get_string(Option,"LogFile"));\r
-    }\r
-        // remind the user of the options that are now in effect\r
-    \r
-    ini_disp(ini);\r
-\r
-\r
 \r
         // done initializing\r
     \r
@@ -377,15 +407,25 @@ int main(int argc, char * argv[]) {
             uci_send_option(Uci,entry->name,"%s",entry->value);\r
                 // since this comes from the ini file, also update default\r
             option_set_default(Uci->option,entry->name,entry->value);\r
-                //to get a decent display in winboard_x we need to now if an engine really is doing multipv analysis\r
-               // "multipv 1" in the pv is meaningless,f.i. toga sends that all the time\r
-               //therefore check if MultiPV is set to a decent value in the polyglot ini file\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
+    ini_start_iter(ini_save);\r
+    while((entry=ini_next(ini_save))){\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
     \r
         // EPD test\r
@@ -404,15 +444,15 @@ int main(int argc, char * argv[]) {
     }\r
 \r
 \r
-    init_book();\r
     gui_init(GUI);\r
     mainloop();\r
     return EXIT_SUCCESS; \r
 }\r
 \r
-// polyglot_set_option\r
+// polyglot_set_option()\r
 \r
-void polyglot_set_option(char *name, char *value){ // this must be cleaned up!\r
+void polyglot_set_option(const char *name, const char *value){ // this must be cleaned up!\r
+    my_log("POLYGLOT Setting PolyGlot option %s=\"%s\"\n",name,value);\r
     option_set(Option,name,value);\r
     if(option_get_bool(Option,"Book")&&(my_string_case_equal(name,"BookFile")||my_string_case_equal(name,"Book"))){\r
         my_log("POLYGLOT *** SETTING BOOK ***\n");\r
@@ -474,8 +514,9 @@ void quit() {
         engine_close(Engine);\r
         \r
     }\r
-    if(option_get_bool(Option,"SaveSettingsOnExit")){\r
-        write_ini(option_get_string(Option,"SaveFile"),Option,Uci->option);\r
+    if(option_get_bool(Option,"Persist")){\r
+        write_ini(option_get_string(Option,"PersistFile"),\r
+                  Option,Uci->option);\r
     }\r
     my_log("POLYGLOT Calling exit\n");\r
     exit(EXIT_SUCCESS);\r
diff --git a/main.h b/main.h
index db1d8dd..f504f68 100644 (file)
--- a/main.h
+++ b/main.h
@@ -11,7 +11,7 @@
 // functions\r
 \r
 extern void quit ();\r
-extern void polyglot_set_option(char *name, char *value);\r
+extern void polyglot_set_option(const char *name, const char *value);\r
 \r
 #endif // !defined MAIN_H\r
 \r
index 975940b..6ac2cf1 100644 (file)
--- a/option.c
+++ b/option.c
@@ -25,9 +25,9 @@ option_t DefaultOptions[] = {
 \r
    // options\r
 \r
-    { "SaveSettingsOnExit","check","0","0",      "true"     , NULL,0,NNB,  PG|XBOARD},\r
+    { "Persist",      "check","0","0",      "true"     , NULL,0,NNB,  PG|XBOARD},\r
 \r
-    { "SaveFile",         "string","0","0",     "<empty>"   , NULL,0,NNB,  PG},\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
index 9de40e2..9d456f6 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "POLYGLOT 6"
-.TH POLYGLOT 6 "2009-08-31" "" ""
+.TH POLYGLOT 6 "2009-09-01" "" ""
 .SH "NAME"
 PolyGlot \-  Winboard protocol to UCI protocol adapter
          \-  book engine for Polyglot books 
@@ -545,16 +545,17 @@ Win32 priority levels are mapped in a sensible way to Unix nice levels.
 .IX Item "Affinity (default: -1)"
 This a bit vector in which each bit represents the processors that a
 process is allowed to run on. This option works only on Windows. 
-.IP "\fBSaveSettingsOnExit\fR (default: true)" 4
-.IX Item "SaveSettingsOnExit (default: true)"
+.IP "\fBPersist\fR (default: true)" 4
+.IX Item "Persist (default: true)"
 If true then PolyGlot will implement persistence by loading 
 options from an additional \s-1INI\s0 file which is specified by the option
-\&\*(L"SaveFile\*(R". At exit PolyGlot will also save its options to this \s-1INI\s0
+\&\*(L"PersistFile\*(R". At exit PolyGlot will also save its options to this \s-1INI\s0
 file. 
-.IP "\fBSaveFile\fR (default: PG_<EngineName>.ini)" 4
-.IX Item "SaveFile (default: PG_<EngineName>.ini)"
+.IP "\fBPersistFile\fR (default: PG_<EngineName>.ini)" 4
+.IX Item "PersistFile (default: PG_<EngineName>.ini)"
 The name of the file from which to take the additional options.
-You can safely edit this file. 
+You can safely edit this file, or delete it to restore the default
+options.
 .Sh "Work arounds"
 .IX Subsection "Work arounds"
 Work arounds are identical to options except that they should be used
index 3c544fb..64df0be 100644 (file)
@@ -513,17 +513,18 @@ Win32 priority levels are mapped in a sensible way to Unix nice levels.
 This a bit vector in which each bit represents the processors that a
 process is allowed to run on. This option works only on Windows. 
 
-=item B<SaveSettingsOnExit> (default: true)
+=item B<Persist> (default: true)
 
 If true then PolyGlot will implement persistence by loading 
 options from an additional INI file which is specified by the option
-"SaveFile". At exit PolyGlot will also save its options to this INI
+"PersistFile". At exit PolyGlot will also save its options to this INI
 file. 
 
-=item B<SaveFile> (default: PG_<EngineName>.ini)
+=item B<PersistFile> (default: PG_<EngineName>.ini)
 
 The name of the file from which to take the additional options.
-You can safely edit this file. 
+You can safely edit this file, or delete it to restore the default
+options.
 
 =back
 
index 4054d4e..5c1a96c 100644 (file)
@@ -1,6 +1,6 @@
 Summary: A Winboard protocol to UCI protocol adapter
 Name: polyglot
-Version: 1.4.41b
+Version: 1.4.42b
 Release: 1
 License: GPL
 Group: Amusement/Games
index 6dda5cf..d3d91c5 100644 (file)
@@ -770,10 +770,12 @@ void format_xboard_option_line(char * option_line, option_t *opt){
     strcat(option_line,option_string);\r
     if(strcmp(opt->type,"button") && strcmp(opt->type,"combo")){\r
         if(strcmp(opt->type,"check")){\r
-            sprintf(option_string," %s",opt->default_);\r
+            sprintf(option_string," %s",opt->value);\r
         }else{\r
             sprintf(option_string," %d",\r
-                    my_string_case_equal(opt->default_,"true")?1:0);\r
+                    my_string_case_equal(opt->value,"true")||\r
+                    my_string_equal(opt->value,"1")\r
+                    ?1:0);\r
         }\r
         strcat(option_line,option_string);\r
     }\r
@@ -786,7 +788,7 @@ void format_xboard_option_line(char * option_line, option_t *opt){
         strcat(option_line,option_string);\r
     }\r
     for(j=0;j<opt->var_nb;j++){\r
-        if(!strcmp(opt->var[j],opt->default_)){\r
+        if(!strcmp(opt->var[j],opt->value)){\r
             sprintf(option_string," *%s",opt->var[j]);\r
         }else{\r
             sprintf(option_string," %s",opt->var[j]);\r
@@ -870,7 +872,6 @@ static void send_xboard_options(){
         if(my_string_case_equal(opt->name,"NalimovPath")) continue;\r
         if((name=uci_thread_option(Uci))!=NULL &&\r
            my_string_case_equal(opt->name,name)) continue;\r
-        \r
         format_xboard_option_line(option_line,opt);\r
         \r
         gui_send(GUI,"%s",option_line);\r
@@ -880,6 +881,11 @@ static void send_xboard_options(){
     option_start_iter(Option);\r
     while((opt=option_next(Option))){\r
         if(opt->mode &XBOARD){\r
+            if(my_string_case_equal(opt->name,"Persist") &&\r
+               my_string_case_equal(option_get_default(Option,opt->name),\r
+                                    "false")){\r
+                continue;\r
+            }\r
             format_xboard_option_line(option_line,opt);\r
             gui_send(GUI,"%s",option_line);\r
         }\r