Unify all the patch per file and add UserAgent hunk patch. - pkgsrc-localpatches - leot's pkgsrc LOCALPATCHES
 (HTM) hg clone https://bitbucket.org/iamleot/pkgsrc-localpatches
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
 (DIR) changeset eae716b2fb06c6806140ea5fd5cb28871ea032c1
 (DIR) parent a3bb5710584d93c5f56ce1006325968899130b03
 (HTM) Author: Leonardo Taccari <iamleot@gmail.com>
       Date:   Sat,  8 Jun 2019 18:18:20 
       
       Unify all the patch per file and add UserAgent hunk patch.
       
       Diffstat:
        wip/surf-git/clickplumb.patch   |   30 ------
        wip/surf-git/patch-config.def.h |   36 +++++++
        wip/surf-git/patch-config.h     |    9 +-
        wip/surf-git/patch-surf.c       |  181 ++++++++++++++++++++++++++++++++++++++++
        wip/surf-git/userscript.patch   |  159 -----------------------------------
        5 files changed, 222 insertions(+), 193 deletions(-)
       ---
       diff -r a3bb5710584d -r eae716b2fb06 wip/surf-git/clickplumb.patch
       --- a/wip/surf-git/clickplumb.patch     Sat Jun 08 15:13:28 2019 +0200
       +++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
       @@ -1,30 +0,0 @@
       -$NetBSD$
       -
       -Add support to invoke plumb via a button.
       -
       ---- surf.c.orig        2019-03-06 11:19:52.000000000 +0000
       -+++ surf.c
       -@@ -236,6 +236,7 @@ static void find(Client *c, const Arg *a
       - static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult *h);
       - static void clicknewwindow(Client *c, const Arg *a, WebKitHitTestResult *h);
       - static void clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h);
       -+static void clickplumb(Client *c, const Arg *a, WebKitHitTestResult *h);
       - 
       - static char winid[64];
       - static char togglestats[12];
       -@@ -1971,6 +1972,15 @@ clickexternplayer(Client *c, const Arg *
       -       spawn(c, &arg);
       - }
       - 
       -+void
       -+clickplumb(Client *c, const Arg *a, WebKitHitTestResult *h)
       -+{
       -+      Arg arg;
       -+      
       -+      arg = (Arg)PLUMB(c->targeturi ? c->targeturi : geturi(c));
       -+      spawn(c, &arg);
       -+}
       -+
       - int
       - main(int argc, char *argv[])
       - {
       diff -r a3bb5710584d -r eae716b2fb06 wip/surf-git/patch-config.def.h
       --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
       +++ b/wip/surf-git/patch-config.def.h   Sat Jun 08 18:18:20 2019 +0200
       @@ -0,0 +1,36 @@
       +$NetBSD$
       +
       +Add support for UserAgent and UserScript.
       +
       +--- config.def.h.orig
       ++++ config.def.h
       +@@ -3,6 +3,7 @@ static int surfuseragent    = 1;  /* Append Surf version to default WebKit user
       + static char *fulluseragent  = ""; /* Or override the whole user agent string */
       + static char *scriptfile     = "~/.surf/script.js";
       + static char *styledir       = "~/.surf/styles/";
       ++static char *scriptdir      = "~/.surf/script/";
       + static char *certdir        = "~/.surf/certificates/";
       + static char *cachedir       = "~/.surf/cache/";
       + static char *cookiefile     = "~/.surf/cookies.txt";
       +@@ -46,6 +47,8 @@ static Parameter defconfig[ParameterLast] = {
       +       [SpellLanguages]      =       { { .v = ((char *[]){ "en_US", NULL }) }, },
       +       [StrictTLS]           =       { { .i = 1 },     },
       +       [Style]               =       { { .i = 1 },     },
       ++      [UserAgent]           =       { { .v = "" },    },
       ++      [UserScript]          =       { { .i = 1 },     },
       +       [WebGL]               =       { { .i = 0 },     },
       +       [ZoomLevel]           =       { { .f = 1.0 },   },
       + };
       +@@ -112,6 +115,12 @@ static SiteSpecific styles[] = {
       +       { ".*",                 "default.css" },
       + };
       + 
       ++/* scripts */
       ++static SiteSpecific scripts[] = {
       ++      /* regexp               file in $scriptdir */
       ++      { ".*",                 "default.js" },
       ++};
       ++
       + /* certificates */
       + /*
       +  * Provide custom certificate for urls
       diff -r a3bb5710584d -r eae716b2fb06 wip/surf-git/patch-config.h
       --- a/wip/surf-git/patch-config.h       Sat Jun 08 15:13:28 2019 +0200
       +++ b/wip/surf-git/patch-config.h       Sat Jun 08 18:18:20 2019 +0200
       @@ -1,9 +1,9 @@
       ---- /dev/null  2019-06-08 14:15:07.842795313 +0200
       -+++ config.h   2019-06-08 14:14:50.272358309 +0200
       -@@ -0,0 +1,218 @@
       +--- /dev/null  2019-06-08 18:14:46.479402408 +0200
       ++++ config.h   2019-06-08 18:14:37.992108174 +0200
       +@@ -0,0 +1,219 @@
        +/* modifier 0 means no modifier */
        +static int surfuseragent    = 0;  /* Append Surf version to default WebKit user agent */
       -+static char *fulluseragent  = "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0"; /* Or override the whole user agent string */
       ++static char *fulluseragent  = ""; /* Or override the whole user agent string */
        +static char *scriptfile     = "~/.surf/script.js";
        +static char *scriptdir      = "~/.surf/script/";
        +static char *styledir       = "~/.surf/styles/";
       @@ -50,6 +50,7 @@
        +      [SpellLanguages]      =       { { .v = ((char *[]){ "en_US", NULL }) }, },
        +      [StrictTLS]           =       { { .i = 1 },     },
        +      [Style]               =       { { .i = 1 },     },
       ++      [UserAgent]           =       { { .v = "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0" },     },
        +      [UserScript]          =       { { .i = 1 },     },
        +      [WebGL]               =       { { .i = 0 },     },
        +      [ZoomLevel]           =       { { .f = 1.0 },   },
       diff -r a3bb5710584d -r eae716b2fb06 wip/surf-git/patch-surf.c
       --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
       +++ b/wip/surf-git/patch-surf.c Sat Jun 08 18:18:20 2019 +0200
       @@ -0,0 +1,181 @@
       +$NetBSD$
       +
       +Add support for UserAgent, UserScript and clickplumb().
       +
       +--- surf.c.orig
       ++++ surf.c
       +@@ -80,6 +80,8 @@ typedef enum {
       +       SpellLanguages,
       +       StrictTLS,
       +       Style,
       ++      UserAgent,
       ++      UserScript,
       +       WebGL,
       +       ZoomLevel,
       +       ParameterLast
       +@@ -164,7 +166,9 @@ static void seturiparameters(Client *c, const char *uri, ParamName *params);
       + static void setparameter(Client *c, int refresh, ParamName p, const Arg *a);
       + static const char *getcert(const char *uri);
       + static void setcert(Client *c, const char *file);
       ++static const char *getscript(const char *uri);
       + static const char *getstyle(const char *uri);
       ++static void setscript(Client *c, const char *file);
       + static void setstyle(Client *c, const char *file);
       + static void runscript(Client *c);
       + static void evalscript(Client *c, const char *jsstr, ...);
       +@@ -236,6 +240,7 @@ static void find(Client *c, const Arg *a);
       + static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult *h);
       + static void clicknewwindow(Client *c, const Arg *a, WebKitHitTestResult *h);
       + static void clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h);
       ++static void clickplumb(Client *c, const Arg *a, WebKitHitTestResult *h);
       + 
       + static char winid[64];
       + static char togglestats[12];
       +@@ -265,6 +270,8 @@ static ParamName loadtransient[] = {
       +       PreferredLanguages,
       +       ShowIndicators,
       +       StrictTLS,
       ++      UserAgent,
       ++      UserScript,
       +       ParameterLast
       + };
       + 
       +@@ -340,6 +347,7 @@ setup(void)
       +       scriptfile = buildfile(scriptfile);
       +       cachedir   = buildpath(cachedir);
       +       certdir    = buildpath(certdir);
       ++      scriptdir  = buildpath(scriptdir);
       + 
       +       gdkkb = gdk_seat_get_keyboard(gdk_display_get_default_seat(gdpy));
       + 
       +@@ -364,6 +372,17 @@ setup(void)
       +               }
       +       }
       + 
       ++      for (i = 0; i < LENGTH(scripts); ++i) {
       ++              if (!regcomp(&(scripts[i].re), scripts[i].regex, REG_EXTENDED)) {
       ++                      scripts[i].file = g_strconcat(scriptdir, "/", scripts[i].file,
       ++                                                  NULL);
       ++              } else {
       ++                      fprintf(stderr, "Could not compile regex: %s\n",
       ++                              scripts[i].regex);
       ++                      scripts[i].regex = NULL;
       ++              }
       ++      }
       ++
       +       if (!stylefile) {
       +               styledir = buildpath(styledir);
       +               for (i = 0; i < LENGTH(styles); ++i) {
       +@@ -722,6 +741,7 @@ seturiparameters(Client *c, const char *uri, ParamName *params)
       +               case Certificate:
       +               case CookiePolicies:
       +               case Style:
       ++              case UserScript:
       +                       setparameter(c, 0, p, &curconfig[p].val);
       +               }
       +       }
       +@@ -846,6 +866,17 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
       +                       setstyle(c, getstyle(geturi(c)));
       +               refresh = 0;
       +               break;
       ++      case UserAgent:
       ++              if (a->v && g_strcmp0(a->v, ""))
       ++                      webkit_settings_set_user_agent(s, a->v);
       ++              break;
       ++      case UserScript:
       ++              webkit_user_content_manager_remove_all_scripts(
       ++                  webkit_web_view_get_user_content_manager(c->view));
       ++              if (a->i)
       ++                      setscript(c, getscript(geturi(c)));
       ++              refresh = 0;
       ++              break;
       +       case WebGL:
       +               webkit_settings_set_enable_webgl(s, a->i);
       +               break;
       +@@ -902,6 +933,20 @@ setcert(Client *c, const char *uri)
       + 
       + }
       + 
       ++const char *
       ++getscript(const char *uri)
       ++{
       ++      int i;
       ++
       ++      for (i = 0; i < LENGTH(scripts); ++i) {
       ++              if (scripts[i].regex &&
       ++                  !regexec(&(scripts[i].re), uri, 0, NULL, 0))
       ++                      return scripts[i].file;
       ++      }
       ++
       ++      return "";
       ++}
       ++
       + const char *
       + getstyle(const char *uri)
       + {
       +@@ -919,6 +964,26 @@ getstyle(const char *uri)
       +       return "";
       + }
       + 
       ++void
       ++setscript(Client *c, const char *file)
       ++{
       ++      gchar *script;
       ++
       ++      if (!g_file_get_contents(file, &script, NULL, NULL)) {
       ++              fprintf(stderr, "Could not read script file: %s\n", file);
       ++              return;
       ++      }
       ++
       ++      webkit_user_content_manager_add_script(
       ++          webkit_web_view_get_user_content_manager(c->view),
       ++          webkit_user_script_new(script,
       ++          WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
       ++          WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END,
       ++          NULL, NULL));
       ++
       ++      g_free(script);
       ++}
       ++
       + void
       + setstyle(Client *c, const char *file)
       + {
       +@@ -1016,7 +1081,10 @@ newwindow(Client *c, const Arg *a, int noembed)
       +       }
       +       cmd[i++] = curconfig[JavaScript].val.i ? "-S" : "-s";
       +       cmd[i++] = curconfig[StrictTLS].val.i ? "-T" : "-t";
       +-      if (fulluseragent && g_strcmp0(fulluseragent, "")) {
       ++      if (curconfig[UserAgent].val.v && g_strcmp0(curconfig[UserAgent].val.v, "")) {
       ++              cmd[i++] = "-u";
       ++              cmd[i++] = curconfig[UserAgent].val.v;
       ++      } else if (fulluseragent && g_strcmp0(fulluseragent, "")) {
       +               cmd[i++] = "-u";
       +               cmd[i++] = fulluseragent;
       +       }
       +@@ -1119,7 +1187,9 @@ newview(Client *c, WebKitWebView *rv)
       + /* For more interesting settings, have a look at
       +  * http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html */
       + 
       +-              if (strcmp(fulluseragent, "")) {
       ++              if (strcmp(curconfig[UserAgent].val.v, "")) {
       ++                      webkit_settings_set_user_agent(settings, curconfig[UserAgent].val.v);
       ++              } else if (strcmp(fulluseragent, "")) {
       +                       webkit_settings_set_user_agent(settings, fulluseragent);
       +               } else if (surfuseragent) {
       +                       webkit_settings_set_user_agent_with_application_details(
       +@@ -1971,6 +2041,15 @@ clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h)
       +       spawn(c, &arg);
       + }
       + 
       ++void
       ++clickplumb(Client *c, const Arg *a, WebKitHitTestResult *h)
       ++{
       ++      Arg arg;
       ++      
       ++      arg = (Arg)PLUMB(c->targeturi ? c->targeturi : geturi(c));
       ++      spawn(c, &arg);
       ++}
       ++
       + int
       + main(int argc, char *argv[])
       + {
       diff -r a3bb5710584d -r eae716b2fb06 wip/surf-git/userscript.patch
       --- a/wip/surf-git/userscript.patch     Sat Jun 08 15:13:28 2019 +0200
       +++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
       @@ -1,159 +0,0 @@
       -$NetBSD$
       -
       -Add support for user script.
       -
       ---- config.def.h.orig
       -+++ config.def.h
       -@@ -3,6 +3,7 @@ static int surfuseragent    = 1;  /* Append Surf version to default WebKit user
       - static char *fulluseragent  = ""; /* Or override the whole user agent string */
       - static char *scriptfile     = "~/.surf/script.js";
       - static char *styledir       = "~/.surf/styles/";
       -+static char *scriptdir      = "~/.surf/script/";
       - static char *certdir        = "~/.surf/certificates/";
       - static char *cachedir       = "~/.surf/cache/";
       - static char *cookiefile     = "~/.surf/cookies.txt";
       -@@ -46,6 +47,7 @@ static Parameter defconfig[ParameterLast] = {
       -       [SpellLanguages]      =       { { .v = ((char *[]){ "en_US", NULL }) }, },
       -       [StrictTLS]           =       { { .i = 1 },     },
       -       [Style]               =       { { .i = 1 },     },
       -+      [UserScript]          =       { { .i = 1 },     },
       -       [WebGL]               =       { { .i = 0 },     },
       -       [ZoomLevel]           =       { { .f = 1.0 },   },
       - };
       -@@ -112,6 +114,12 @@ static SiteSpecific styles[] = {
       -       { ".*",                 "default.css" },
       - };
       - 
       -+/* scripts */
       -+static SiteSpecific scripts[] = {
       -+      /* regexp               file in $scriptdir */
       -+      { ".*",                 "default.js" },
       -+};
       -+
       - /* certificates */
       - /*
       -  * Provide custom certificate for urls
       ---- surf.c.orig
       -+++ surf.c
       -@@ -80,6 +80,7 @@ typedef enum {
       -       SpellLanguages,
       -       StrictTLS,
       -       Style,
       -+      UserScript,
       -       WebGL,
       -       ZoomLevel,
       -       ParameterLast
       -@@ -164,7 +165,9 @@ static void seturiparameters(Client *c, const char *uri, ParamName *params);
       - static void setparameter(Client *c, int refresh, ParamName p, const Arg *a);
       - static const char *getcert(const char *uri);
       - static void setcert(Client *c, const char *file);
       -+static const char *getscript(const char *uri);
       - static const char *getstyle(const char *uri);
       -+static void setscript(Client *c, const char *file);
       - static void setstyle(Client *c, const char *file);
       - static void runscript(Client *c);
       - static void evalscript(Client *c, const char *jsstr, ...);
       -@@ -265,6 +268,7 @@ static ParamName loadtransient[] = {
       -       PreferredLanguages,
       -       ShowIndicators,
       -       StrictTLS,
       -+      UserScript,
       -       ParameterLast
       - };
       - 
       -@@ -340,6 +344,7 @@ setup(void)
       -       scriptfile = buildfile(scriptfile);
       -       cachedir   = buildpath(cachedir);
       -       certdir    = buildpath(certdir);
       -+      scriptdir  = buildpath(scriptdir);
       - 
       -       gdkkb = gdk_seat_get_keyboard(gdk_display_get_default_seat(gdpy));
       - 
       -@@ -364,6 +369,17 @@ setup(void)
       -               }
       -       }
       - 
       -+      for (i = 0; i < LENGTH(scripts); ++i) {
       -+              if (!regcomp(&(scripts[i].re), scripts[i].regex, REG_EXTENDED)) {
       -+                      scripts[i].file = g_strconcat(scriptdir, "/", scripts[i].file,
       -+                                                  NULL);
       -+              } else {
       -+                      fprintf(stderr, "Could not compile regex: %s\n",
       -+                              scripts[i].regex);
       -+                      scripts[i].regex = NULL;
       -+              }
       -+      }
       -+
       -       if (!stylefile) {
       -               styledir = buildpath(styledir);
       -               for (i = 0; i < LENGTH(styles); ++i) {
       -@@ -722,6 +738,7 @@ seturiparameters(Client *c, const char *uri, ParamName *params)
       -               case Certificate:
       -               case CookiePolicies:
       -               case Style:
       -+              case UserScript:
       -                       setparameter(c, 0, p, &curconfig[p].val);
       -               }
       -       }
       -@@ -846,6 +863,13 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
       -                       setstyle(c, getstyle(geturi(c)));
       -               refresh = 0;
       -               break;
       -+      case UserScript:
       -+              webkit_user_content_manager_remove_all_scripts(
       -+                  webkit_web_view_get_user_content_manager(c->view));
       -+              if (a->i)
       -+                      setscript(c, getscript(geturi(c)));
       -+              refresh = 0;
       -+              break;
       -       case WebGL:
       -               webkit_settings_set_enable_webgl(s, a->i);
       -               break;
       -@@ -902,6 +926,20 @@ setcert(Client *c, const char *uri)
       - 
       - }
       - 
       -+const char *
       -+getscript(const char *uri)
       -+{
       -+      int i;
       -+
       -+      for (i = 0; i < LENGTH(scripts); ++i) {
       -+              if (scripts[i].regex &&
       -+                  !regexec(&(scripts[i].re), uri, 0, NULL, 0))
       -+                      return scripts[i].file;
       -+      }
       -+
       -+      return "";
       -+}
       -+
       - const char *
       - getstyle(const char *uri)
       - {
       -@@ -919,6 +957,26 @@ getstyle(const char *uri)
       -       return "";
       - }
       - 
       -+void
       -+setscript(Client *c, const char *file)
       -+{
       -+      gchar *script;
       -+
       -+      if (!g_file_get_contents(file, &script, NULL, NULL)) {
       -+              fprintf(stderr, "Could not read script file: %s\n", file);
       -+              return;
       -+      }
       -+
       -+      webkit_user_content_manager_add_script(
       -+          webkit_web_view_get_user_content_manager(c->view),
       -+          webkit_user_script_new(script,
       -+          WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
       -+          WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END,
       -+          NULL, NULL));
       -+
       -+      g_free(script);
       -+}
       -+
       - void
       - setstyle(Client *c, const char *file)
       - {