quark

quark web server
git clone git://git.suckless.org/quark
Log | Files | Refs | LICENSE

commit 8aa3e3f48f9e9dcc8cf4a51916c78d9406a06763
parent 3962978bddbafdcfd94538887e5ce10c698e209a
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Thu, 14 Aug 2014 16:56:07 +0000

config: allow to set options as application arguments

Diffstat:
Mconfig.def.h | 23++++++++++++-----------
Mquark.c | 39++++++++++++++++++++++++++++++++++++---
2 files changed, 48 insertions(+), 14 deletions(-)

diff --git a/config.def.h b/config.def.h @@ -1,25 +1,26 @@ /* quark configuration */ -static const char servername[] = "127.0.0.1"; -static const char serverport[] = "80"; -static const char docroot[] = "."; -static const char docindex[] = "index.html"; -static const char *user = "nobody"; -static const char *group = "nogroup"; -static const char cgi_dir[] = "/var/www/werc-dev/bin"; -static const char cgi_script[] = "./werc.rc"; -static const int cgi_mode = 0; +static const char *servername = "127.0.0.1"; +static const char *serverport = "80"; +static const char *docroot = "."; +static const char *docindex = "index.html"; +static const char *user = "nobody"; +static const char *group = "nobody"; +static const char *cgi_dir = "."; +static const char *cgi_script = "/werc.rc"; +static int cgi_mode = 0; static const MimeType servermimes[] = { { "html", "text/html; charset=UTF-8" }, { "htm", "text/html; charset=UTF-8" }, { "css", "text/css" }, + { "js", "application/javascript" }, { "txt", "text/plain" }, - { "text", "text/plain" }, { "md", "text/plain" }, { "png", "image/png" }, { "gif", "image/gif" }, - { "jpg", "image/jpg" }, + { "jpeg", "image/jpeg" }, + { "jpg", "image/jpeg" }, { "iso", "application/x-iso9660-image" }, { "gz", "application/x-gtar" }, { "pdf", "application/x-pdf" }, diff --git a/quark.c b/quark.c @@ -505,6 +505,12 @@ sighandler(int sig) { } } +void +usage(void) { + die("usage: %s [-c] [-d cgidir] [-e cgiscript] [-u user] [-g group] " + "[-i index] [-r docroot] [-s server] [-p port] [-v]\n", argv0); +} + int main(int argc, char *argv[]) { struct addrinfo hints, *ai = NULL; @@ -513,16 +519,43 @@ main(int argc, char *argv[]) { int i; ARGBEGIN { + case 'c': + cgi_mode = 1; + break; + case 'd': + cgi_dir = EARGF(usage()); + break; + case 'e': + cgi_script = EARGF(usage()); + break; + case 'u': + user = EARGF(usage()); + break; + case 'g': + group = EARGF(usage()); + break; + case 'i': + docindex = EARGF(usage()); + break; + case 'r': + docroot = EARGF(usage()); + break; + case 'p': + serverport = EARGF(usage()); + break; + case 's': + servername = EARGF(usage()); + break; case 'v': die("quark-"VERSION"\n"); default: - die("usage: %s [-v]\n", argv0); + usage(); } ARGEND; /* sanity checks */ - if (user && !(upwd = getpwnam(user))) + if (*user && !(upwd = getpwnam(user))) die("error\tinvalid user %s\n", user); - if (group && !(gpwd = getgrnam(group))) + if (*group && !(gpwd = getgrnam(group))) die("error\tinvalid group %s\n", group); signal(SIGCHLD, sighandler);