[Xfce4-commits] <midori:master> Introduce get_extension_config_dir/ _get_preset_filename
Christian Dywan
noreply at xfce.org
Tue Dec 4 01:48:01 CET 2012
Updating branch refs/heads/master
to b4aca14a6a24b8bd28eebf32035c6c2bac6d1bf1 (commit)
from 61163fd14f4181f07b5139ab2988ec7eaaf8953f (commit)
commit b4aca14a6a24b8bd28eebf32035c6c2bac6d1bf1
Author: Christian Dywan <christian at twotoasts.de>
Date: Tue Dec 4 01:45:13 2012 +0100
Introduce get_extension_config_dir/ _get_preset_filename
Handle extension filenames/ folders solely in Midori.Paths.
katze/midori-paths.vala | 31 +++++++++++++++++++++++++++++--
midori/midori-extension.c | 16 ++--------------
midori/midori-platform.h | 2 --
midori/midori-privatedata.c | 13 +++++++------
midori/midori.vapi | 2 +-
midori/wscript_build | 2 +-
tests/app.vala | 3 +++
7 files changed, 43 insertions(+), 26 deletions(-)
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index e88c0ac..fccf513 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -20,6 +20,8 @@ extern const string MDATADIR;
extern const string PACKAGE_NAME;
extern const string SYSCONFDIR;
extern const string MIDORI_VERSION_SUFFIX;
+const string MODULE_PREFIX = "lib";
+const string MODULE_SUFFIX = "." + GLib.Module.SUFFIX;
namespace Midori {
public enum RuntimeMode {
@@ -124,8 +126,11 @@ namespace Midori {
do {
string fn = path.substring (i, -1);
if (Posix.access (fn, Posix.F_OK) != 0) {
- if (DirUtils.create (fn, mode) == -1)
- return; /* Failed */
+ if (DirUtils.create (fn, mode) == -1) {
+ /* Slow fallback; if this fails we fail */
+ DirUtils.create_with_parents (path, mode);
+ return;
+ }
}
else if (!FileUtils.test (fn, FileTest.IS_SYMLINK))
return; /* Failed */
@@ -157,6 +162,28 @@ namespace Midori {
return config_dir;
}
+ public static string get_extension_config_dir (string extension) {
+ assert (config_dir != null);
+ string folder;
+ if ("." in extension)
+ folder = Path.build_filename (config_dir, "extensions", extension);
+ else
+ folder = Path.build_filename (config_dir, "extensions",
+ MODULE_PREFIX + extension + "." + GLib.Module.SUFFIX);
+ mkdir_with_parents (folder);
+ return folder;
+ }
+
+ public static string get_extension_preset_filename (string extension, string filename) {
+ assert (exec_path != null);
+ string preset_filename = extension;
+ if (extension.has_prefix (MODULE_PREFIX))
+ preset_filename = extension.split (MODULE_PREFIX)[1];
+ if (extension.has_suffix (MODULE_SUFFIX))
+ preset_filename = preset_filename.split (MODULE_SUFFIX)[0];
+ return get_preset_filename (Path.build_filename ("extensions", preset_filename), filename);
+ }
+
/* returns the path to a user configuration file to which it is permitted to write.
this is also necessary for files whose state is synchronized to disk by a manager,
e.g. cookies. */
diff --git a/midori/midori-extension.c b/midori/midori-extension.c
index 8c2c7b5..2db6a55 100644
--- a/midori/midori-extension.c
+++ b/midori/midori-extension.c
@@ -332,19 +332,8 @@ midori_extension_activate_cb (MidoriExtension* extension,
if (error->code == G_FILE_ERROR_NOENT)
{
gchar* filename = g_object_get_data (G_OBJECT (extension), "filename");
- gchar* folder;
- if (g_str_has_prefix (filename, MIDORI_MODULE_PREFIX))
- filename = &filename[strlen (MIDORI_MODULE_PREFIX)];
- if (g_str_has_suffix (filename, G_MODULE_SUFFIX))
- filename = g_strndup (filename,
- strlen (filename) - strlen ("." G_MODULE_SUFFIX));
- else
- filename = g_strdup (filename);
- folder = g_build_filename ("extensions", filename, NULL);
- g_free (filename);
katze_assign (config_file,
- midori_paths_get_preset_filename (folder, "config"));
- g_free (folder);
+ midori_paths_get_extension_preset_filename (filename, "config"));
g_key_file_load_from_file (extension->priv->key_file, config_file,
G_KEY_FILE_KEEP_COMMENTS, NULL);
}
@@ -812,8 +801,7 @@ midori_extension_get_config_dir (MidoriExtension* extension)
{
gchar* filename = g_object_get_data (G_OBJECT (extension), "filename");
if (filename != NULL)
- extension->priv->config_dir = g_build_filename (
- midori_paths_get_config_dir_for_writing (), "extensions", filename, NULL);
+ extension->priv->config_dir = midori_paths_get_extension_config_dir (filename);
else
extension->priv->config_dir = NULL;
}
diff --git a/midori/midori-platform.h b/midori/midori-platform.h
index b74339a..dfce79f 100644
--- a/midori/midori-platform.h
+++ b/midori/midori-platform.h
@@ -38,6 +38,4 @@
&& MIDORI_MOD_NEW_TAB(((GdkEventButton*)evt)->state)) \
|| (((GdkEventButton*)evt)->button == 2)))
-#define MIDORI_MODULE_PREFIX "lib"
-
#endif /* !__MIDORI_PLATFORM_H__ */
diff --git a/midori/midori-privatedata.c b/midori/midori-privatedata.c
index 40f4f83..48504cd 100644
--- a/midori/midori-privatedata.c
+++ b/midori/midori-privatedata.c
@@ -263,17 +263,18 @@ static void
midori_clear_saved_logins_cb (void)
{
sqlite3* db;
- gchar* path = g_build_filename (midori_paths_get_config_dir_for_writing (), "logins", NULL);
- g_unlink (path);
+ gchar* filename = midori_paths_get_config_filename_for_writing ("logins");
+ g_unlink (filename);
/* Form History database, written by the extension */
- katze_assign (path, g_build_filename (midori_paths_get_config_dir_for_writing (),
- "extensions", MIDORI_MODULE_PREFIX "formhistory." G_MODULE_SUFFIX, "forms.db", NULL));
- if (sqlite3_open (path, &db) == SQLITE_OK)
+ gchar* path = midori_paths_get_extension_config_dir ("formhistory");
+ katze_assign (filename, g_build_filename (path, "forms.db", NULL));
+ g_free (path);
+ if (sqlite3_open (filename, &db) == SQLITE_OK)
{
sqlite3_exec (db, "DELETE FROM forms", NULL, NULL, NULL);
sqlite3_close (db);
}
- g_free (path);
+ g_free (filename);
}
#if WEBKIT_CHECK_VERSION (1, 3, 11)
diff --git a/midori/midori.vapi b/midori/midori.vapi
index 8b63637..fd4ced7 100644
--- a/midori/midori.vapi
+++ b/midori/midori.vapi
@@ -207,7 +207,7 @@ namespace Midori {
PENDING_UNDELAY,
}
- public class WebSettings : WebKit.WebSettings {
+ public class WebSettings : Midori.Settings {
public WebSettings ();
[NoAccessorMethod]
public MidoriStartup load_on_startup { get; set; }
diff --git a/midori/wscript_build b/midori/wscript_build
index 17c7c4e..179161a 100644
--- a/midori/wscript_build
+++ b/midori/wscript_build
@@ -26,7 +26,7 @@ if progressive:
obj.add_marshal_file ('marshal.list', 'midori_cclosure_marshal')
obj.install_path = None
obj.vapi_dirs = '../midori ../katze'
- obj.packages = 'glib-2.0 gio-2.0 libsoup-2.4 webkitgtk-3.0 posix sqlite3'
+ obj.packages = 'glib-2.0 gmodule-2.0 gio-2.0 libsoup-2.4 webkitgtk-3.0 posix sqlite3'
if bld.env['HAVE_GTK3']:
obj.packages += ' gtk+-3.0'
else:
diff --git a/tests/app.vala b/tests/app.vala
index 4c633c1..cfb747f 100644
--- a/tests/app.vala
+++ b/tests/app.vala
@@ -19,6 +19,9 @@ void app_normal () {
var loop = MainContext.default ();
do { loop.iteration (true); } while (loop.pending ());
Midori.normal_app_on_quit (app);
+
+ string filename = Midori.Paths.get_extension_config_dir ("adblock");
+ assert (Posix.access (filename, Posix.F_OK) == 0);
}
void app_custom_config () {
More information about the Xfce4-commits
mailing list