verson 1.4.54b
[polyglot.git] / main.c
diff --git a/main.c b/main.c
index ae3c5aa..9b8f483 100644 (file)
--- a/main.c
+++ b/main.c
@@ -39,7 +39,7 @@
 // constants\r
 \r
 \r
-static const char * const Version = "1.4.53b";\r
+static const char * const Version = "1.4.54b";\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
@@ -185,9 +185,12 @@ static void make_ini(ini_t *ini){
 \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
@@ -201,16 +204,11 @@ static void write_ini(const char *filename,
     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
@@ -218,17 +216,12 @@ static void write_ini(const char *filename,
     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
@@ -287,6 +280,8 @@ int main(int argc, char * argv[]) {
 \r
     Init = FALSE;\r
 \r
+    gui_init(GUI);\r
+\r
     util_init();\r
     option_init_pg();\r
     \r
@@ -445,6 +440,7 @@ int main(int argc, char * argv[]) {
         // 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
     }\r
@@ -458,6 +454,7 @@ int main(int argc, char * argv[]) {
         // 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
@@ -568,7 +565,7 @@ int main(int argc, char * argv[]) {
         }\r
     }\r
 \r
-    gui_init(GUI);\r
+    //    gui_init(GUI);\r
     mainloop();\r
     return EXIT_SUCCESS; \r
 }\r
@@ -579,7 +576,7 @@ void polyglot_set_option(const char *name, const char *value){ // this must be c
     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
@@ -635,9 +632,10 @@ void quit() {
 \r
     my_log("POLYGLOT *** QUIT ***\n");\r
     \r
-    if (Init) {\r
+    if (Init && !Engine->pipex->quit_pending) {\r
         \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