summary refs log tree commit diff
path: root/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server.c')
-rw-r--r--server.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/server.c b/server.c
index c384020..0ed1c9c 100644
--- a/server.c
+++ b/server.c
@@ -77,25 +77,38 @@ static enum kcgi_err dispatch(struct kreq *req) {
 	}
 }
 
+#define ENV "SCOOPER_"
+
 int main(int argc, char *argv[]) {
+	const char *path = NULL;
 	bool test = false;
 
+	const char *val;
+	if ((val = getenv(ENV "DATABASE"))) path = val;
+	if ((val = getenv(ENV "GAP"))) eventsGap = strtol(val, NULL, 10);
+	if ((val = getenv(ENV "LIMIT"))) eventsLimit = strtol(val, NULL, 10);
+	if ((val = getenv(ENV "OVERLAP"))) eventsOverlap = strtol(val, NULL, 10);
+	if ((val = getenv(ENV "PUBLIC"))) contextsPublic = (val[0] != '0');
+	if ((val = getenv(ENV "RECENT"))) contextsRecent = strtol(val, NULL, 10);
+	if ((val = getenv(ENV "STYLESHEET"))) htmlStylesheet = val;
+
 	for (int opt; 0 < (opt = getopt(argc, argv, "cg:l:o:pr:s:"));) {
 		switch (opt) {
-			break; case 'g': eventsGap = strtol(optarg, NULL, 10);
-			break; case 'o': eventsOverlap = strtol(optarg, NULL, 10);
 			break; case 'c': test = true;
+			break; case 'g': eventsGap = strtol(optarg, NULL, 10);
 			break; case 'l': eventsLimit = strtol(optarg, NULL, 10);
+			break; case 'o': eventsOverlap = strtol(optarg, NULL, 10);
 			break; case 'p': contextsPublic = true;
 			break; case 'r': contextsRecent = strtol(optarg, NULL, 10);
 			break; case 's': htmlStylesheet = optarg;
 			break; default:  return EX_USAGE;
 		}
 	}
-	if (optind == argc) errx(EX_USAGE, "database path required");
+	if (optind < argc) path = argv[optind];
+	if (!path) errx(EX_USAGE, "database path required");
 
-	int error = sqlite3_open_v2(argv[optind], &db, SQLITE_OPEN_READONLY, NULL);
-	if (error) errx(EX_NOINPUT, "%s: %s", argv[optind], sqlite3_errmsg(db));
+	int error = sqlite3_open_v2(path, &db, SQLITE_OPEN_READONLY, NULL);
+	if (error) errx(EX_NOINPUT, "%s: %s", path, sqlite3_errmsg(db));
 	atexit(finalizeAll);
 
 	sqlite3_stmt *check;
bject'>Call tls_error when tls_connect_socket failsJune McEnroe 2018-09-15Try successive getaddrinfo resultsJune McEnroe 2018-09-15Render README from chatte.7June McEnroe 2018-09-14Factor out uiPrompt to call on nick changeJune McEnroe 2018-09-14Run test binaries with set -e and semicolonsJune McEnroe BSD make behaves oddly when trying to replace with &. 2018-09-14Fail target when any test binary failsJune McEnroe 2018-09-14Run tests in default targetJune McEnroe 2018-09-14Add termEvent testsJune McEnroe 2018-09-14Check width of entire next word including codesJune McEnroe This results in a tiny bit of premature wrapping for color codes, but that isn't a problem. 2018-09-14Remove word handling from formatParseJune McEnroe 2018-09-14Apply consecutive formatting codes at onceJune McEnroe Fixes the failing splits test. 2018-09-14Add tests for formatParseJune McEnroe With one currently failing so you know they're worth it. 2018-09-13Preview with nick in input windowJune McEnroe 2018-09-13Never send PRIVMSG to TagStatus or TagVerboseJune McEnroe 2018-09-13Move color selection to format.cJune McEnroe 2018-09-13Fix len for format->split at end of stringJune McEnroe 2018-09-13Avoid uninitialized x in uiReadJune McEnroe 2018-09-13Add IRCDefault to colors enumJune McEnroe 2018-09-13Return a format->split even at the end of the stringJune McEnroe 2018-09-13Fix weird tab-complete after commaJune McEnroe I have no idea why I did this. 2018-09-13Rewrite UI againJune McEnroe The persistent topic is gone and the status line is now at the top. The status formatting still needs to be reworked. I also want to try showing the nick in the input window so it really looks like your next message. 2018-09-12Add note about C-oJune McEnroe Why are there so few well usable ctrl key bindings? 2018-09-12Use formatParse split to position input cursorJune McEnroe 2018-09-12Factor out IRC formatting parsingJune McEnroe 2018-09-11Add /help equivalent to /manJune McEnroe 2018-09-11Don't render every PM as a pingJune McEnroe 2018-09-11Add urlOpenMatchJune McEnroe 2018-09-10Depend on man.sh for chroot.tar targetJune McEnroe 2018-09-10Set LESSSECURE=1 in man.shJune McEnroe Ridiculous. 2018-09-10Add /man commandJune McEnroe 2018-09-10Install man page in chrootJune McEnroe 2018-09-10Install man pageJune McEnroe 2018-09-10Split keys into subsections and document colorsJune McEnroe 2018-09-10Add "blank" lines to chatte.1June McEnroe 2018-09-10Document key bindings in chatte.1June McEnroe 2018-09-08Document slash commands in chatte.1June McEnroe