tvote.c: improve display of poll files - vote - simple cgi voting system for we… | |
git clone git://src.adamsgaard.dk/vote | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 10c2ffb581321cb59e676d3f577ce0946debe5c6 | |
parent 9afaec1473d2044388e45ede5f1a4ed38d198939 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Sun, 27 Sep 2020 10:05:36 +0200 | |
vote.c: improve display of poll files | |
Diffstat: | |
M vote.c | 50 +++++++++++++++++++++++++++++… | |
1 file changed, 48 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/vote.c b/vote.c | |
t@@ -50,6 +50,53 @@ print_html_foot() | |
} | |
void | |
+print_poll_line(char *line) | |
+{ | |
+ printf("<tr><td>"); | |
+ while (*line) { | |
+ switch(*line) { | |
+ case '\t': | |
+ printf("</td><td>"); | |
+ break; | |
+ default: | |
+ putchar(*line); | |
+ break; | |
+ } | |
+ (void)*line++; | |
+ } | |
+ puts("</td></tr>"); | |
+} | |
+ | |
+void | |
+print_poll_file(FILE *fp) | |
+{ | |
+ char *line = NULL; | |
+ size_t linesize = 0; | |
+ ssize_t linelen; | |
+ unsigned int lineno = 0; | |
+ | |
+ while ((linelen = getline(&line, &linesize, fp)) != -1) { | |
+ lineno++; | |
+ if (line[linelen - 1] == '\n') | |
+ line[--linelen] = '\0'; | |
+ | |
+ if (lineno == 1) { | |
+ printf("<h1>"); | |
+ fwrite(line, linelen, 1, stdout); | |
+ printf("</h1>"); | |
+ printf("<table>\n"); | |
+ } else { | |
+ print_poll_line(line); | |
+ } | |
+ /* puts("<br>"); */ | |
+ } | |
+ free(line); | |
+ if (ferror(fp)) | |
+ err(1, "print_poll_file: getline"); | |
+ puts("</table>"); | |
+} | |
+ | |
+void | |
show_poll(const char *poll_name) | |
{ | |
FILE *fd; | |
t@@ -67,10 +114,9 @@ show_poll(const char *poll_name) | |
http_status(404); | |
exit(1); | |
} else { | |
+ print_poll_file(fd); | |
fclose(fd); | |
} | |
- | |
- printf("<h2>poll: '%s'</h2>\n", poll); | |
} | |
void |