summary refs log tree commit diff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/main.c b/main.c
index 324309f..3c364a1 100644
--- a/main.c
+++ b/main.c
@@ -37,7 +37,7 @@ main(int argc, char **argv)
 
 	for (i = 1; i < 4; ++i)
 		if (!argv[i] || !*argv[i])
-			errx(1, "usage: %s hostname bindaddr port", argv[0]);
+			errx(1, "usage: %s hostname bindaddr port [config]", argv[0]);
 	hostname = argv[1];
 	host = argv[2];
 	port = strtoul(argv[3], &p, 10);
@@ -45,9 +45,20 @@ main(int argc, char **argv)
 		errx(1, "invalid port");
 
 #ifdef __OpenBSD__
-	if (pledge("stdio inet", ""))
+	if (argv[4] && unveil(argv[4], "r"))
+		err(1, "unveil()");
+	if (pledge("stdio inet rpath unveil", ""))
 		err(1, "pledge()");
 #endif /* __OpenBSD__ */
 
+	if (argv[4])
+		readcfg(argv[4]);
+
+#ifdef __OpenBSD__
+	if (argv[4] && (unveil(argv[4], "") || unveil(NULL, NULL)))
+		err(1, "unveil()");
+	if (pledge("stdio inet", ""))
+		err(1, "pledge()");
+#endif /* __OpenBSD__ */
 	ircd();
 }