void parseAll(int argc, char *argv[], svt_parser_t *parser) { if (argc > 0){ parseCmd(argc, argv, parser); }else{ parseStdin(parser); } }
// main loop int main(int argc, char *argv[]) { char buffer[MAXBUF]; // character buffer used to receive messages int i; // iterator printf("\n"); printf(" *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf(" | |\n"); printf(" * Warhammer On The Road *\n"); printf(" | |\n"); printf(" * Server *\n"); printf(" | |\n"); printf(" *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("\n"); int sock_serv = init(argc, argv); /* Enter an infinite loop to respond to client requests and echo input */ while(1) { printf("\r "); printf("\r> "); fflush(stdout); fd_set rfds; waitForActivity(&rfds, sock_serv); // Something happened in stdin if(FD_ISSET(fileno(stdin), &rfds)) { fgets(buffer, sizeof(buffer), stdin); if(parseStdin(buffer) < 0) break; } // If something happened on the listening socket if(FD_ISSET(sock_serv, &rfds)) acceptNewSocket(sock_serv); // if something happened on a client socket for(i = 0 ; i < nb_client ; i ++) if(FD_ISSET(players[i]->fd, &rfds)) parseClientRequest(players[i], buffer); // if a child process tries to communicate for(i=0; i<nb_file_processes; i++) if(FD_ISSET(fileprocesses[i]->in, &rfds)) parseFileProcessesRequest(i, buffer); } printf("\r"); clean(sock_serv); return 0; }