URI: 
       Change target prefix mapping argument order - quark - quark web server
  HTML git clone git://git.suckless.org/quark
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
   DIR commit 065394cb64395ed9a6e7cc57e2519ee8f754ce3e
   DIR parent 48ddb8fefb512effefd9b761efa25fd9158e2edc
  HTML Author: Laslo Hunhold <dev@frign.de>
       Date:   Sun, 24 Feb 2019 00:40:46 +0100
       
       Change target prefix mapping argument order
       
       Put the chost-specification at the end and make it optional. This makes
       more sense than having to give an arbitrary useless name in case you
       weren't using virtual hosts in the first place.
       
       While at it, clear up the wording in the manpage.
       
       Signed-off-by: Laslo Hunhold <dev@frign.de>
       
       Diffstat:
         M http.c                              |       6 ++++--
         M main.c                              |      10 ++++++----
         M quark.1                             |      13 ++++++-------
       
       3 files changed, 16 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/http.c b/http.c
       @@ -394,8 +394,10 @@ http_send_response(int fd, struct request *r)
                for (i = 0; i < s.map_len; i++) {
                        len = strlen(s.map[i].from);
                        if (!strncmp(realtarget, s.map[i].from, len)) {
       -                        /* match canonical host if vhosts are enabled */
       -                        if (s.vhost && strcmp(s.map[i].chost, vhostmatch)) {
       +                        /* match canonical host if vhosts are enabled and
       +                         * the mapping specifies a canonical host */
       +                        if (s.vhost && s.map[i].chost &&
       +                            strcmp(s.map[i].chost, vhostmatch)) {
                                        continue;
                                }
        
   DIR diff --git a/main.c b/main.c
       @@ -155,10 +155,12 @@ main(int argc, char *argv[])
                                                   sizeof(struct map)))) {
                                die("reallocarray:");
                        }
       -                if (!(s.map[s.map_len - 1].chost = strtok(tok,  " ")) ||
       -                    !(s.map[s.map_len - 1].from  = strtok(NULL, " ")) ||
       -                    !(s.map[s.map_len - 1].to    = strtok(NULL, " ")) ||
       -                    strtok(NULL, "")) {
       +                if (!(s.map[s.map_len - 1].from  = strtok(tok,  " ")) ||
       +                    !(s.map[s.map_len - 1].to    = strtok(NULL, " "))) {
       +                        usage();
       +                }
       +                s.map[s.map_len - 1].chost = strtok(NULL, " ");
       +                if (strtok(NULL, "")) {
                                usage();
                        }
                        break;
   DIR diff --git a/quark.1 b/quark.1
       @@ -1,4 +1,4 @@
       -.Dd 2019-02-18
       +.Dd 2019-02-24
        .Dt QUARK 1
        .Os suckless.org
        .Sh NAME
       @@ -57,16 +57,15 @@ Enable directory listing.
        Add the target prefix mapping rule specified by
        .Ar map ,
        which has the form
       -.Qq Pa chost from to ,
       +.Qq Pa from to [chost] ,
        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 .
       +of all matching targets is replaced with
       +.Pa to ,
       +optionally limited to the canonical virtual host
       +.Pa chost .
        If no virtual hosts are given,
        .Pa chost
        is ignored.