X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=engine.c;h=5cfea0757d63e933e016984b548da6b79d5e2dba;hb=60900035e6d0309705f2326ee50edc52386305e9;hp=4dffd4aa53fdb04437204a0d43a857db5d9cb2f2;hpb=e15efca6667b2673b4c1a5879a6917eab6800e58;p=polyglot.git diff --git a/engine.c b/engine.c index 4dffd4a..5cfea07 100644 --- a/engine.c +++ b/engine.c @@ -7,21 +7,15 @@ #include #include - #include "engine.h" #include "option.h" #include "pipex.h" #include "util.h" -// defines - -#define StringSize 4096 - // variables -static int write_index = 0; -static char write_buffer[StringSize]; engine_t Engine[1]; +#define StringSize ((int)4096) // functions @@ -40,27 +34,17 @@ void engine_set_nice_value(engine_t *engine, int value){ // engine_send_queue() void engine_send_queue(engine_t * engine, const char *format, ...) { - if(write_index>=StringSize){ - my_fatal("engine_send_queue(): write_buffer overflow\n"); - } - write_index += vsnprintf(write_buffer + write_index, - StringSize-write_index, - format, - (va_list) (&format + 1)); + char buf[FormatBufferSize]; + CONSTRUCT_ARG_STRING(format,buf); + pipex_write(engine->pipex,buf); } // engine_send() void engine_send(engine_t * engine, const char *format, ...) { - if(write_index>=StringSize){ - my_fatal("engine_send(): write_buffer overflow\n"); - } - vsnprintf(write_buffer + write_index, - StringSize-write_index, - format, - (va_list) (&format + 1)); - pipex_writeln(engine->pipex,write_buffer); - write_index = 0; + char buf[FormatBufferSize]; + CONSTRUCT_ARG_STRING(format,buf); + pipex_writeln(engine->pipex,buf); } // engine_close() @@ -70,7 +54,7 @@ void engine_close(engine_t * engine){ pipex_send_eof(engine->pipex); // TODO: Timeout while (!engine_eof(engine)) { - engine_get(Engine,string); + engine_get(engine,string); } pipex_exit(engine->pipex); } @@ -79,23 +63,18 @@ void engine_close(engine_t * engine){ void engine_open(engine_t * engine){ int affinity; - char *my_dir; - if( (my_dir = my_getcwd( NULL, 0 )) == NULL ) - my_fatal("engine_open(): no current directory: %s\n",strerror(errno)); - if(my_chdir(option_get_string("EngineDir"))){ - my_fatal("engine_open(): cannot change directory: %s\n",strerror(errno)); - } - pipex_open(engine->pipex,"Engine",option_get_string("EngineCommand")); + pipex_open(engine->pipex, + "Engine", + option_get_string(Option,"EngineDir"), + option_get_string(Option,"EngineCommand")); if(pipex_active(engine->pipex)){ //play with affinity (bad idea) - affinity=option_get_int("Affinity"); + affinity=option_get_int(Option,"Affinity"); if(affinity!=-1) set_affinity(engine,affinity); //AAA - //lets go back - my_chdir(my_dir); // set a low priority - if (option_get_bool("UseNice")){ + if (option_get_bool(Option,"UseNice")){ my_log("POLYGLOT Adjust Engine Piority\n"); - engine_set_nice_value(engine, option_get_int("NiceValue")); + engine_set_nice_value(engine, option_get_int(Option,"NiceValue")); } }