tvote.c: use err() for error handling and exit - 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 3934b097745f258d593dc8eaf39073e60e1872fc (DIR) parent 5190a3453c2755d07cb5e6afeb9689d27275d4da (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk> Date: Sun, 27 Sep 2020 09:12:16 +0200 vote.c: use err() for error handling and exit Diffstat: M vote.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) --- (DIR) diff --git a/vote.c b/vote.c t@@ -3,9 +3,10 @@ #include <unistd.h> #include <string.h> #include <sys/stat.h> -#include <errno.h> +#include <err.h> #include <fcntl.h> #include <limits.h> + #include "util.h" #define OUT(s) (fputs((s), stdout)) t@@ -14,7 +15,7 @@ static char poll[1024]; void -die(int statuscode) +http_status(int statuscode) { switch(statuscode) { case 401: t@@ -27,11 +28,9 @@ die(int statuscode) OUT("Status: 500 Internal Server Error\r\n\r\n"); break; default: - fprintf(stderr, "unknown status code %d\n", statuscode); + err(1, "unknown status code %d\n", statuscode); OUT("Status: 500 Internal Server Error\r\n\r\n"); } - - exit(statuscode); } void t@@ -60,13 +59,13 @@ show_poll(const char *poll_name) strlcpy(buf, poll_name, sizeof(buf)); escapechars(buf); if (snprintf(fname, sizeof(fname), "%s/%s", POLLS_DIR, buf) < 0) { - fprintf(stderr, "snprintf fname %s/%s\n", POLLS_DIR, buf); - die(500); + http_status(500); + err(1, "snprintf fname %s/%s", POLLS_DIR, buf); } if (!(fd = fopen(fname, "r"))) { - fprintf(stderr, "poll_open %s: %s\n", poll, strerror(errno)); - die(404); + http_status(404); + err(1, "poll_open fopen %s", poll); } else { fclose(fd); } t@@ -84,7 +83,8 @@ parse_query() if ((p = getparam(query, "poll"))) { if (decodeparam(poll, sizeof(poll), p) == -1) { - die(401); + http_status(401); + exit(1); } } } t@@ -95,19 +95,19 @@ main() struct stat sb; if (unveil(getenv("PWD"), NULL) == -1 || unveil(NULL, NULL) == -1) { - fprintf(stderr, "unveil: %s\n", strerror(errno)); - die(500); + http_status(500); + err(1, "unveil"); } if (pledge("stdio cpath rpath", NULL) == -1) { - fprintf(stderr, "pledge: %s\n", strerror(errno)); - die(500); + http_status(500); + err(1, "pledge"); } if (stat(POLLS_DIR, &sb) == -1) { if (mkdir(POLLS_DIR, 0755) == -1) { - fprintf(stderr, "mkdir polls/ failed: %s\n", strerror(errno)); - die(500); + http_status(500); + err(1, "mkdir '%s' failed", POLLS_DIR); } }