version 1.4.46b
[polyglot.git] / uci.c
diff --git a/uci.c b/uci.c
index e44fa34..9326ec7 100644 (file)
--- a/uci.c
+++ b/uci.c
@@ -22,7 +22,7 @@
 \r
 static const bool UseDebug = FALSE;\r
 \r
-static const int StringSize = 4096;\r
+#define StringSize ((int)4096)\r
 \r
 // variables\r
 \r
@@ -58,11 +58,34 @@ static int  mate_score     (int dist);
 \r
 // functions\r
 \r
+\r
+// uci_adapt_UCI3()\r
+\r
+static void apply_UCI3_heuristics(option_t *opt){\r
+  if(option_get_int(Option,"UCIVersion")>2){\r
+    return;\r
+  }\r
+  if(!my_string_equal(opt->type,"string")){\r
+    return;\r
+  }\r
+  if(!strncmp(opt->name,"UCI_",4)){\r
+    return;\r
+  }\r
+  if(my_string_case_contains(opt->name,"file")){\r
+    my_string_set(&opt->type,"file");\r
+    return;\r
+  }\r
+  if(my_string_case_contains(opt->name,"path")){\r
+    my_string_set(&opt->type,"path");\r
+    return;\r
+  }\r
+}\r
+\r
 // uci_set_threads()\r
 \r
 void uci_set_threads(uci_t * uci, int n) {\r
-    ASSERT(n>=1);\r
     const char *thread_option=uci_thread_option(uci);\r
+    ASSERT(n>=1);\r
     if(thread_option){\r
         uci_send_option(uci,thread_option,"%d",n);\r
     }\r
@@ -271,7 +294,7 @@ bool uci_send_option(uci_t * uci, const char option[], const char format[], ...)
    opt=option_find(uci->option,option);\r
    if(opt){\r
        found=TRUE;\r
-       if(!my_string_case_equal(opt->type,"button")){\r
+       if(!IS_BUTTON(opt->type)){\r
            if(!my_string_equal(opt->value,value)){\r
                engine_send(uci->engine,"setoption name %s value %s",\r
                            opt->name,value);\r
@@ -805,6 +828,8 @@ static void parse_option(uci_t * uci, const char string[]) {
    }\r
 \r
    parse_close(parse);\r
+\r
+   apply_UCI3_heuristics(opt);\r
    option_insert(uci->option,opt);\r
    option_free(opt);\r
 \r