tcheck if polls/ exists, create it if not - vote - simple cgi voting system for web and gopher (HTM) git clone git://src.adamsgaard.dk/vote (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 338931d646f13dcfa659fe1ecebefcc79abdda1b (DIR) parent cb2cf1d1ce9a181c872544f55ef5531725e57864 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk> Date: Sun, 27 Sep 2020 01:09:12 +0200 check if polls/ exists, create it if not Diffstat: M vote.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) --- (DIR) diff --git a/vote.c b/vote.c t@@ -6,6 +6,7 @@ #include <errno.h> #define OUT(s) (fputs((s), stdout)) +#define POLLS_DIR "polls" void print_html_head() { t@@ -39,17 +40,21 @@ int main() { char *query; char *q; + struct stat sb; - if (pledge("stdio cpath", NULL) == -1) { + if (pledge("stdio cpath rpath", NULL) == -1) { fprintf(stderr, "pledge: %s\n", strerror(errno)); OUT("Status: 500 Internal Server Error\r\n\r\n"); exit(1); } + if (stat(POLLS_DIR, &sb) == -1) { + fprintf(stderr, "dir %s does not exist: %s\n", POLLS_DIR, strerror(errno)); - if (mkdir("polls", 0755) == -1) { - fprintf(stderr, "mkdir polls/ failed: %s\n", strerror(errno)); - OUT("Status: 500 Internal Server Error\r\n\r\n"); - exit(0); + if (mkdir(POLLS_DIR, 0755) == -1) { + fprintf(stderr, "mkdir polls/ failed: %s\n", strerror(errno)); + OUT("Status: 500 Internal Server Error\r\n\r\n"); + exit(0); + } } if (!(query = getenv("QUERY_STRING")))