void do_process_head(char* arg , int fd) { FILE* fp; char *extension , *content; fp = fdopen(fd , "w"); if(ends_in_cgi(arg)) header(fp , NULL); else { extension = file_type(arg); content = "text/plain" ; if(strcmp(extension , "html") == 0) content = "text/html"; else if(strcmp(extension , "gif") == 0) content = "image/gif"; else if(strcmp(extension , "jpg") == 0) content = "image/jpeg"; else if(strcmp(extension , "jpeg") == 0) content = "image/jpeg"; header(fp , content); } exit(0); }
extern void process_rq(char *request, int sock_fd) { char cmd[BUFSIZ], arg[BUFSIZ]; strcpy(arg, "./"); sscanf(request, "%s %s", cmd, arg + 2); if (fork() != 0) return ; if (strcmp(cmd, "GET") != 0) { cannot_do(sock_fd); } else if (not_exist(arg)) { do_404(arg, sock_fd); } else if (is_dir(arg)) { do_ls(arg, sock_fd); } else if (ends_in_cgi(arg)) { do_exec(arg, sock_fd); } else { do_cat(arg, sock_fd); } }
void process_rq(char* rq , int fd) { char cmd[BUFSIZ] , arg[BUFSIZ] ; if(fork() != 0) return ; strcpy(arg , "./"); if(sscanf(rq , "%s %s" , cmd , arg+2) != 2) return ; if(strcmp(cmd , "GET") != 0) { if(strcmp(cmd , "HEAD") != 0) cannot_do(fd); else if(not_exist(arg)) do_404(arg , fd); else { if(isadir(arg)) { strcat(arg , "index.html"); printf("modified arg : %s\n" ,arg); if(not_exist(arg)) do_404(arg , fd); } do_process_head(arg , fd); } } else if(not_exist(arg)) do_404(arg , fd); else if(isadir(arg)) do_ls(arg , fd); else if(ends_in_cgi(arg)) do_exec(arg ,fd); else do_cat(arg , fd); }
void process_rq(char *rq, int fd) { char cmd[BUFSIZ], arg[BUFSIZ]; if (fork() != 0) return; strcpy(arg, "./"); if (sscanf(rq, "%s%s", cmd, arg+2) != 2) return; if (strcmp(cmd, "GET") != 0) cannot_do(fd); else if (not_exist(arg)) do_404(arg, fd); else if (isadir(arg)) do_ls(arg, fd); else if (ends_in_cgi(arg)) do_exec(arg, fd); else do_cat(arg, fd); }
process_rq( char *rq, int fd ) { char cmd[BUFSIZ], arg[BUFSIZ]; /* create a new process and return if not the child */ if ( fork() != 0 ) return; strcpy(arg, "./"); /* precede args with ./ */ if ( sscanf(rq, "%s%s", cmd, arg+2) != 2 ) return; if ( strcmp(cmd,"GET") != 0 ) cannot_do(fd); else if ( not_exist( arg ) ) do_404(arg, fd ); else if ( isadir( arg ) ) do_ls( arg, fd ); else if ( ends_in_cgi( arg ) ) do_exec( arg, fd ); else do_cat( arg, fd ); }