Allow the specification of the html5 db path. - surf - Surf web browser.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 0369394f5033b89cc346b682b90a927bdb17f11a
 (DIR) parent aade850357394f2a14cfaa31ffd68be7ac98a370
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Wed, 19 Apr 2017 18:38:53 +0200
       
       Allow the specification of the html5 db path.
       
       Diffstat:
         config.def.h                        |     138 +++++++++++++++----------------
         surf.c                              |       3 +++
       
       2 files changed, 71 insertions(+), 70 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -1,10 +1,11 @@
        /* modifier 0 means no modifier */
        static char *useragent      = "Mozilla/5.0 (X11; U; Unix; en-US) "
       -                              "AppleWebKit/537.15 (KHTML, like Gecko) "
       -                              "Chrome/24.0.1295.0 Safari/537.15 Surf/"VERSION;
       +        "AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 "
       +        "Safari/537.15 Surf/"VERSION;
        static char *scriptfile     = "~/.surf/script.js";
        static char *styledir       = "~/.surf/styles/";
        static char *cachefolder    = "~/.surf/cache/";
       +static char *dbfolder       = "~/.surf/databases/";
        
        static Bool kioskmode       = FALSE; /* Ignore shortcuts */
        static Bool showindicators  = TRUE;  /* Show indicators in window title */
       @@ -17,10 +18,10 @@ static gfloat zoomlevel = 1.0;       /* Default zoom level */
        /* Soup default features */
        static char *cookiefile     = "~/.surf/cookies.txt";
        static char *cookiepolicies = "Aa@"; /* A: accept all; a: accept nothing,
       -                                      * @: accept all except third party */
       +                                        @: accept all except third party */
        static char *cafile         = "/etc/ssl/certs/ca-certificates.crt";
       -static Bool strictssl       = TRUE; /* strict means if to refuse untrusted
       -                                     * tls/ssl connections */
       +static Bool strictssl       = TRUE; /* strict means if untrusted SSL/TLS
       +                                     * connections should be refused. */
        static time_t sessiontime   = 3600;
        
        /* Webkit default features */
       @@ -42,21 +43,19 @@ static Bool allowgeolocation      = TRUE;
        
        #define SETPROP(p, q, prompt) { \
                .v = (char *[]){ "/bin/sh", "-c", \
       -             "prop=\"`xprop -id $2 $0 " \
       -             "| sed \"s/^$0(STRING) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
       -             "| xargs -0 printf %b | dmenu -p \"$3\"`\" &&" \
       -             "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
       -             p, q, winid, prompt, NULL \
       +                "prop=\"`xprop -id $2 $0 " \
       +                "| sed \"s/^$0(STRING) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
       +                "| xargs -0 printf %b | dmenu -p \"$3\"`\" &&" \
       +                "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
       +                p, q, winid, prompt, NULL \
                } \
        }
        
        /* DOWNLOAD(URI, referer) */
        #define DOWNLOAD(d, r) { \
                .v = (char *[]){ "/bin/sh", "-c", \
       -             "st -e /bin/sh -c \"curl -g -L -J -O --user-agent '$1'" \
       -             " --referer '$2' -b $3 -c $3 '$0';" \
       -             " sleep 5;\"", \
       -             d, useragent, r, cookiefile, NULL \
       +                "/bin/sh -c \"download '$1' '$2' '$3' '$0'\"", \
       +                d, useragent, r, cookiefile, NULL \
                } \
        }
        
       @@ -66,7 +65,7 @@ static Bool allowgeolocation      = TRUE;
         */
        #define PLUMB(u) {\
                .v = (char *[]){ "/bin/sh", "-c", \
       -             "xdg-open \"$0\"", u, NULL \
       +                "plumb \"$0\"", u, NULL \
                } \
        }
        
       @@ -76,8 +75,8 @@ static Bool allowgeolocation      = TRUE;
         * the list.
         */
        static SiteStyle styles[] = {
       -        /* regexp               file in $styledir */
       -        { ".*",                 "default.css" },
       +        /* regexp                file in $styledir */
       +        { ".*",                        "default.css" },
        };
        
        #define MODKEY GDK_CONTROL_MASK
       @@ -88,62 +87,61 @@ static SiteStyle styles[] = {
         * edit the CLEANMASK() macro.
         */
        static Key keys[] = {
       -        /* modifier             keyval      function    arg             Focus */
       -        { MODKEY|GDK_SHIFT_MASK,GDK_r,      reload,     { .b = TRUE } },
       -        { MODKEY,               GDK_r,      reload,     { .b = FALSE } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_p,      print,      { 0 } },
       -
       -        { MODKEY,               GDK_p,      clipboard,  { .b = TRUE } },
       -        { MODKEY,               GDK_y,      clipboard,  { .b = FALSE } },
       -
       -        { MODKEY|GDK_SHIFT_MASK,GDK_j,      zoom,       { .i = -1 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_k,      zoom,       { .i = +1 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_q,      zoom,       { .i = 0  } },
       -        { MODKEY,               GDK_minus,  zoom,       { .i = -1 } },
       -        { MODKEY,               GDK_plus,   zoom,       { .i = +1 } },
       -
       -        { MODKEY,               GDK_l,      navigate,   { .i = +1 } },
       -        { MODKEY,               GDK_h,      navigate,   { .i = -1 } },
       -
       -        { MODKEY,               GDK_j,      scroll_v,   { .i = +1 } },
       -        { MODKEY,               GDK_k,      scroll_v,   { .i = -1 } },
       -        { MODKEY,               GDK_b,      scroll_v,   { .i = -10000 } },
       -        { MODKEY,               GDK_space,  scroll_v,   { .i = +10000 } },
       -        { MODKEY,               GDK_i,      scroll_h,   { .i = +1 } },
       -        { MODKEY,               GDK_u,      scroll_h,   { .i = -1 } },
       -
       -        { 0,                    GDK_F11,    fullscreen, { 0 } },
       -        { 0,                    GDK_Escape, stop,       { 0 } },
       -        { MODKEY,               GDK_o,      source,     { 0 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_o,      inspector,  { 0 } },
       -
       -        { MODKEY,               GDK_g,      spawn,      SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GOTO) },
       -        { MODKEY,               GDK_f,      spawn,      SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
       -        { MODKEY,               GDK_slash,  spawn,      SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_SLASH) },
       -
       -        { MODKEY,               GDK_n,      find,       { .b = TRUE } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_n,      find,       { .b = FALSE } },
       -
       -        { MODKEY|GDK_SHIFT_MASK,GDK_c,      toggle,     { .v = "enable-caret-browsing" } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_i,      toggle,     { .v = "auto-load-images" } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_s,      toggle,     { .v = "enable-scripts" } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_v,      toggle,     { .v = "enable-plugins" } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_t,      togglesoup, { .v = "ssl-strict" } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_a,      togglecookiepolicy, { 0 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_m,      togglestyle, { 0 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_b,      togglescrollbars, { 0 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_g,      togglegeolocation, { 0 } },
       -        { MODKEY|GDK_SHIFT_MASK,GDK_y,      toggleproxy, { 0 } },
       +    /* modifier                    keyval      function    arg             Focus */
       +    { MODKEY|GDK_SHIFT_MASK,GDK_r,      reload,     { .b = TRUE } },
       +    { MODKEY,               GDK_r,      reload,     { .b = FALSE } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_p,      print,      { 0 } },
       +
       +    { MODKEY,               GDK_p,      clipboard,  { .b = TRUE } },
       +    { MODKEY,               GDK_y,      clipboard,  { .b = FALSE } },
       +
       +    { MODKEY|GDK_SHIFT_MASK,GDK_j,      zoom,       { .i = -1 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_k,      zoom,       { .i = +1 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_q,      zoom,       { .i = 0  } },
       +    { MODKEY,               GDK_minus,  zoom,       { .i = -1 } },
       +    { MODKEY,               GDK_plus,   zoom,       { .i = +1 } },
       +
       +    { MODKEY,               GDK_l,      navigate,   { .i = +1 } },
       +    { MODKEY,               GDK_h,      navigate,   { .i = -1 } },
       +
       +    { MODKEY,               GDK_j,      scroll_v,   { .i = +1 } },
       +    { MODKEY,               GDK_k,      scroll_v,   { .i = -1 } },
       +    { MODKEY,               GDK_b,      scroll_v,   { .i = -10000 } },
       +    { MODKEY,               GDK_space,  scroll_v,   { .i = +10000 } },
       +    { MODKEY,               GDK_i,      scroll_h,   { .i = +1 } },
       +    { MODKEY,               GDK_u,      scroll_h,   { .i = -1 } },
       +
       +    { 0,                    GDK_F11,    fullscreen, { 0 } },
       +    { 0,                    GDK_Escape, stop,       { 0 } },
       +    { MODKEY,               GDK_o,      source,     { 0 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_o,      inspector,  { 0 } },
       +
       +    { MODKEY,               GDK_g,      spawn,      SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GOTO) },
       +    { MODKEY,               GDK_f,      spawn,      SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
       +    { MODKEY,               GDK_slash,  spawn,      SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_SLASH) },
       +
       +    { MODKEY,               GDK_n,      find,       { .b = TRUE } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_n,      find,       { .b = FALSE } },
       +
       +    { MODKEY|GDK_SHIFT_MASK,GDK_c,      toggle,     { .v = "enable-caret-browsing" } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_i,      toggle,     { .v = "auto-load-images" } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_s,      toggle,     { .v = "enable-scripts" } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_v,      toggle,     { .v = "enable-plugins" } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_t,      togglesoup, { .v = "ssl-strict" } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_a,      togglecookiepolicy, { 0 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_m,      togglestyle, { 0 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_b,      togglescrollbars, { 0 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_g,      togglegeolocation, { 0 } },
       +    { MODKEY|GDK_SHIFT_MASK,GDK_y,      toggleproxy, { 0 } },
        };
        
        /* button definitions */
        /* click can be ClkDoc, ClkLink, ClkImg, ClkMedia, ClkSel, ClkEdit, ClkAny */
        static Button buttons[] = {
       -        /* click        event mask  button  function        argument */
       -        { ClkLink,      0,          2,      linkopenembed,  { 0 } },
       -        { ClkLink,      MODKEY,     2,      linkopen,       { 0 } },
       -        { ClkLink,      MODKEY,     1,      linkopen,       { 0 } },
       -        { ClkAny,       0,          8,      navigate,       { .i = -1 } },
       -        { ClkAny,       0,          9,      navigate,       { .i = +1 } },
       +    /* click                event mask  button  function        argument */
       +    { ClkLink,              0,          2,      linkopenembed,  { 0 } },
       +    { ClkLink,              MODKEY,     2,      linkopen,       { 0 } },
       +    { ClkLink,              MODKEY,     1,      linkopen,       { 0 } },
       +    { ClkAny,               0,          8,      navigate,       { .i = -1 } },
       +    { ClkAny,               0,          9,      navigate,       { .i = +1 } },
        };
       -
 (DIR) diff --git a/surf.c b/surf.c
       @@ -1042,6 +1042,8 @@ newclient(void)
                runscript(frame);
        
                settings = webkit_web_view_get_settings(c->view);
       +        g_object_set(G_OBJECT(settings), "html5-local-storage-database-path",
       +                        dbfolder, NULL);
                if (!(ua = getenv("SURF_USERAGENT")))
                        ua = useragent;
                g_object_set(G_OBJECT(settings), "user-agent", ua, NULL);
       @@ -1347,6 +1349,7 @@ setup(void)
                cookiefile = buildfile(cookiefile);
                scriptfile = buildfile(scriptfile);
                cachefolder = buildpath(cachefolder);
       +        dbfolder = buildpath(dbfolder);
                if (stylefile == NULL) {
                        styledir = buildpath(styledir);
                        for (i = 0; i < LENGTH(styles); i++) {