int main(int argc, char **argv) { signal(SIGINT, signal_callback_handler); /* Default settings */ server_port = 8000; void (*request_handler)(int) = NULL; int i; for (i = 1; i < argc; i++) { if (strcmp("--files", argv[i]) == 0) { request_handler = handle_files_request; free(server_files_directory); server_files_directory = argv[++i]; if (!server_files_directory) { fprintf(stderr, "Expected argument after --files\n"); exit_with_usage(); } } else if (strcmp("--proxy", argv[i]) == 0) { request_handler = handle_proxy_request; char *proxy_target = argv[++i]; if (!proxy_target) { fprintf(stderr, "Expected argument after --proxy\n"); exit_with_usage(); } char *colon_pointer = strchr(proxy_target, ':'); if (colon_pointer != NULL) { *colon_pointer = '\0'; server_proxy_hostname = proxy_target; server_proxy_port = atoi(colon_pointer + 1); } else { server_proxy_hostname = proxy_target; server_proxy_port = 80; } } else if (strcmp("--port", argv[i]) == 0) { char *server_port_string = argv[++i]; if (!server_port_string) { fprintf(stderr, "Expected argument after --port\n"); exit_with_usage(); } server_port = atoi(server_port_string); } else if (strcmp("--help", argv[i]) == 0) { exit_with_usage(); } else { fprintf(stderr, "Unrecognized option: %s\n", argv[i]); exit_with_usage(); } } if (server_files_directory == NULL && server_proxy_hostname == NULL) { fprintf(stderr, "Please specify either \"--files [DIRECTORY]\" or \n" " \"--proxy [HOSTNAME:PORT]\"\n"); exit_with_usage(); } serve_forever(&server_fd, request_handler); return EXIT_SUCCESS; }
int main(int argc, char **argv, char **envp) { int fd; char *p; background_process(NAME, UID, GID); fd = serve_forever(PORT); set_io(fd); parse_http_request(); }
int main(int argc, char **argv, char **envp) { int fd; char *username; /* Run the process as a daemon */ background_process(NAME, UID, GID); /* Wait for socket activity and return */ fd = serve_forever(PORT); /* Set the client socket to STDIN, STDOUT, and STDERR */ set_io(fd); get_requests(fd); }
int main(int argc, char **argv, char **envp) { int fd; char *username; /* Run the process as a daemon */ background_process(NAME, UID, GID); /* Wait for socket activity and return */ fd = serve_forever(PORT); /* Set the client socket to STDIN, STDOUT, and STDERR */ set_io(fd); /* Don't do this :> */ srandom(time(NULL)); run(); }
int main(int argc, char **argv) { signal(SIGINT, signal_callback_handler); /* Default settings */ server_port = 8000; server_files_directory = malloc(1024); getcwd(server_files_directory, 1024); server_proxy_hostname = "inst.eecs.berkeley.edu"; server_proxy_port = 80; void (*request_handler)(int) = handle_files_request; int i; for (i = 1; i < argc; i++) { if (strcmp("--files", argv[i]) == 0) { request_handler = handle_files_request; free(server_files_directory); server_files_directory = argv[++i]; if (!server_files_directory) { fprintf(stderr, "Expected argument after --files\n"); exit_with_usage(); } } else if (strcmp("--proxy", argv[i]) == 0) { request_handler = handle_proxy_request; char *proxy_target = argv[++i]; if (!proxy_target) { fprintf(stderr, "Expected argument after --proxy\n"); exit_with_usage(); } char *colon_pointer = strchr(proxy_target, ':'); if (colon_pointer != NULL) { *colon_pointer = '\0'; server_proxy_hostname = proxy_target; server_proxy_port = atoi(colon_pointer + 1); } else { server_proxy_hostname = proxy_target; server_proxy_port = 80; } } else if (strcmp("--port", argv[i]) == 0) { char *server_port_string = argv[++i]; if (!server_port_string) { fprintf(stderr, "Expected argument after --port\n"); exit_with_usage(); } server_port = atoi(server_port_string); } else if (strcmp("--help", argv[i]) == 0) { exit_with_usage(); } else { fprintf(stderr, "Unrecognized option: %s\n", argv[i]); exit_with_usage(); } } serve_forever(&server_fd, request_handler); return EXIT_SUCCESS; }