tIntroduce new data structure for handling settings - surf - customized build of surf, the suckless webkit browser
 (HTM) git clone git://src.adamsgaard.dk/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2aa1c38aed02bfc37379476a07516172b2817cae
 (DIR) parent d04fb9bff3796025eeedf0f32ae1c0a40366f717
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Sun, 29 Nov 2015 17:16:48 +0100
       
       Introduce new data structure for handling settings
       
       Diffstat:
         M surf.c                              |      40 +++++++++++++++++++++++++++++--
       
       1 file changed, 38 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/surf.c b/surf.c
       t@@ -31,18 +31,42 @@
        
        #define LENGTH(x)               (sizeof(x) / sizeof(x[0]))
        #define CLEANMASK(mask)         (mask & (MODKEY|GDK_SHIFT_MASK))
       +#define SETB(p, s)              [p] = (Parameter){ { .b = s }, }
       +#define SETI(p, s)              [p] = (Parameter){ { .i = s }, }
       +#define SETV(p, s)              [p] = (Parameter){ { .v = s }, }
       +#define SETF(p, s)              [p] = (Parameter){ { .f = s }, }
       +#define FSETB(p, s)             [p] = (Parameter){ { .b = s }, 1 }
       +#define FSETI(p, s)             [p] = (Parameter){ { .i = s }, 1 }
       +#define FSETV(p, s)             [p] = (Parameter){ { .v = s }, 1 }
       +#define FSETF(p, s)             [p] = (Parameter){ { .f = s }, 1 }
        
        enum { AtomFind, AtomGo, AtomUri, AtomLast };
        
       -enum {
       +typedef enum {
                CaretBrowsing,
       +        CookiePolicies,
       +        DiskCache,
       +        DNSPrefetch,
       +        FontSize,
                FrameFlattening,
                Geolocation,
       +        HideBackground,
       +        Inspector,
                JavaScript,
       +        KioskMode,
                LoadImages,
                Plugins,
       +        PreferredLanguages,
       +        RunInFullscreen,
                ScrollBars,
       -};
       +        ShowIndicators,
       +        SpellChecking,
       +        SpellLanguages,
       +        StrictSSL,
       +        Style,
       +        ZoomLevel,
       +        ParameterLast,
       +} ParamName;
        
        enum {
                OnDoc   = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT,
       t@@ -58,9 +82,15 @@ enum {
        typedef union {
                int b;
                int i;
       +        float f;
                const void *v;
        } Arg;
        
       +typedef struct {
       +        Arg val;
       +        int force;
       +} Parameter;
       +
        typedef struct Client {
                GtkWidget *win;
                WebKitWebView *view;
       t@@ -92,6 +122,12 @@ typedef struct {
        } Button;
        
        typedef struct {
       +        const char *uri;
       +        Parameter config[ParameterLast];
       +        regex_t re;
       +} UriParameters;
       +
       +typedef struct {
                char *regex;
                char *style;
                regex_t re;