[Xfce4-commits] <squeeze:master> Overruling .squeeze files
Peter de Ridder
noreply at xfce.org
Wed Aug 24 21:20:01 CEST 2011
Updating branch refs/heads/master
to c85322c147e9436ed497d5f1da544a6fe6ce72a1 (commit)
from 3a639f649f4027a00e0a3e2446713cd3344495b8 (commit)
commit c85322c147e9436ed497d5f1da544a6fe6ce72a1
Author: Peter de Ridder <peter at xfce.org>
Date: Wed Aug 24 21:15:56 2011 +0200
Overruling .squeeze files
libsqueeze/libsqueeze.c | 40 +++++++++++++++++++---------------------
libsqueeze/support-factory.c | 6 ++++++
libsqueeze/support-factory.h | 2 ++
libsqueeze/support-reader.c | 2 ++
4 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/libsqueeze/libsqueeze.c b/libsqueeze/libsqueeze.c
index 9c9956a..2dd2105 100644
--- a/libsqueeze/libsqueeze.c
+++ b/libsqueeze/libsqueeze.c
@@ -44,16 +44,22 @@ lsq_read_squeeze_dir(const gchar *dir)
{
if(g_str_has_suffix(filename, ".squeeze"))
{
- /**
- * FIXME: factories should be per-mime-type, not per-template
+ /* see if a file with this name was already loaded.
+ * skip this file. configuration was overruled
*/
- gchar *path = g_strconcat(dir, "/", filename, NULL);
- LSQSupportFactory *factory = lsq_support_reader_parse_file(path);
- if(factory)
+ if ( NULL == g_slist_find_custom(support_factory_list, filename, (GCompareFunc)lsq_suport_factory_compare_filename) )
{
- support_factory_list = g_slist_append(support_factory_list, factory);
+ /**
+ * FIXME: factories should be per-mime-type, not per-template
+ */
+ gchar *path = g_strconcat(dir, "/", filename, NULL);
+ LSQSupportFactory *factory = lsq_support_reader_parse_file(path);
+ if(factory)
+ {
+ support_factory_list = g_slist_append(support_factory_list, factory);
+ }
+ g_free(path);
}
- g_free(path);
}
}
@@ -72,28 +78,20 @@ lsq_init(void)
lsq_opened_archive_list = NULL;
+ data_squeeze = g_build_path("/", user_dir, "squeeze", NULL);
+ lsq_read_squeeze_dir(data_squeeze);
+ g_free(data_squeeze);
+
data_squeeze = g_build_path("/", DATADIR, "squeeze", NULL);
lsq_read_squeeze_dir(data_squeeze);
g_free(data_squeeze);
- /* FIXME: compare filenames for overruling .squeeze file configurations */
- if (0 != strcmp(DATADIR, user_dir) && 0 != strcmp(DATADIR "/", user_dir))
+ for (; NULL != *system_dirs; ++system_dirs)
{
- data_squeeze = g_build_path("/", user_dir, "squeeze", NULL);
+ data_squeeze = g_build_path("/", *system_dirs, "squeeze", NULL);
lsq_read_squeeze_dir(data_squeeze);
g_free(data_squeeze);
}
-
- for (; NULL != *system_dirs; ++system_dirs)
- {
-
- if (0 != strcmp(DATADIR, *system_dirs) && 0 != strcmp(DATADIR "/", *system_dirs))
- {
- data_squeeze = g_build_path("/", *system_dirs, "squeeze", NULL);
- lsq_read_squeeze_dir(data_squeeze);
- g_free(data_squeeze);
- }
- }
}
void
diff --git a/libsqueeze/support-factory.c b/libsqueeze/support-factory.c
index d520f63..6d9f631 100644
--- a/libsqueeze/support-factory.c
+++ b/libsqueeze/support-factory.c
@@ -130,3 +130,9 @@ lsq_support_factory_add_template(LSQSupportFactory *factory, LSQSupportTemplate
}
+gint
+lsq_suport_factory_compare_filename(const LSQSupportFactory *factory, const gchar *filename)
+{
+ return strcmp(factory->filename, filename);
+}
+
diff --git a/libsqueeze/support-factory.h b/libsqueeze/support-factory.h
index 8a14e90..2d10d83 100644
--- a/libsqueeze/support-factory.h
+++ b/libsqueeze/support-factory.h
@@ -27,6 +27,7 @@ typedef struct _LSQSupportFactory LSQSupportFactory;
struct _LSQSupportFactory
{
GObject parent;
+ gchar *filename;
gchar *id;
GSList *mime_support;
};
@@ -41,5 +42,6 @@ struct _LSQSupportFactoryClass
GType lsq_support_factory_get_type(void);
void lsq_support_factory_init_archive(LSQSupportFactory *builder, LSQArchive *archive);
void lsq_support_factory_add_template(LSQSupportFactory *factory, LSQSupportTemplate *s_template);
+gint lsq_suport_factory_compare_filename(const LSQSupportFactory *factory, const gchar *filename);
#endif /* __LIBSQUEEZE_SUPPORT_FACTORY_H__ */
diff --git a/libsqueeze/support-reader.c b/libsqueeze/support-reader.c
index cb83387..150cf56 100644
--- a/libsqueeze/support-reader.c
+++ b/libsqueeze/support-reader.c
@@ -138,6 +138,8 @@ lsq_support_reader_parse_file(const gchar *filename)
XfceRc *rc = xfce_rc_simple_open(filename, TRUE);
+ factory->filename = g_path_get_basename(filename);
+
xfce_rc_set_group(rc, "Desktop Entry");
type = xfce_rc_read_entry(rc, "Type", "");
More information about the Xfce4-commits
mailing list