pinosaur
/
surf.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Disable media autoplay by default
[surf.git]
/
surf.c
diff --git
a/surf.c
b/surf.c
index
5ba6e51
..
0f8b9c9
100644
(file)
--- a/
surf.c
+++ b/
surf.c
@@
-91,7
+91,7
@@
typedef union {
typedef struct {
Arg val;
typedef struct {
Arg val;
- int
force
;
+ int
prio
;
} Parameter;
typedef struct Client {
} Parameter;
typedef struct Client {
@@
-241,6
+241,7
@@
static GdkDevice *gdkkb;
static char *stylefile;
static const char *useragent;
static Parameter *curconfig;
static char *stylefile;
static const char *useragent;
static Parameter *curconfig;
+static int modparams[ParameterLast];
char *argv0;
static ParamName loadtransient[] = {
char *argv0;
static ParamName loadtransient[] = {
@@
-372,19
+373,18
@@
setup(void)
}
for (i = 0; i < LENGTH(uriparams); ++i) {
}
for (i = 0; i < LENGTH(uriparams); ++i) {
- if (
!
regcomp(&(uriparams[i].re), uriparams[i].uri,
+ if (regcomp(&(uriparams[i].re), uriparams[i].uri,
REG_EXTENDED)) {
REG_EXTENDED)) {
- /* copy default parameters if they are not already set
- * or if they are forced */
- for (j = 0; j < ParameterLast; ++j) {
- if (!uriparams[i].config[j].force ||
- defconfig[j].force)
- uriparams[i].config[j] = defconfig[j];
- }
- } else {
fprintf(stderr, "Could not compile regex: %s\n",
uriparams[i].uri);
uriparams[i].uri = NULL;
fprintf(stderr, "Could not compile regex: %s\n",
uriparams[i].uri);
uriparams[i].uri = NULL;
+ continue;
+ }
+
+ /* copy default parameters with higher priority */
+ for (j = 0; j < ParameterLast; ++j) {
+ if (defconfig[j].prio >= uriparams[i].config[j].prio)
+ uriparams[i].config[j] = defconfig[j];
}
}
}
}
}
}
@@
-674,42
+674,31
@@
cookiepolicy_set(const WebKitCookieAcceptPolicy p)
void
seturiparameters(Client *c, const char *uri, ParamName *params)
{
void
seturiparameters(Client *c, const char *uri, ParamName *params)
{
- Parameter *config, *
new
config = NULL;
+ Parameter *config, *
uri
config = NULL;
int i, p;
for (i = 0; i < LENGTH(uriparams); ++i) {
if (uriparams[i].uri &&
!regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
int i, p;
for (i = 0; i < LENGTH(uriparams); ++i) {
if (uriparams[i].uri &&
!regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
-
new
config = uriparams[i].config;
+
uri
config = uriparams[i].config;
break;
}
}
break;
}
}
- if (!newconfig)
- newconfig = defconfig;
+ curconfig = uriconfig ? uriconfig : defconfig;
for (i = 0; (p = params[i]) != ParameterLast; ++i) {
switch(p) {
for (i = 0; (p = params[i]) != ParameterLast; ++i) {
switch(p) {
+ default: /* FALLTHROUGH */
+ if (!(defconfig[p].prio < curconfig[p].prio ||
+ defconfig[p].prio < modparams[p]))
+ continue;
case Certificate:
case CookiePolicies:
case Style:
case Certificate:
case CookiePolicies:
case Style:
- config = defconfig[p].force ? defconfig :
- newconfig[p].force ? newconfig :
- defconfig;
- break;
- default:
- if (defconfig[p].force)
- continue;
- config = newconfig[p].force ? newconfig :
- curconfig[p].force ? defconfig :
- NULL;
+ setparameter(c, 0, p, &curconfig[p].val);
}
}
-
- if (config)
- setparameter(c, 0, p, &config[p].val);
}
}
-
- curconfig = newconfig;
}
void
}
void
@@
-718,6
+707,8
@@
setparameter(Client *c, int refresh, ParamName p, const Arg *a)
GdkRGBA bgcolor = { 0 };
WebKitSettings *s = webkit_web_view_get_settings(c->view);
GdkRGBA bgcolor = { 0 };
WebKitSettings *s = webkit_web_view_get_settings(c->view);
+ modparams[p] = curconfig[p].prio;
+
switch (p) {
case AcceleratedCanvas:
webkit_settings_set_enable_accelerated_2d_canvas(s, a->i);
switch (p) {
case AcceleratedCanvas:
webkit_settings_set_enable_accelerated_2d_canvas(s, a->i);
@@
-1914,15
+1905,15
@@
main(int argc, char *argv[])
ARGBEGIN {
case 'a':
defconfig[CookiePolicies].val.v = EARGF(usage());
ARGBEGIN {
case 'a':
defconfig[CookiePolicies].val.v = EARGF(usage());
- defconfig[CookiePolicies].
force = 1
;
+ defconfig[CookiePolicies].
prio = 2
;
break;
case 'b':
defconfig[ScrollBars].val.i = 0;
break;
case 'b':
defconfig[ScrollBars].val.i = 0;
- defconfig[ScrollBars].
force = 1
;
+ defconfig[ScrollBars].
prio = 2
;
break;
case 'B':
defconfig[ScrollBars].val.i = 1;
break;
case 'B':
defconfig[ScrollBars].val.i = 1;
- defconfig[ScrollBars].
force = 1
;
+ defconfig[ScrollBars].
prio = 2
;
break;
case 'c':
cookiefile = EARGF(usage());
break;
case 'c':
cookiefile = EARGF(usage());
@@
-1932,89
+1923,89
@@
main(int argc, char *argv[])
break;
case 'd':
defconfig[DiskCache].val.i = 0;
break;
case 'd':
defconfig[DiskCache].val.i = 0;
- defconfig[DiskCache].
force = 1
;
+ defconfig[DiskCache].
prio = 2
;
break;
case 'D':
defconfig[DiskCache].val.i = 1;
break;
case 'D':
defconfig[DiskCache].val.i = 1;
- defconfig[DiskCache].
force = 1
;
+ defconfig[DiskCache].
prio = 2
;
break;
case 'e':
embed = strtol(EARGF(usage()), NULL, 0);
break;
case 'f':
defconfig[RunInFullscreen].val.i = 0;
break;
case 'e':
embed = strtol(EARGF(usage()), NULL, 0);
break;
case 'f':
defconfig[RunInFullscreen].val.i = 0;
- defconfig[RunInFullscreen].
force = 1
;
+ defconfig[RunInFullscreen].
prio = 2
;
break;
case 'F':
defconfig[RunInFullscreen].val.i = 1;
break;
case 'F':
defconfig[RunInFullscreen].val.i = 1;
- defconfig[RunInFullscreen].
force = 1
;
+ defconfig[RunInFullscreen].
prio = 2
;
break;
case 'g':
defconfig[Geolocation].val.i = 0;
break;
case 'g':
defconfig[Geolocation].val.i = 0;
- defconfig[Geolocation].
force = 1
;
+ defconfig[Geolocation].
prio = 2
;
break;
case 'G':
defconfig[Geolocation].val.i = 1;
break;
case 'G':
defconfig[Geolocation].val.i = 1;
- defconfig[Geolocation].
force = 1
;
+ defconfig[Geolocation].
prio = 2
;
break;
case 'i':
defconfig[LoadImages].val.i = 0;
break;
case 'i':
defconfig[LoadImages].val.i = 0;
- defconfig[LoadImages].
force = 1
;
+ defconfig[LoadImages].
prio = 2
;
break;
case 'I':
defconfig[LoadImages].val.i = 1;
break;
case 'I':
defconfig[LoadImages].val.i = 1;
- defconfig[LoadImages].
force = 1
;
+ defconfig[LoadImages].
prio = 2
;
break;
case 'k':
defconfig[KioskMode].val.i = 0;
break;
case 'k':
defconfig[KioskMode].val.i = 0;
- defconfig[KioskMode].
force = 1
;
+ defconfig[KioskMode].
prio = 2
;
break;
case 'K':
defconfig[KioskMode].val.i = 1;
break;
case 'K':
defconfig[KioskMode].val.i = 1;
- defconfig[KioskMode].
force = 1
;
+ defconfig[KioskMode].
prio = 2
;
break;
case 'm':
defconfig[Style].val.i = 0;
break;
case 'm':
defconfig[Style].val.i = 0;
- defconfig[Style].
force = 1
;
+ defconfig[Style].
prio = 2
;
break;
case 'M':
defconfig[Style].val.i = 1;
break;
case 'M':
defconfig[Style].val.i = 1;
- defconfig[Style].
force = 1
;
+ defconfig[Style].
prio = 2
;
break;
case 'n':
defconfig[Inspector].val.i = 0;
break;
case 'n':
defconfig[Inspector].val.i = 0;
- defconfig[Inspector].
force = 1
;
+ defconfig[Inspector].
prio = 2
;
break;
case 'N':
defconfig[Inspector].val.i = 1;
break;
case 'N':
defconfig[Inspector].val.i = 1;
- defconfig[Inspector].
force = 1
;
+ defconfig[Inspector].
prio = 2
;
break;
case 'p':
defconfig[Plugins].val.i = 0;
break;
case 'p':
defconfig[Plugins].val.i = 0;
- defconfig[Plugins].
force = 1
;
+ defconfig[Plugins].
prio = 2
;
break;
case 'P':
defconfig[Plugins].val.i = 1;
break;
case 'P':
defconfig[Plugins].val.i = 1;
- defconfig[Plugins].
force = 1
;
+ defconfig[Plugins].
prio = 2
;
break;
case 'r':
scriptfile = EARGF(usage());
break;
case 's':
defconfig[JavaScript].val.i = 0;
break;
case 'r':
scriptfile = EARGF(usage());
break;
case 's':
defconfig[JavaScript].val.i = 0;
- defconfig[JavaScript].
force = 1
;
+ defconfig[JavaScript].
prio = 2
;
break;
case 'S':
defconfig[JavaScript].val.i = 1;
break;
case 'S':
defconfig[JavaScript].val.i = 1;
- defconfig[JavaScript].
force = 1
;
+ defconfig[JavaScript].
prio = 2
;
break;
case 't':
defconfig[StrictTLS].val.i = 0;
break;
case 't':
defconfig[StrictTLS].val.i = 0;
- defconfig[StrictTLS].
force = 1
;
+ defconfig[StrictTLS].
prio = 2
;
break;
case 'T':
defconfig[StrictTLS].val.i = 1;
break;
case 'T':
defconfig[StrictTLS].val.i = 1;
- defconfig[StrictTLS].
force = 1
;
+ defconfig[StrictTLS].
prio = 2
;
break;
case 'u':
fulluseragent = EARGF(usage());
break;
case 'u':
fulluseragent = EARGF(usage());
@@
-2026,15
+2017,15
@@
main(int argc, char *argv[])
break;
case 'x':
defconfig[Certificate].val.i = 0;
break;
case 'x':
defconfig[Certificate].val.i = 0;
- defconfig[Certificate].
force = 1
;
+ defconfig[Certificate].
prio = 2
;
break;
case 'X':
defconfig[Certificate].val.i = 1;
break;
case 'X':
defconfig[Certificate].val.i = 1;
- defconfig[Certificate].
force = 1
;
+ defconfig[Certificate].
prio = 2
;
break;
case 'z':
defconfig[ZoomLevel].val.f = strtof(EARGF(usage()), NULL);
break;
case 'z':
defconfig[ZoomLevel].val.f = strtof(EARGF(usage()), NULL);
- defconfig[ZoomLevel].
force = 1
;
+ defconfig[ZoomLevel].
prio = 2
;
break;
default:
usage();
break;
default:
usage();