X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=uci2uci.c;h=9d2a1a61b574fc443f4f85b82e33b41b3ecfd779;hb=de010509fa0e57ba955da6512c714fbff8606af3;hp=611697a63a2ed476353d5bdf220a28f3b2ec1302;hpb=e15efca6667b2673b4c1a5879a6917eab6800e58;p=polyglot.git diff --git a/uci2uci.c b/uci2uci.c index 611697a..9d2a1a6 100644 --- a/uci2uci.c +++ b/uci2uci.c @@ -33,6 +33,26 @@ static int SavedMove=MoveNone; static void send_uci_options(); + +// normalize_type() + +static void normalize_type(char *dst, const char* src){ + if(option_get_int(Option,"UCIVersion") <=2){ + if(IS_STRING(src)){ + strcpy(dst,"string"); + return; + }else if(IS_SPIN(src)){ + strcpy(dst,"spin"); + }else if(IS_BUTTON(src)){ + strcpy(dst,"button"); + }else{ + strcpy(dst,src); + } + }else{ + strcpy(dst,src); + } +} + // parse_position() static void parse_position(const char string[]) { @@ -119,25 +139,28 @@ static void send_book_move(int move){ static void format_uci_option_line(char * option_line,option_t *opt){ char option_string[StringSize]; + char type[StringSize]; int j; strcpy(option_line,""); + // buffer overflow alert strcat(option_line,"option name"); if(opt->mode&PG){ strcat(option_line," Polyglot"); } sprintf(option_string," %s",opt->name); strcat(option_line,option_string); - sprintf(option_string," type %s",opt->type); + normalize_type(type,opt->type); + sprintf(option_string," type %s",type); strcat(option_line,option_string); - if(strcmp(opt->type,"button")){ - sprintf(option_string," default %s",opt->default_); + if(!IS_BUTTON(opt->type)){ + sprintf(option_string," default %s",opt->value); strcat(option_line,option_string); } - if(!strcmp(opt->type,"spin")){ + if(IS_SPIN(opt->type)){ sprintf(option_string," min %s",opt->min); strcat(option_line,option_string); } - if(!strcmp(opt->type,"spin")){ + if(IS_SPIN(opt->type)){ sprintf(option_string," max %s",opt->max); strcat(option_line,option_string); } @@ -150,21 +173,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;ioption_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"); } @@ -215,8 +239,9 @@ void uci2uci_gui_step(char string[]) { Init=FALSE; } SavedMove=MoveNone; - if(!strstr(string,"infinite")){ - move=book_move(UCIboard,option_get_bool("BookRandom")); + if(!strstr(string,"infinite") + && UCIboard->move_nb