Get rid of config parameter MACROs

There's no need to obfuscate so much what is done, the user can deal
with a few extra knobs to set instead.
This commit is contained in:
Quentin Rameau 2017-05-20 19:21:41 +02:00
parent d3e974f4ea
commit a0ef4ba41d
2 changed files with 87 additions and 72 deletions

View file

@ -9,44 +9,45 @@ static char *cookiefile = "~/.surf/cookies.txt";
/* Webkit default features */ /* Webkit default features */
static Parameter defconfig[ParameterLast] = { static Parameter defconfig[ParameterLast] = {
SETB(AcceleratedCanvas, 1), /* parameter Arg value force? */
SETB(AccessMicrophone, 0), [AcceleratedCanvas] = { { .i = 1 }, },
SETB(AccessWebcam, 0), [AccessMicrophone] = { { .i = 0 }, },
SETB(Certificate, 0), [AccessWebcam] = { { .i = 0 }, },
SETB(CaretBrowsing, 0), [Certificate] = { { .i = 0 }, },
SETV(CookiePolicies, "@Aa"), [CaretBrowsing] = { { .i = 0 }, },
SETV(DefaultCharset, "UTF-8"), [CookiePolicies] = { { .v = "@Aa" }, },
SETB(DiskCache, 1), [DefaultCharset] = { { .v = "UTF-8" }, },
SETB(DNSPrefetch, 0), [DiskCache] = { { .i = 1 }, },
SETB(FileURLsCrossAccess,0), [DNSPrefetch] = { { .i = 0 }, },
SETI(FontSize, 12), [FileURLsCrossAccess] = { { .i = 0 }, },
SETB(FrameFlattening, 0), [FontSize] = { { .i = 12 }, },
SETB(Geolocation, 0), [FrameFlattening] = { { .i = 0 }, },
SETB(HideBackground, 0), [Geolocation] = { { .i = 0 }, },
SETB(Inspector, 0), [HideBackground] = { { .i = 0 }, },
SETB(Java, 1), [Inspector] = { { .i = 0 }, },
SETB(JavaScript, 1), [Java] = { { .i = 1 }, },
SETB(KioskMode, 0), [JavaScript] = { { .i = 1 }, },
SETB(LoadImages, 1), [KioskMode] = { { .i = 0 }, },
SETB(MediaManualPlay, 0), [LoadImages] = { { .i = 1 }, },
SETB(Plugins, 1), [MediaManualPlay] = { { .i = 0 }, },
SETV(PreferredLanguages, ((char *[]){ NULL })), [Plugins] = { { .i = 1 }, },
SETB(RunInFullscreen, 0), [PreferredLanguages] = { { .v = (char *[]){ NULL } }, },
SETB(ScrollBars, 1), [RunInFullscreen] = { { .i = 0 }, },
SETB(ShowIndicators, 1), [ScrollBars] = { { .i = 1 }, },
SETB(SiteQuirks, 1), [ShowIndicators] = { { .i = 1 }, },
SETB(SmoothScrolling, 0), [SiteQuirks] = { { .i = 1 }, },
SETB(SpellChecking, 0), [SmoothScrolling] = { { .i = 0 }, },
SETV(SpellLanguages, ((char *[]){ "en_US", NULL })), [SpellChecking] = { { .i = 0 }, },
SETB(StrictTLS, 1), [SpellLanguages] = { { .v = ((char *[]){ "en_US", NULL }) }, },
SETB(Style, 1), [StrictTLS] = { { .i = 1 }, },
SETF(ZoomLevel, 1.0), [Style] = { { .i = 1 }, },
[ZoomLevel] = { { .f = 1.0 }, },
}; };
static UriParameters uriparams[] = { static UriParameters uriparams[] = {
{ "(://|\\.)suckless\\.org(/|$)", { { "(://|\\.)suckless\\.org(/|$)", {
FSETB(JavaScript, 0), [JavaScript] = { { .i = 0 }, 1 },
FSETB(Plugins, 0), [Plugins] = { { .i = 0 }, 1 },
}, }, }, },
}; };

90
surf.c
View file

@ -33,18 +33,6 @@
#define LENGTH(x) (sizeof(x) / sizeof(x[0])) #define LENGTH(x) (sizeof(x) / sizeof(x[0]))
#define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK)) #define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK))
#define SETB(p, s) [p] = { { .b = s }, }
#define SETI(p, s) [p] = { { .i = s }, }
#define SETV(p, s) [p] = { { .v = s }, }
#define SETF(p, s) [p] = { { .f = s }, }
#define FSETB(p, s) [p] = { { .b = s }, 1 }
#define FSETI(p, s) [p] = { { .i = s }, 1 }
#define FSETV(p, s) [p] = { { .v = s }, 1 }
#define FSETF(p, s) [p] = { { .f = s }, 1 }
#define CSETB(p, s) [p] = (Parameter){ { .b = s }, 1 }
#define CSETI(p, s) [p] = (Parameter){ { .i = s }, 1 }
#define CSETV(p, s) [p] = (Parameter){ { .v = s }, 1 }
#define CSETF(p, s) [p] = (Parameter){ { .f = s }, 1 }
enum { AtomFind, AtomGo, AtomUri, AtomLast }; enum { AtomFind, AtomGo, AtomUri, AtomLast };
@ -1925,13 +1913,16 @@ main(int argc, char *argv[])
/* command line args */ /* command line args */
ARGBEGIN { ARGBEGIN {
case 'a': case 'a':
defconfig CSETV(CookiePolicies, EARGF(usage())); defconfig[CookiePolicies].val.v = EARGF(usage());
defconfig[CookiePolicies].force = 1;
break; break;
case 'b': case 'b':
defconfig CSETB(ScrollBars, 0); defconfig[ScrollBars].val.i = 0;
defconfig[ScrollBars].force = 1;
break; break;
case 'B': case 'B':
defconfig CSETB(ScrollBars, 1); defconfig[ScrollBars].val.i = 1;
defconfig[ScrollBars].force = 1;
break; break;
case 'c': case 'c':
cookiefile = EARGF(usage()); cookiefile = EARGF(usage());
@ -1940,70 +1931,90 @@ main(int argc, char *argv[])
stylefile = EARGF(usage()); stylefile = EARGF(usage());
break; break;
case 'd': case 'd':
defconfig CSETB(DiskCache, 0); defconfig[DiskCache].val.i = 0;
defconfig[DiskCache].force = 1;
break; break;
case 'D': case 'D':
defconfig CSETB(DiskCache, 1); defconfig[DiskCache].val.i = 1;
defconfig[DiskCache].force = 1;
break; break;
case 'e': case 'e':
embed = strtol(EARGF(usage()), NULL, 0); embed = strtol(EARGF(usage()), NULL, 0);
break; break;
case 'f': case 'f':
defconfig CSETB(RunInFullscreen, 0); defconfig[RunInFullscreen].val.i = 0;
defconfig[RunInFullscreen].force = 1;
break; break;
case 'F': case 'F':
defconfig CSETB(RunInFullscreen, 1); defconfig[RunInFullscreen].val.i = 1;
defconfig[RunInFullscreen].force = 1;
break; break;
case 'g': case 'g':
defconfig CSETB(Geolocation, 0); defconfig[Geolocation].val.i = 0;
defconfig[Geolocation].force = 1;
break; break;
case 'G': case 'G':
defconfig CSETB(Geolocation, 1); defconfig[Geolocation].val.i = 1;
defconfig[Geolocation].force = 1;
break; break;
case 'i': case 'i':
defconfig CSETB(LoadImages, 0); defconfig[LoadImages].val.i = 0;
defconfig[LoadImages].force = 1;
break; break;
case 'I': case 'I':
defconfig CSETB(LoadImages, 1); defconfig[LoadImages].val.i = 1;
defconfig[LoadImages].force = 1;
break; break;
case 'k': case 'k':
defconfig CSETB(KioskMode, 0); defconfig[KioskMode].val.i = 0;
defconfig[KioskMode].force = 1;
break; break;
case 'K': case 'K':
defconfig CSETB(KioskMode, 1); defconfig[KioskMode].val.i = 1;
defconfig[KioskMode].force = 1;
break; break;
case 'm': case 'm':
defconfig CSETB(Style, 0); defconfig[Style].val.i = 0;
defconfig[Style].force = 1;
break; break;
case 'M': case 'M':
defconfig CSETB(Style, 1); defconfig[Style].val.i = 1;
defconfig[Style].force = 1;
break; break;
case 'n': case 'n':
defconfig CSETB(Inspector, 0); defconfig[Inspector].val.i = 0;
defconfig[Inspector].force = 1;
break; break;
case 'N': case 'N':
defconfig CSETB(Inspector, 1); defconfig[Inspector].val.i = 1;
defconfig[Inspector].force = 1;
break; break;
case 'p': case 'p':
defconfig CSETB(Plugins, 0); defconfig[Plugins].val.i = 0;
defconfig[Plugins].force = 1;
break; break;
case 'P': case 'P':
defconfig CSETB(Plugins, 1); defconfig[Plugins].val.i = 1;
defconfig[Plugins].force = 1;
break; break;
case 'r': case 'r':
scriptfile = EARGF(usage()); scriptfile = EARGF(usage());
break; break;
case 's': case 's':
defconfig CSETB(JavaScript, 0); defconfig[JavaScript].val.i = 0;
defconfig[JavaScript].force = 1;
break; break;
case 'S': case 'S':
defconfig CSETB(JavaScript, 1); defconfig[JavaScript].val.i = 1;
defconfig[JavaScript].force = 1;
break; break;
case 't': case 't':
defconfig CSETB(StrictTLS, 0); defconfig[StrictTLS].val.i = 0;
defconfig[StrictTLS].force = 1;
break; break;
case 'T': case 'T':
defconfig CSETB(StrictTLS, 1); defconfig[StrictTLS].val.i = 1;
defconfig[StrictTLS].force = 1;
break; break;
case 'u': case 'u':
fulluseragent = EARGF(usage()); fulluseragent = EARGF(usage());
@ -2014,13 +2025,16 @@ main(int argc, char *argv[])
showxid = 1; showxid = 1;
break; break;
case 'x': case 'x':
defconfig CSETB(Certificate, 0); defconfig[Certificate].val.i = 0;
defconfig[Certificate].force = 1;
break; break;
case 'X': case 'X':
defconfig CSETB(Certificate, 1); defconfig[Certificate].val.i = 1;
defconfig[Certificate].force = 1;
break; break;
case 'z': case 'z':
defconfig CSETF(ZoomLevel, strtof(EARGF(usage()), NULL)); defconfig[ZoomLevel].val.f = strtof(EARGF(usage()), NULL);
defconfig[ZoomLevel].force = 1;
break; break;
default: default:
usage(); usage();