about summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuentin Rameau <quinq@fifth.space>2017-05-20 19:21:41 +0200
committerQuentin Rameau <quinq@fifth.space>2017-05-22 12:38:49 +0200
commita0ef4ba41d3e43618607f9cf1d14e83ee475f624 (patch)
treec4399d883691311ff7d8f2cd79cd58d038307465
parentGet rid of integer member b in Arg (diff)
downloadsurf-a0ef4ba41d3e43618607f9cf1d14e83ee475f624.tar.gz
surf-a0ef4ba41d3e43618607f9cf1d14e83ee475f624.tar.bz2
surf-a0ef4ba41d3e43618607f9cf1d14e83ee475f624.zip
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.
-rw-r--r--config.def.h69
-rw-r--r--surf.c90
2 files changed, 87 insertions, 72 deletions
diff --git a/config.def.h b/config.def.h
index a29c388..9fee024 100644
--- a/config.def.h
+++ b/config.def.h
@@ -9,44 +9,45 @@ static char *cookiefile     = "~/.surf/cookies.txt";
 
 /* Webkit default features */
 static Parameter defconfig[ParameterLast] = {
-	SETB(AcceleratedCanvas,  1),
-	SETB(AccessMicrophone,   0),
-	SETB(AccessWebcam,       0),
-	SETB(Certificate,        0),
-	SETB(CaretBrowsing,      0),
-	SETV(CookiePolicies,     "@Aa"),
-	SETV(DefaultCharset,     "UTF-8"),
-	SETB(DiskCache,          1),
-	SETB(DNSPrefetch,        0),
-	SETB(FileURLsCrossAccess,0),
-	SETI(FontSize,           12),
-	SETB(FrameFlattening,    0),
-	SETB(Geolocation,        0),
-	SETB(HideBackground,     0),
-	SETB(Inspector,          0),
-	SETB(Java,               1),
-	SETB(JavaScript,         1),
-	SETB(KioskMode,          0),
-	SETB(LoadImages,         1),
-	SETB(MediaManualPlay,    0),
-	SETB(Plugins,            1),
-	SETV(PreferredLanguages, ((char *[]){ NULL })),
-	SETB(RunInFullscreen,    0),
-	SETB(ScrollBars,         1),
-	SETB(ShowIndicators,     1),
-	SETB(SiteQuirks,         1),
-	SETB(SmoothScrolling,    0),
-	SETB(SpellChecking,      0),
-	SETV(SpellLanguages,     ((char *[]){ "en_US", NULL })),
-	SETB(StrictTLS,          1),
-	SETB(Style,              1),
-	SETF(ZoomLevel,          1.0),
+	/*   parameter                  Arg value       force? */
+	[AcceleratedCanvas]   =       { { .i = 1 },     },
+	[AccessMicrophone]    =       { { .i = 0 },     },
+	[AccessWebcam]        =       { { .i = 0 },     },
+	[Certificate]         =       { { .i = 0 },     },
+	[CaretBrowsing]       =       { { .i = 0 },     },
+	[CookiePolicies]      =       { { .v = "@Aa" }, },
+	[DefaultCharset]      =       { { .v = "UTF-8" }, },
+	[DiskCache]           =       { { .i = 1 },     },
+	[DNSPrefetch]         =       { { .i = 0 },     },
+	[FileURLsCrossAccess] =       { { .i = 0 },     },
+	[FontSize]            =       { { .i = 12 },    },
+	[FrameFlattening]     =       { { .i = 0 },     },
+	[Geolocation]         =       { { .i = 0 },     },
+	[HideBackground]      =       { { .i = 0 },     },
+	[Inspector]           =       { { .i = 0 },     },
+	[Java]                =       { { .i = 1 },     },
+	[JavaScript]          =       { { .i = 1 },     },
+	[KioskMode]           =       { { .i = 0 },     },
+	[LoadImages]          =       { { .i = 1 },     },
+	[MediaManualPlay]     =       { { .i = 0 },     },
+	[Plugins]             =       { { .i = 1 },     },
+	[PreferredLanguages]  =       { { .v = (char *[]){ NULL } }, },
+	[RunInFullscreen]     =       { { .i = 0 },     },
+	[ScrollBars]          =       { { .i = 1 },     },
+	[ShowIndicators]      =       { { .i = 1 },     },
+	[SiteQuirks]          =       { { .i = 1 },     },
+	[SmoothScrolling]     =       { { .i = 0 },     },
+	[SpellChecking]       =       { { .i = 0 },     },
+	[SpellLanguages]      =       { { .v = ((char *[]){ "en_US", NULL }) }, },
+	[StrictTLS]           =       { { .i = 1 },     },
+	[Style]               =       { { .i = 1 },     },
+	[ZoomLevel]           =       { { .f = 1.0 },   },
 };
 
 static UriParameters uriparams[] = {
 	{ "(://|\\.)suckless\\.org(/|$)", {
-	  FSETB(JavaScript, 0),
-	  FSETB(Plugins,    0),
+	  [JavaScript] = { { .i = 0 }, 1 },
+	  [Plugins]    = { { .i = 0 }, 1 },
 	}, },
 };
 
diff --git a/surf.c b/surf.c
index 06b7942..5ba6e51 100644
--- a/surf.c
+++ b/surf.c
@@ -33,18 +33,6 @@
 
 #define LENGTH(x)               (sizeof(x) / sizeof(x[0]))
 #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 };
 
@@ -1925,13 +1913,16 @@ main(int argc, char *argv[])
 	/* command line args */
 	ARGBEGIN {
 	case 'a':
-		defconfig CSETV(CookiePolicies, EARGF(usage()));
+		defconfig[CookiePolicies].val.v = EARGF(usage());
+		defconfig[CookiePolicies].force = 1;
 		break;
 	case 'b':
-		defconfig CSETB(ScrollBars, 0);
+		defconfig[ScrollBars].val.i = 0;
+		defconfig[ScrollBars].force = 1;
 		break;
 	case 'B':
-		defconfig CSETB(ScrollBars, 1);
+		defconfig[ScrollBars].val.i = 1;
+		defconfig[ScrollBars].force = 1;
 		break;
 	case 'c':
 		cookiefile = EARGF(usage());
@@ -1940,70 +1931,90 @@ main(int argc, char *argv[])
 		stylefile = EARGF(usage());
 		break;
 	case 'd':
-		defconfig CSETB(DiskCache, 0);
+		defconfig[DiskCache].val.i = 0;
+		defconfig[DiskCache].force = 1;
 		break;
 	case 'D':
-		defconfig CSETB(DiskCache, 1);
+		defconfig[DiskCache].val.i = 1;
+		defconfig[DiskCache].force = 1;
 		break;
 	case 'e':
 		embed = strtol(EARGF(usage()), NULL, 0);
 		break;
 	case 'f':
-		defconfig CSETB(RunInFullscreen, 0);
+		defconfig[RunInFullscreen].val.i = 0;
+		defconfig[RunInFullscreen].force = 1;
 		break;
 	case 'F':
-		defconfig CSETB(RunInFullscreen, 1);
+		defconfig[RunInFullscreen].val.i = 1;
+		defconfig[RunInFullscreen].force = 1;
 		break;
 	case 'g':
-		defconfig CSETB(Geolocation, 0);
+		defconfig[Geolocation].val.i = 0;
+		defconfig[Geolocation].force = 1;
 		break;
 	case 'G':
-		defconfig CSETB(Geolocation, 1);
+		defconfig[Geolocation].val.i = 1;
+		defconfig[Geolocation].force = 1;
 		break;
 	case 'i':
-		defconfig CSETB(LoadImages, 0);
+		defconfig[LoadImages].val.i = 0;
+		defconfig[LoadImages].force = 1;
 		break;
 	case 'I':
-		defconfig CSETB(LoadImages, 1);
+		defconfig[LoadImages].val.i = 1;
+		defconfig[LoadImages].force = 1;
 		break;
 	case 'k':
-		defconfig CSETB(KioskMode, 0);
+		defconfig[KioskMode].val.i = 0;
+		defconfig[KioskMode].force = 1;
 		break;
 	case 'K':
-		defconfig CSETB(KioskMode, 1);
+		defconfig[KioskMode].val.i = 1;
+		defconfig[KioskMode].force = 1;
 		break;
 	case 'm':
-		defconfig CSETB(Style, 0);
+		defconfig[Style].val.i = 0;
+		defconfig[Style].force = 1;
 		break;
 	case 'M':
-		defconfig CSETB(Style, 1);
+		defconfig[Style].val.i = 1;
+		defconfig[Style].force = 1;
 		break;
 	case 'n':
-		defconfig CSETB(Inspector, 0);
+		defconfig[Inspector].val.i = 0;
+		defconfig[Inspector].force = 1;
 		break;
 	case 'N':
-		defconfig CSETB(Inspector, 1);
+		defconfig[Inspector].val.i = 1;
+		defconfig[Inspector].force = 1;
 		break;
 	case 'p':
-		defconfig CSETB(Plugins, 0);
+		defconfig[Plugins].val.i = 0;
+		defconfig[Plugins].force = 1;
 		break;
 	case 'P':
-		defconfig CSETB(Plugins, 1);
+		defconfig[Plugins].val.i = 1;
+		defconfig[Plugins].force = 1;
 		break;
 	case 'r':
 		scriptfile = EARGF(usage());
 		break;
 	case 's':
-		defconfig CSETB(JavaScript, 0);
+		defconfig[JavaScript].val.i = 0;
+		defconfig[JavaScript].force = 1;
 		break;
 	case 'S':
-		defconfig CSETB(JavaScript, 1);
+		defconfig[JavaScript].val.i = 1;
+		defconfig[JavaScript].force = 1;
 		break;
 	case 't':
-		defconfig CSETB(StrictTLS, 0);
+		defconfig[StrictTLS].val.i = 0;
+		defconfig[StrictTLS].force = 1;
 		break;
 	case 'T':
-		defconfig CSETB(StrictTLS, 1);
+		defconfig[StrictTLS].val.i = 1;
+		defconfig[StrictTLS].force = 1;
 		break;
 	case 'u':
 		fulluseragent = EARGF(usage());
@@ -2014,13 +2025,16 @@ main(int argc, char *argv[])
 		showxid = 1;
 		break;
 	case 'x':
-		defconfig CSETB(Certificate, 0);
+		defconfig[Certificate].val.i = 0;
+		defconfig[Certificate].force = 1;
 		break;
 	case 'X':
-		defconfig CSETB(Certificate, 1);
+		defconfig[Certificate].val.i = 1;
+		defconfig[Certificate].force = 1;
 		break;
 	case 'z':
-		defconfig CSETF(ZoomLevel, strtof(EARGF(usage()), NULL));
+		defconfig[ZoomLevel].val.f = strtof(EARGF(usage()), NULL);
+		defconfig[ZoomLevel].force = 1;
 		break;
 	default:
 		usage();