version 1.4.44b
[polyglot.git] / uci2uci.c
index 611697a..f7cb63e 100644 (file)
--- a/uci2uci.c
+++ b/uci2uci.c
@@ -121,6 +121,7 @@ static void format_uci_option_line(char * option_line,option_t *opt){
     char option_string[StringSize];
     int j;
     strcpy(option_line,"");
+        // buffer overflow alert
     strcat(option_line,"option name");
     if(opt->mode&PG){
         strcat(option_line," Polyglot");
@@ -129,15 +130,15 @@ static void format_uci_option_line(char * option_line,option_t *opt){
     strcat(option_line,option_string);
     sprintf(option_string," type %s",opt->type);
     strcat(option_line,option_string);
-    if(strcmp(opt->type,"button")){
+    if(!IS_BUTTON(opt)){
         sprintf(option_string," default %s",opt->default_);
         strcat(option_line,option_string);
     }
-    if(!strcmp(opt->type,"spin")){
+    if(IS_SPIN(opt)){
         sprintf(option_string," min %s",opt->min);
         strcat(option_line,option_string);
     }
-    if(!strcmp(opt->type,"spin")){
+    if(IS_SPIN(opt)){
         sprintf(option_string," max %s",opt->max);
         strcat(option_line,option_string);
     }
@@ -150,21 +151,22 @@ static void format_uci_option_line(char * option_line,option_t *opt){
 // send_uci_options()
 
 static void send_uci_options() {
-    int i;
-    option_t *p=Option;
+
+    option_t * opt;
     char option_line[StringSize]="";
     gui_send(GUI,"id name %s", Uci->name);
     gui_send(GUI,"id author %s", Uci->author);
-    for(i=0;i<Uci->option_nb;i++){
-        format_uci_option_line(option_line,Uci->option+i);
-         gui_send(GUI,"%s",option_line);
+    option_start_iter(Uci->option);
+    while((opt=option_next(Uci->option))){
+        format_uci_option_line(option_line,opt);
+        gui_send(GUI,"%s",option_line);
     }
-    while(p->name){
-        if(p->mode &UCI){
-            format_uci_option_line(option_line,p);
+    option_start_iter(Option);
+    while((opt=option_next(Option))){
+        if(opt->mode &UCI){
+            format_uci_option_line(option_line,opt);
             gui_send(GUI,"%s",option_line);
         }
-        p++;
     }   
     gui_send(GUI,"uciok");
 }
@@ -216,7 +218,7 @@ void uci2uci_gui_step(char string[]) {
          }
          SavedMove=MoveNone;
          if(!strstr(string,"infinite")){
-             move=book_move(UCIboard,option_get_bool("BookRandom"));
+             move=book_move(UCIboard,option_get_bool(Option,"BookRandom"));
              if (move != MoveNone && move_is_legal(move,UCIboard)) {
                  if(strstr(string,"ponder")){
                      SavedMove=move;