duckduckgo: gopher: fix pledge and unveil - frontends - front-ends for some sites (experiment)
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 07a5a89d2c8b3dab2fc85ff616e98d34b0edcd21
(DIR) parent 750369d997d681680d0a6dfc115ef6314fa18bfa
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 25 Oct 2020 13:21:19 +0100
duckduckgo: gopher: fix pledge and unveil
Add support for gophernicus env variable.
Diffstat:
M duckduckgo/gopher.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/duckduckgo/gopher.c b/duckduckgo/gopher.c
@@ -1,7 +1,7 @@
#include <sys/types.h>
#include <ctype.h>
-#include <err.h>
+#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
@@ -10,6 +10,7 @@
#include <wchar.h>
#include "duckduckgo.h"
+#include "https.h"
#include "util.h"
#define OUT(s) fputs(s, stdout)
@@ -31,11 +32,23 @@ main(void)
host = p;
if ((p = getenv("SERVER_PORT")))
port = p;
- if ((p = getenv("X_GOPHER_SEARCH")))
+ if (!(p = getenv("X_GOPHER_SEARCH"))) /* geomyidae */
+ p = getenv("SEARCHREQUEST"); /* gophernicus */
+ if (p)
search = p;
- if (pledge("stdio", NULL) == -1)
- err(1, "pledge");
+ if (pledge("stdio dns inet rpath unveil", NULL) == -1) {
+ fprintf(stderr, "pledge: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (unveil(TLS_CA_CERT_FILE, "r") == -1) {
+ fprintf(stderr, "unveil: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (unveil(NULL, NULL) == -1) {
+ fprintf(stderr, "unveil: %s\n", strerror(errno));
+ exit(1);
+ }
if (search == NULL) {
printf("3\tSpecify a search term\t%s\t%s\r\n", host, port);