tlist polls and fix install target - vote - simple cgi voting system for web an… | |
git clone git://src.adamsgaard.dk/vote | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 524a5c649d588c13e3ec21a599765bb55bee2501 | |
parent 56220268f3d1ce5110b6a3b2a3281a9d6e21f401 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Mon, 28 Sep 2020 00:15:40 +0200 | |
list polls and fix install target | |
Diffstat: | |
M Makefile | 2 +- | |
M vote.c | 47 +++++++++++++++++++++++++++--… | |
2 files changed, 43 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
t@@ -17,7 +17,7 @@ ${NAME}: ${OBJ} | |
${CC} -o $@ ${OBJ} ${HERE_LDFLAGS} | |
install: ${NAME} | |
- mkdir -p | |
+ mkdir -p ${PREFIX}/${NAME} | |
chmod 775 ${PREFIX}/${NAME} | |
chgrp www ${PREFIX}/${NAME} | |
cp -f ${NAME} ${PREFIX}/${NAME}/ | |
diff --git a/vote.c b/vote.c | |
t@@ -11,6 +11,7 @@ | |
#include "util.h" | |
+#define LEN(s) (sizeof(s) / sizeof(s[0])) | |
#define OUT(s) (fputs((s), stdout)) | |
#define POLLS_DIR "polls" | |
t@@ -199,13 +200,48 @@ show_poll(const char *poll_name) | |
void | |
list_polls() | |
{ | |
- /* something with fts_open, fts_read */ | |
- puts("listing polls"); | |
+ FTS *ftsp; | |
+ FTSENT *p; | |
+ int fts_options = FTS_COMFOLLOW | FTS_LOGICAL | FTS_NOCHDIR; | |
+ /* int fts_options = FTS_NOCHDIR | FTS_PHYSICAL; */ | |
+ /* char *path = POLLS_DIR; */ | |
+ char *paths[] = { (char*)POLLS_DIR, NULL }; | |
+ | |
+ if ((ftsp = fts_open(paths, fts_options, NULL)) == NULL) { | |
+ fprintf(stderr, "could not fts_open"); | |
+ err(1, "list_polls: fts_open"); | |
+ } | |
+ | |
+ puts("<h2>Poll listing</h2>"); | |
+ | |
+ while ((p = fts_read(ftsp)) != NULL) { | |
+ switch (p->fts_info) { | |
+ case FTS_F: | |
+ printf("<a href=\"?poll=%s\">%s</a>\n", | |
+ p->fts_path + LEN(POLLS_DIR), | |
+ p->fts_path + LEN(POLLS_DIR)); | |
+ break; | |
+ default: | |
+ break; | |
+ } | |
+ } | |
+ fts_close(ftsp); | |
} | |
+/* | |
+ while ((ch = fgetc(ft)) != EOF) { | |
+ if (ch == 'i') { | |
+ fseek(ft, -1, SEEK_CUR); | |
+ fputc('a',ft); | |
+ fseek(ft, 0, SEEK_CUR); | |
+ } | |
+ } | |
+*/ | |
+ | |
void | |
print_poll_create_form() | |
{ | |
+ OUT("<h2>Create new poll</h2>"); | |
OUT("<form method=\"get\" action=\"\">\n" | |
"<input type=\"hidden\" name=\"create\" value=\"1\" />\n" | |
"<table class=\"create\" width=\"100%\" border=\"0\" " | |
t@@ -305,11 +341,12 @@ main() | |
if (*create) { | |
if (create_poll_file(poll, question, options) == 0) | |
show_poll(poll); | |
- } else if (*poll) | |
+ } else if (*poll) { | |
show_poll(poll); | |
- else | |
+ } else { | |
+ list_polls(); | |
print_poll_create_form(); | |
- /* list_polls(); */ | |
+ } | |
print_html_foot(); | |