itlist polls and fix install target - vote - simple cgi voting system for web and gopher Err mx1.adamsgaard.dk 70 hgit clone git://src.adamsgaard.dk/vote URL:git://src.adamsgaard.dk/vote mx1.adamsgaard.dk 70 1Log /src/vote/log.gph mx1.adamsgaard.dk 70 1Files /src/vote/files.gph mx1.adamsgaard.dk 70 1Refs /src/vote/refs.gph mx1.adamsgaard.dk 70 1README /src/vote/file/README.gph mx1.adamsgaard.dk 70 1LICENSE /src/vote/file/LICENSE.gph mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1commit 524a5c649d588c13e3ec21a599765bb55bee2501 /src/vote/commit/524a5c649d588c13e3ec21a599765bb55bee2501.gph mx1.adamsgaard.dk 70 1parent 56220268f3d1ce5110b6a3b2a3281a9d6e21f401 /src/vote/commit/56220268f3d1ce5110b6a3b2a3281a9d6e21f401.gph mx1.adamsgaard.dk 70 hAuthor: Anders Damsgaard URL:mailto:anders@adamsgaard.dk mx1.adamsgaard.dk 70 iDate: Mon, 28 Sep 2020 00:15:40 +0200 Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 ilist polls and fix install target Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 iDiffstat: Err mx1.adamsgaard.dk 70 i M Makefile | 2 +- Err mx1.adamsgaard.dk 70 i M vote.c | 47 +++++++++++++++++++++++++++---- Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i2 files changed, 43 insertions(+), 6 deletions(-) Err mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1diff --git a/Makefile b/Makefile /src/vote/file/Makefile.gph mx1.adamsgaard.dk 70 it@@ -17,7 +17,7 @@ ${NAME}: ${OBJ} Err mx1.adamsgaard.dk 70 i ${CC} -o $@ ${OBJ} ${HERE_LDFLAGS} Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i install: ${NAME} Err mx1.adamsgaard.dk 70 i- mkdir -p Err mx1.adamsgaard.dk 70 i+ mkdir -p ${PREFIX}/${NAME} Err mx1.adamsgaard.dk 70 i chmod 775 ${PREFIX}/${NAME} Err mx1.adamsgaard.dk 70 i chgrp www ${PREFIX}/${NAME} Err mx1.adamsgaard.dk 70 i cp -f ${NAME} ${PREFIX}/${NAME}/ Err mx1.adamsgaard.dk 70 1diff --git a/vote.c b/vote.c /src/vote/file/vote.c.gph mx1.adamsgaard.dk 70 it@@ -11,6 +11,7 @@ Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i #include "util.h" Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i+#define LEN(s) (sizeof(s) / sizeof(s[0])) Err mx1.adamsgaard.dk 70 i #define OUT(s) (fputs((s), stdout)) Err mx1.adamsgaard.dk 70 i #define POLLS_DIR "polls" Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 it@@ -199,13 +200,48 @@ show_poll(const char *poll_name) Err mx1.adamsgaard.dk 70 i void Err mx1.adamsgaard.dk 70 i list_polls() Err mx1.adamsgaard.dk 70 i { Err mx1.adamsgaard.dk 70 i- /* something with fts_open, fts_read */ Err mx1.adamsgaard.dk 70 i- puts("listing polls"); Err mx1.adamsgaard.dk 70 i+ FTS *ftsp; Err mx1.adamsgaard.dk 70 i+ FTSENT *p; Err mx1.adamsgaard.dk 70 i+ int fts_options = FTS_COMFOLLOW | FTS_LOGICAL | FTS_NOCHDIR; Err mx1.adamsgaard.dk 70 i+ /* int fts_options = FTS_NOCHDIR | FTS_PHYSICAL; */ Err mx1.adamsgaard.dk 70 i+ /* char *path = POLLS_DIR; */ Err mx1.adamsgaard.dk 70 i+ char *paths[] = { (char*)POLLS_DIR, NULL }; Err mx1.adamsgaard.dk 70 i+ Err mx1.adamsgaard.dk 70 i+ if ((ftsp = fts_open(paths, fts_options, NULL)) == NULL) { Err mx1.adamsgaard.dk 70 i+ fprintf(stderr, "could not fts_open"); Err mx1.adamsgaard.dk 70 i+ err(1, "list_polls: fts_open"); Err mx1.adamsgaard.dk 70 i+ } Err mx1.adamsgaard.dk 70 i+ Err mx1.adamsgaard.dk 70 i+ puts("

Poll listing

"); Err mx1.adamsgaard.dk 70 i+ Err mx1.adamsgaard.dk 70 i+ while ((p = fts_read(ftsp)) != NULL) { Err mx1.adamsgaard.dk 70 i+ switch (p->fts_info) { Err mx1.adamsgaard.dk 70 i+ case FTS_F: Err mx1.adamsgaard.dk 70 i+ printf("%s\n", Err mx1.adamsgaard.dk 70 i+ p->fts_path + LEN(POLLS_DIR), Err mx1.adamsgaard.dk 70 i+ p->fts_path + LEN(POLLS_DIR)); Err mx1.adamsgaard.dk 70 i+ break; Err mx1.adamsgaard.dk 70 i+ default: Err mx1.adamsgaard.dk 70 i+ break; Err mx1.adamsgaard.dk 70 i+ } Err mx1.adamsgaard.dk 70 i+ } Err mx1.adamsgaard.dk 70 i+ fts_close(ftsp); Err mx1.adamsgaard.dk 70 i } Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i+/* Err mx1.adamsgaard.dk 70 i+ while ((ch = fgetc(ft)) != EOF) { Err mx1.adamsgaard.dk 70 i+ if (ch == 'i') { Err mx1.adamsgaard.dk 70 i+ fseek(ft, -1, SEEK_CUR); Err mx1.adamsgaard.dk 70 i+ fputc('a',ft); Err mx1.adamsgaard.dk 70 i+ fseek(ft, 0, SEEK_CUR); Err mx1.adamsgaard.dk 70 i+ } Err mx1.adamsgaard.dk 70 i+ } Err mx1.adamsgaard.dk 70 i+*/ Err mx1.adamsgaard.dk 70 i+ Err mx1.adamsgaard.dk 70 i void Err mx1.adamsgaard.dk 70 i print_poll_create_form() Err mx1.adamsgaard.dk 70 i { Err mx1.adamsgaard.dk 70 i+ OUT("

Create new poll

"); Err mx1.adamsgaard.dk 70 i OUT("
\n" Err mx1.adamsgaard.dk 70 i "\n" Err mx1.adamsgaard.dk 70 i "