Update the documentation to reflect the new flag-centric usage - quark - quark web server
 (HTM) git clone git://git.suckless.org/quark
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit a20136fa18dba7fd44812be235010a4517aef783
 (DIR) parent 444b8f5b32d0263f1a20e18eb3044bfeed334361
 (HTM) Author: Laslo Hunhold <dev@frign.de>
       Date:   Mon,  5 Mar 2018 09:51:29 +0100
       
       Update the documentation to reflect the new flag-centric usage
       
       Diffstat:
         M http.c                              |       2 +-
         M main.c                              |       8 ++++----
         M quark.1                             |     125 ++++++++++++++++++++++---------
         M util.h                              |       2 +-
       
       4 files changed, 96 insertions(+), 41 deletions(-)
       ---
 (DIR) diff --git a/http.c b/http.c
       @@ -336,7 +336,7 @@ http_send_response(int fd, struct request *r)
                                                return http_send_status(fd, (errno == EACCES) ?
                                                                        S_FORBIDDEN : S_NOT_FOUND);
                                        }
       -                                vhostmatch = s.vhost[i].name;
       +                                vhostmatch = s.vhost[i].chost;
                                        break;
                                }
                        }
 (DIR) diff --git a/main.c b/main.c
       @@ -94,10 +94,10 @@ static void
        usage(void)
        {
                const char *opts = "[-u user] [-g group] [-n num] [-d dir] [-l] "
       -                           "[-i index] [-v vhost] ... [-m map] ...";
       +                           "[-i file] [-v vhost] ... [-m map] ...";
        
       -        die("usage: %s -h host    -p port  %s\n"
       -            "       %s -U socket [-p port] %s", argv0,
       +        die("usage: %s -h host -p port %s\n"
       +            "       %s -U file [-p port] %s", argv0,
                    opts, argv0, opts);
        }
        
       @@ -170,7 +170,7 @@ main(int argc, char *argv[])
                                                     sizeof(struct vhost)))) {
                                die("reallocarray:");
                        }
       -                if (!(s.vhost[s.vhost_len - 1].name   = strtok(tok,  " ")) ||
       +                if (!(s.vhost[s.vhost_len - 1].chost  = strtok(tok,  " ")) ||
                            !(s.vhost[s.vhost_len - 1].regex  = strtok(NULL, " ")) ||
                            !(s.vhost[s.vhost_len - 1].dir    = strtok(NULL, " ")) ||
                            !(s.vhost[s.vhost_len - 1].prefix = strtok(NULL, " ")) ||
 (DIR) diff --git a/quark.1 b/quark.1
       @@ -1,65 +1,120 @@
       -.Dd 2018-02-05
       +.Dd 2018-03-05
        .Dt QUARK 1
       +.Os suckless.org
        .Sh NAME
        .Nm quark
       -.Nd simple web server
       +.Nd simple static web server
        .Sh SYNOPSIS
        .Nm
       -.Op Fl l | L
       -.Op Fl v | V
       -.Oo
       -.Oo
       -.Op Fl h Ar host
       -.Op Fl p Ar port
       -.Oc
       -|
       -.Op Fl U Ar sockfile
       -.Oc
       +.Fl h Ar host
       +.Fl p Ar port
       +.Op Fl u Ar user
       +.Op Fl g Ar group
       +.Op Fl n Ar num
        .Op Fl d Ar dir
       +.Op Fl l
       +.Op Fl i Ar file
       +.Oo Fl v Ar vhost Oc ...
       +.Oo Fl m Ar map Oc ...
       +.Nm
       +.Fl U Ar file
       +.Op Fl p Ar port
        .Op Fl u Ar user
        .Op Fl g Ar group
       +.Op Fl n Ar num
       +.Op Fl d Ar dir
       +.Op Fl l
       +.Op Fl i Ar file
       +.Oo Fl v Ar vhost Oc ...
       +.Oo Fl m Ar map Oc ...
        .Sh DESCRIPTION
        .Nm
       -is a simple HTTP GET only web server that can be multiplexed using
       -UNIX-domain sockets.
       +is a simple HTTP GET/HEAD-only web server for static content.
        .Sh OPTIONS
        .Bl -tag -width Ds
        .It Fl d Ar dir
        Serve
        .Ar dir
        after chrooting into it.
       -.It Fl l
       -Disable directory listing.
       -.It Fl L
       -Enable directory listing.
       +The default is ".".
        .It Fl g Ar group
       -Set group ID to the ID of
       -.Ar group
       -when dropping privileges.
       +Set group ID when dropping privileges, and in socket mode the group of the
       +socket file, to the ID of
       +.Ar group .
       +The default is "nogroup".
        .It Fl h Ar host
        Use
        .Ar host
        as the server hostname.
       +.It Fl i Ar file
       +Set
       +.Ar file
       +as the directory index.
       +The default is "index.html".
       +.It Fl l
       +Enable directory listing.
       +.It Fl m Ar map
       +Add the target prefix mapping rule specified by
       +.Ar map ,
       +which has the form
       +.Qq Pa chost from to ,
       +where each element is separated with whitespace.
       +.Pp
       +The prefix
       +.Pa from
       +of all matching targets, especially only of those requests for the canonical
       +virtual host
       +.Pa chost
       +when virtual hosts are specified, is then replaced with
       +.Pa to .
       +If no virtual hosts are given,
       +.Pa chost
       +is ignored.
       +.It Fl n Ar num
       +Set the maximum number of threads to
       +.Ar num .
       +The default is 512.
        .It Fl p Ar port
       -Listen on port
       +In host mode, listen on port
        .Ar port
        for incoming connections.
       -.It Fl u Ar user
       -Set user ID to the ID of
       -.Ar user
       -when dropping privileges.
       -.It Fl U Ar sockfile
       -Create the UNIX-domain socket file
       -.Ar sockfile ,
       +In socket mode, use
       +.Ar port
       +for constructing proper virtual host
       +redirects on non-standard ports.
       +.It Fl U Ar file
       +Create the UNIX-domain socket
       +.Ar file ,
        listen on it for incoming connections and remove it on exit.
       -Its user and group owners are equal to the user and group IDs used for dropping
       -privileges to.
       -.It Fl v
       -Disable virtual hosts.
       -.It Fl V
       -Enable virtual hosts.
       +.It Fl u Ar user
       +Set user ID when dropping privileges,
       +and in socket mode the user of the socket file,
       +to the ID of
       +.Ar user .
       +The default is "nobody".
       +.It Fl v Ar vhost
       +Add the virtual host specified by
       +.Ar vhost ,
       +which has the form
       +.Qq Pa chost regex dir prefix ,
       +where each element is separated with whitespace.
       +.Pp
       +A request matching the virtual host regular expression
       +.Pa regex
       +(see
       +.Xr regex 3)
       +is redirected to the canonical host
       +.Pa chost ,
       +if they differ, using the directory
       +.Pa dir
       +as the root directory, optionally prefixing the target with
       +.Pa prefix .
       +If any virtual hosts are specified, all requests on non-matching
       +hosts are discarded.
        .El
        .Sh CUSTOMIZATION
        .Nm
        can be customized by creating a custom config.h from config.def.h and
        (re)compiling the source code. This keeps it fast, secure and simple.
       +.Sh AUTHORS
       +.An Laslo Hunhold Aq Mt dev@frign.de
 (DIR) diff --git a/util.h b/util.h
       @@ -10,7 +10,7 @@
        
        /* main server struct */
        struct vhost {
       -        char *name;
       +        char *chost;
                char *regex;
                char *dir;
                char *prefix;