--- projects/cms/source/idar/idar.c 2003/03/30 01:14:49 1.4 +++ projects/cms/source/idar/idar.c 2003/03/30 10:58:21 1.5 @@ -687,6 +687,7 @@ void display(machine_data_list_t *machine_data_list, d int main(int argc, char **argv){ WINDOW *window; + fd_set infds; FILE *control; FILE *data; @@ -711,6 +712,8 @@ int main(int argc, char **argv){ display_config_t display_config; char ch; + int data_fileno, stdin_fileno, biggest_fileno; + sortby_ptr=NULL; /* What to display defaults */ @@ -848,20 +851,34 @@ int main(int argc, char **argv){ echo(); window=newwin(0, 0, 0, 0); + stdin_fileno=fileno(stdin); + data_fileno=fileno(data); + biggest_fileno=(data_fileno>stdin_fileno) ? (data_fileno+1) : (stdin_fileno+1); + for(;;){ - response=fpgetline(data); - if (response==NULL){ - errf("Failed to read data (%m)"); - exit(1); + FD_ZERO(&infds); + FD_SET(stdin_fileno, &infds); + FD_SET(data_fileno, &infds); + select(biggest_fileno, &infds, NULL, NULL, NULL); + + if(FD_ISSET(stdin_fileno, &infds)){ + + ch=getc(stdin); + + if(ch=='q'){ + endwin(); + exit(0); + } } + if(FD_ISSET(data_fileno, &infds)){ + response=fpgetline(data); + if (response==NULL){ + errf("Failed to read data (%m)"); + exit(1); + } + } -/* ch=getc(stdin); - if(ch=='q'){ - endwin(); - exit(0); - } -*/ num_hosts=parse_xml(response, &machine_data_list); if(num_hosts==-1) continue; machine_data_list=sort_machine_stats(machine_data_list, num_hosts, sortby_ptr);