summaryrefslogtreecommitdiff
path: root/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch')
-rw-r--r--pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch b/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch
new file mode 100644
index 00000000..17bc12f5
--- /dev/null
+++ b/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch
@@ -0,0 +1,100 @@
+From 8a15a5505db85870f340c61fea1db3da16fde039 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 24 Dec 2016 16:57:34 -0800
+Subject: [PATCH] framebuffer: Fix cookie defaults
+
+---
+ frontends/framebuffer/gui.c | 48 +++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 46 insertions(+), 2 deletions(-)
+
+diff --git a/frontends/framebuffer/gui.c b/frontends/framebuffer/gui.c
+index 2e819e6fa..e176ac9e4 100644
+--- a/frontends/framebuffer/gui.c
++++ b/frontends/framebuffer/gui.c
+@@ -31,6 +31,7 @@
+
+ #include "utils/utils.h"
+ #include "utils/nsoption.h"
++#include "utils/file.h"
+ #include "utils/filepath.h"
+ #include "utils/log.h"
+ #include "utils/messages.h"
+@@ -61,6 +62,7 @@
+ fbtk_widget_t *fbtk;
+
+ static bool fb_complete = false;
++static char *fb_data_home;
+
+ struct gui_window *input_window = NULL;
+ struct gui_window *search_current_window;
+@@ -527,9 +529,18 @@ process_cmdline(int argc, char** argv)
+ */
+ static nserror set_defaults(struct nsoption_s *defaults)
+ {
++ char *fname;
++
+ /* Set defaults for absent option strings */
+- nsoption_setnull_charp(cookie_file, strdup("~/.netsurf/Cookies"));
+- nsoption_setnull_charp(cookie_jar, strdup("~/.netsurf/Cookies"));
++ fname = NULL;
++ netsurf_mkpath(&fname, NULL, 2, fb_data_home, "Cookies");
++ if (fname != NULL)
++ nsoption_setnull_charp(cookie_file, fname);
++
++ fname = NULL;
++ netsurf_mkpath(&fname, NULL, 2, fb_data_home, "Cookies");
++ if (fname != NULL)
++ nsoption_setnull_charp(cookie_jar, fname);
+
+ if (nsoption_charp(cookie_file) == NULL ||
+ nsoption_charp(cookie_jar) == NULL) {
+@@ -2076,6 +2087,34 @@ static struct gui_misc_table framebuffer_misc_table = {
+ .quit = gui_quit,
+ };
+
++static nserror get_data_home(char **data_home_out)
++{
++ nserror ret;
++ char *xdg_data_home, *data_home, *home;
++
++ xdg_data_home = getenv("XDG_DATA_HOME");
++ if ((xdg_data_home == NULL) || (*xdg_data_home == '\0')) {
++ home = getenv("HOME");
++ if (home == NULL)
++ return NSERROR_NOT_DIRECTORY;
++ ret = netsurf_mkpath(&data_home, NULL, 5, home, ".local", "share", "netsurf", "/");
++ } else {
++ ret = netsurf_mkpath(&data_home, NULL, 3, xdg_data_home, "netsurf", "/");
++ }
++ if (ret != NSERROR_OK)
++ return ret;
++
++ ret = netsurf_mkdir_all(data_home);
++ if (ret != NSERROR_OK) {
++ free(data_home);
++ return ret;
++ }
++ data_home[strlen(data_home) - 1] = 0;
++ *data_home_out = data_home;
++
++ return NSERROR_OK;
++}
++
+ /** Entry point from OS.
+ *
+ * /param argc The number of arguments in the string vector.
+@@ -2106,6 +2145,11 @@ main(int argc, char** argv)
+ die("NetSurf operation table failed registration");
+ }
+
++ ret = get_data_home(&fb_data_home);
++ if (ret != NSERROR_OK) {
++ die("Failed to get home data directory");
++ }
++
+ respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH);
+
+ /* initialise logging. Not fatal if it fails but not much we
+--
+2.11.0
+