version 1.4.46b
[polyglot.git] / uci.c
diff --git a/uci.c b/uci.c
index 574c288..9326ec7 100644 (file)
--- a/uci.c
+++ b/uci.c
@@ -58,6 +58,29 @@ 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
@@ -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(!IS_BUTTON(opt)){\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