aboutsummaryrefslogtreecommitdiffstats
path: root/rc.c
diff options
context:
space:
mode:
authorAzure <azure@fox.blue>2019-06-30 16:15:22 +0000
committerAzure <azure@fox.blue>2019-06-30 16:15:22 +0000
commit83e072d6d5b248c416f89cb144e677b2a3bdaba9 (patch)
treece5478bd6a172d5e32cc3a68e2e5a748407ff05a /rc.c
parentUpdate ChangeLog (diff)
downloadw3m-83e072d6d5b248c416f89cb144e677b2a3bdaba9.tar.gz
w3m-83e072d6d5b248c416f89cb144e677b2a3bdaba9.zip
Allow setting User Agent in Siteconf
Since Google gives usable search results to Lynx but not to w3m, and many other sites block Lynx but /not/ w3m, we want to be able to set the User Agent string on a per-site basis.
Diffstat (limited to '')
-rw-r--r--rc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/rc.c b/rc.c
index 3fd84ef..25f7a56 100644
--- a/rc.c
+++ b/rc.c
@@ -1602,6 +1602,7 @@ helpFile(char *base)
* url_charset <charset>
* no_referer_from on|off
* no_referer_to on|off
+ * user_agent "<string>"
*
* The last match wins.
*/
@@ -1614,6 +1615,7 @@ struct siteconf_rec {
unsigned char mask[(SCONF_N_FIELD + 7) >> 3];
char *substitute_url;
+ char *user_agent;
#ifdef USE_M17N
wc_ces url_charset;
#endif
@@ -1640,6 +1642,7 @@ newSiteconfRec(void)
memset(ent->mask, 0, sizeof(ent->mask));
ent->substitute_url = NULL;
+ ent->user_agent = NULL;
#ifdef USE_M17N
ent->url_charset = 0;
#endif
@@ -1718,6 +1721,10 @@ loadSiteconf(void)
ent->substitute_url = getQWord(&p);
SCONF_SET(ent, SCONF_SUBSTITUTE_URL);
}
+ if (strcmp(s, "user_agent") == 0) {
+ ent->user_agent = getQWord(&p);
+ SCONF_SET(ent, SCONF_USER_AGENT);
+ }
#ifdef USE_M17N
else if (strcmp(s, "url_charset") == 0) {
char *charset = getWord(&p);
@@ -1797,6 +1804,11 @@ url_found:
return tmp->ptr;
}
return NULL;
+ case SCONF_USER_AGENT:
+ if (ent->user_agent && *ent->user_agent) {
+ return ent->user_agent;
+ }
+ return NULL;
#ifdef USE_M17N
case SCONF_URL_CHARSET:
return &ent->url_charset;