tvote.c: use err() for error handling and exit - vote - simple cgi voting syste… | |
git clone git://src.adamsgaard.dk/vote | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3934b097745f258d593dc8eaf39073e60e1872fc | |
parent 5190a3453c2755d07cb5e6afeb9689d27275d4da | |
Author: Anders Damsgaard <[email protected]> | |
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(-) | |
--- | |
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(… | |
- die(500); | |
+ http_status(500); | |
+ err(1, "mkdir '%s' failed", POLLS_DIR); | |
} | |
} | |