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