version 1.4.44b
[polyglot.git] / xboard2uci.c
index d3d91c5..2097de9 100644 (file)
@@ -27,6 +27,7 @@
 #include "uci.h"\r
 #include "uci2uci.h"\r
 #include "util.h"\r
+#include "xboard2uci.h"\r
 \r
 // defines\r
 \r
@@ -468,12 +469,17 @@ void xboard2uci_gui_step(char string[]) {
             }\r
         } else if (match(string,"option *")){\r
             char *name=Star[0];\r
-            start_protected_command();\r
+             if(match(name, "Polyglot *")){\r
+                char *pg_name=Star[0];\r
+                polyglot_set_option(pg_name,"<empty>");\r
+            }else{           \r
+              start_protected_command();\r
                 // value is ignored\r
-            if(!uci_send_option(Uci, name, "%s", "<empty>")){\r
-               gui_send(GUI,"Error (unknown option): %s",name); \r
-            }; \r
-            end_protected_command();\r
+              if(!uci_send_option(Uci, name, "%s", "<empty>")){\r
+                gui_send(GUI,"Error (unknown option): %s",name); \r
+              }; \r
+              end_protected_command();\r
+            }\r
         } else if (XB->has_feature_smp && match(string,"cores *")){\r
                 int cores=atoi(Star[0]);\r
                 if(cores>=1){\r
@@ -768,7 +774,7 @@ void format_xboard_option_line(char * option_line, option_t *opt){
     strcat(option_line,option_string);\r
     sprintf(option_string," -%s",opt->type);\r
     strcat(option_line,option_string);\r
-    if(strcmp(opt->type,"button") && strcmp(opt->type,"combo")){\r
+    if(!IS_BUTTON(opt) && strcmp(opt->type,"combo")){\r
         if(strcmp(opt->type,"check")){\r
             sprintf(option_string," %s",opt->value);\r
         }else{\r
@@ -779,11 +785,11 @@ void format_xboard_option_line(char * option_line, option_t *opt){
         }\r
         strcat(option_line,option_string);\r
     }\r
-    if(!strcmp(opt->type,"spin")){\r
+    if(IS_SPIN(opt)){\r
         sprintf(option_string," %s",opt->min);\r
             strcat(option_line,option_string);\r
     }\r
-    if(!strcmp(opt->type,"spin")){\r
+    if(IS_SPIN(opt)){\r
         sprintf(option_string," %s",opt->max);\r
         strcat(option_line,option_string);\r
     }\r
@@ -811,10 +817,7 @@ void format_xboard_option_line(char * option_line, option_t *opt){
 \r
 static void send_xboard_options(){\r
 \r
-    char option_line[StringSize]="";\r
-    const char * name;\r
-    option_t *opt;\r
-    \r
+   \r
     gui_send(GUI,"feature done=0");\r
     \r
     gui_send(GUI,"feature analyze=1");\r
@@ -857,41 +860,44 @@ static void send_xboard_options(){
         gui_send(GUI,"feature variants=\"normal\"");\r
     }\r
 \r
-    option_start_iter(Uci->option);\r
-    while((opt=option_next(Uci->option))){\r
-        if(my_string_case_equal(opt->name,"UCI_AnalyseMode")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_Opponent")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_Chess960")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_ShowCurrLine")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_ShowRefutations")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_ShredderbasesPath")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_SetPositionValue")) continue;\r
-        if(my_string_case_equal(opt->name,"UCI_DrawOffers")) continue;\r
-        if(my_string_case_equal(opt->name,"Ponder")) continue;\r
-        if(my_string_case_equal(opt->name,"Hash")) continue;\r
-        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
-        format_xboard_option_line(option_line,opt);\r
-        \r
-        gui_send(GUI,"%s",option_line);\r
-    }\r
-\r
+    xboard2uci_send_options();\r
+}\r
 \r
-    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
-    }       \r
-    gui_send(GUI,"feature done=1"); \r
+void xboard2uci_send_options(){\r
+  char option_line[StringSize]="";\r
+  const char * name;\r
+  option_t *opt;\r
+  \r
+  option_start_iter(Uci->option);\r
+  while((opt=option_next(Uci->option))){\r
+    if(my_string_case_equal(opt->name,"UCI_AnalyseMode")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_Opponent")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_Chess960")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_ShowCurrLine")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_ShowRefutations")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_ShredderbasesPath")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_SetPositionValue")) continue;\r
+    if(my_string_case_equal(opt->name,"UCI_DrawOffers")) continue;\r
+    if(my_string_case_equal(opt->name,"Ponder")) continue;\r
+    if(my_string_case_equal(opt->name,"Hash")) continue;\r
+    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
+    format_xboard_option_line(option_line,opt);\r
     \r
+    gui_send(GUI,"%s",option_line);\r
+  }\r
+  \r
+  \r
+  option_start_iter(Option);\r
+  while((opt=option_next(Option))){\r
+    if(opt->mode &XBOARD){\r
+      format_xboard_option_line(option_line,opt);\r
+      gui_send(GUI,"%s",option_line);\r
+    }\r
+  }       \r
+  gui_send(GUI,"feature done=1"); \r
+  \r
 }\r
 \r
 // report_best_score()\r