#include #include #include #include #include "webarchive.h" int main() { const char *query_string = getenv("QUERY_STRING"); if (query_string == NULL) { generatepage("Internal error: invalid request"); return EXIT_SUCCESS; } if (NULL != validate_name_version(query_string)) { generatepage(validate_name_version(query_string)); return EXIT_SUCCESS; } char *data[MAX_RECORDS] = {0}; if (!readdata(data, MAX_RECORDS)) { generatepage("Failed to read file data"); return EXIT_SUCCESS; } char name[32] = {0}; strcpy(name, getname(query_string)); int index = -1; for (int i = 0; i < MAX_RECORDS && data[i]; i++) { if (strcmp(name, getname(data[i])) == 0) { index = i; break; } } if (index == -1) { generatepage("File not found"); return EXIT_SUCCESS; } int version = getversion(data[index]); if (version < 1) version = 1; const char *olddata = strstr(data[index], "&data="); if (olddata) { char *temp = malloc(strlen(olddata+6)); unencode(olddata+6, temp); olddata = temp; } else olddata = ""; puts("Content-type: text/html\r\n\r\n"); puts(""); puts(""); puts("
"); printf(" \n",name); printf("
\n",1+version); printf("
\n",olddata); puts(" "); puts("
"); puts(""); puts(""); return EXIT_SUCCESS; }