Beispiel #1
0
void parseAll(int argc, char *argv[], svt_parser_t *parser)
{
    if (argc > 0){
        parseCmd(argc, argv, parser);
    }else{
        parseStdin(parser);
    }
}
Beispiel #2
0
// 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;
}