From 445be5bd45e7e8d4379441e8a40eea2738de20d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 7 Jul 2013 10:59:57 +0200 Subject: [PATCH] htdocs: refactoring and improving web archive --- htdocs/archive/report.c | 48 ++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/htdocs/archive/report.c b/htdocs/archive/report.c index 0650acbda..ba28123af 100644 --- a/htdocs/archive/report.c +++ b/htdocs/archive/report.c @@ -7,27 +7,55 @@ #define MAX_RECORDS 1000 +void listAll(char **data) { + puts("Content-type: text/html\r\n\r\n"); + puts("\n"); + puts("\n"); + for (int i = 0; i < MAX_RECORDS && data[i]; i++) { + const char *name = getname(data[i]); + printf("\n", name); + } + puts("
%sDelete this
\n"); + puts(""); +} + +void listOne(char **data, const char name[]) { + int index = -1; + for (int i = 0; i < MAX_RECORDS && data[i]; i++) { + if (strcmp(getname(data[i]), name)==0) { + index = i; + break; + } + } + + puts("Content-type: text/plain\r\n\r\n"); + puts((index == -1) ? "Not found" : data[index]); +} + int main() { char *data[MAX_RECORDS] = {0}; // read if (!readdata(data, MAX_RECORDS)) { - printf("Internal error: failed to load data"); + puts("Content-type: text/html\r\n\r\n"); + puts("Internal error: failed to load data"); + return 0; } // sort sortdata(data,MAX_RECORDS); - // output - printf("Content-type: text/html\r\n\r\n"); - printf("\n"); - printf("
\n"); - for (int i = 0; i < MAX_RECORDS && data[i]; i++) { - const char *name = getname(data[i]); - printf("\n", name); + const char *query_string = getenv("QUERY_STRING"); + if (query_string == NULL) { + listAll(data); + } else if (strncmp(query_string, "name=", 5) == 0 && getname(query_string) != NULL) { + char name[32] = {0}; + strcpy(name, getname(query_string)); + listOne(data,name); + } else { + puts("Content-type: text/plain\r\n\r\n"); + puts("Invalid query"); } - printf("
%sDelete this
\n"); - printf(""); return 0; }