Index: filed.c ================================================================== --- filed.c +++ filed.c @@ -5,10 +5,11 @@ #include #include #include #include #include +#include #include #include /* Default values */ #define MAX_FAILURE_COUNT 30 @@ -96,20 +97,52 @@ return(buffer); } static char *filed_get_http_request(FILE *fp, char *buffer, size_t buffer_len) { + char *method, *path, *version; + char tmpbuf[1010]; + int i; + setlinebuf(fp); - /* XXX:TODO: Unimplemented */ - fp = fp; - buffer = buffer; - buffer_len = buffer_len; + fgets(buffer, buffer_len, fp); + + method = buffer; + + buffer = strchr(buffer, ' '); + if (buffer == NULL) { + return(NULL); + } + + *buffer = '\0'; + buffer++; + + path = buffer; + + buffer = strchr(buffer, ' '); + if (buffer != NULL) { + *buffer = '\0'; + buffer++; + + version = buffer; + } + + for (i = 0; i < 100; i++) { + fgets(tmpbuf, sizeof(tmpbuf), fp); + if (memcmp(tmpbuf, "\r\n", 2) == 0) { + break; + } + } fflush(fp); - return("./hello_world.txt"); + /* IGNORED */ + version = version; + method = method; + + return(path); } static void filed_handle_client(int fd) { struct filed_fileinfo *fileinfo, fileinfo_b; char *path, path_b[1010]; @@ -127,10 +160,11 @@ return; } path = filed_get_http_request(fp, path_b, sizeof(path_b)); if (path == NULL) { + /* XXX: TODO: Return error page */ fclose(fp); return; }