nuclear@12: /* tinyweb - tiny web server library and daemon nuclear@12: * Author: John Tsiombikas nuclear@12: * nuclear@12: * This program is placed in the public domain. Feel free to use it any nuclear@12: * way you like. Mentions and retaining this attribution header will be nuclear@12: * appreciated, but not required. nuclear@12: */ nuclear@0: #include nuclear@0: #include nuclear@0: #include nuclear@7: #include nuclear@3: #include nuclear@7: #include "tinyweb.h" nuclear@1: nuclear@7: int parse_args(int argc, char **argv); nuclear@3: void sighandler(int s); nuclear@5: nuclear@5: nuclear@0: int main(int argc, char **argv) nuclear@0: { nuclear@7: int *sockets, num_sockets, sockets_arr_size = 0; nuclear@7: nuclear@1: if(parse_args(argc, argv) == -1) { nuclear@1: return 1; nuclear@1: } nuclear@1: nuclear@3: signal(SIGINT, sighandler); nuclear@3: signal(SIGTERM, sighandler); nuclear@3: signal(SIGQUIT, sighandler); nuclear@3: nuclear@9: if(tw_start() == -1) { nuclear@9: return 1; nuclear@9: } nuclear@0: nuclear@0: for(;;) { nuclear@7: int i; nuclear@0: fd_set rdset; nuclear@0: nuclear@7: num_sockets = tw_get_sockets(0); nuclear@7: if(num_sockets > sockets_arr_size) { nuclear@7: int newsz = sockets_arr_size ? sockets_arr_size * 2 : 16; nuclear@7: int *newarr = realloc(sockets, newsz * sizeof *sockets); nuclear@7: if(!newarr) { nuclear@7: fprintf(stderr, "failed to allocate sockets array\n"); nuclear@7: tw_stop(); nuclear@7: return 1; nuclear@7: } nuclear@7: sockets = newarr; nuclear@7: sockets_arr_size = newsz; nuclear@7: } nuclear@7: tw_get_sockets(sockets); nuclear@7: nuclear@0: FD_ZERO(&rdset); nuclear@7: for(i=0; i set the TCP/IP port number to use\n"); nuclear@1: printf(" -h print usage help and exit\n"); nuclear@1: } nuclear@1: nuclear@1: int parse_args(int argc, char **argv) nuclear@1: { nuclear@1: int i; nuclear@1: nuclear@1: for(i=1; i