[Xfce4-commits] r25829 - squeeze/trunk/libsqueeze
Stephan Arts
stephan at xfce.org
Thu Jun 21 11:45:16 CEST 2007
Author: stephan
Date: 2007-06-21 09:45:16 +0000 (Thu, 21 Jun 2007)
New Revision: 25829
Modified:
squeeze/trunk/libsqueeze/internals.h
squeeze/trunk/libsqueeze/libsqueeze.c
squeeze/trunk/libsqueeze/support-reader.c
Log:
check XDG_DATA_DIRS for .squeeze files and store factories in memory
Modified: squeeze/trunk/libsqueeze/internals.h
===================================================================
--- squeeze/trunk/libsqueeze/internals.h 2007-06-20 22:00:18 UTC (rev 25828)
+++ squeeze/trunk/libsqueeze/internals.h 2007-06-21 09:45:16 UTC (rev 25829)
@@ -14,6 +14,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+GSList *support_factory_list;
GSList *lsq_mime_info_list;
GSList *lsq_opened_archive_list;
ThunarVfsPath *lsq_relative_base_path;
Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c 2007-06-20 22:00:18 UTC (rev 25828)
+++ squeeze/trunk/libsqueeze/libsqueeze.c 2007-06-21 09:45:16 UTC (rev 25829)
@@ -23,12 +23,13 @@
#include <thunar-vfs/thunar-vfs.h>
#include "libsqueeze.h"
-#include "libsqueeze/libsqueeze-command.h"
-#include "libsqueeze/libsqueeze-vfs-mime.h"
-#include "libsqueeze/support-factory.h"
-#include "libsqueeze/archive-iter.h"
-#include "libsqueeze/archive-command.h"
-#include "libsqueeze/archive.h"
+#include "libsqueeze-command.h"
+#include "libsqueeze-vfs-mime.h"
+#include "support-factory.h"
+#include "support-reader.h"
+#include "archive-iter.h"
+#include "archive-command.h"
+#include "archive.h"
#include "vfs-mime.h"
@@ -40,20 +41,78 @@
void
lsq_init()
{
+ support_factory_list = NULL;
+
+ const gchar *filename = NULL;
gchar *current_dir = g_get_current_dir();
+ const gchar *data_home;
+ GDir *data_home_dir;
+ gchar *data_squeeze;
+
lsq_mime_database = thunar_vfs_mime_database_get_default();
lsq_relative_base_path = thunar_vfs_path_new(current_dir, NULL);
lsq_opened_archive_list = NULL;
g_free(current_dir);
- const gchar *data_home = g_getenv("XDG_DATA_HOME");
- gchar *data_squeeze = g_strconcat(data_home, "/squeeze", NULL);
- GDir *data_home_dir = g_dir_open(data_squeeze, 0, NULL);
+ data_home = g_getenv("XDG_DATA_HOME");
+ data_squeeze = g_strconcat(data_home, "/squeeze", NULL);
+ data_home_dir = g_dir_open(data_squeeze, 0, NULL);
if(data_home_dir)
+ {
+ while((filename = g_dir_read_name(data_home_dir)) != NULL)
+ {
+
+ if(g_str_has_suffix(filename, ".squeeze"))
+ {
+ gchar *path = g_strconcat(data_squeeze, "/", filename, NULL);
+ LSQSupportFactory *factory = lsq_support_reader_parse_file(path);
+ if(factory)
+ {
+ g_debug("factory found");
+ support_factory_list = g_slist_append(support_factory_list, factory);
+ }
+ g_free(path);
+ }
+ }
+
g_dir_close(data_home_dir);
+ }
+
+ g_free(data_squeeze);
+
+ const gchar *data_dirs = g_getenv("XDG_DATA_DIRS");
+
+ gchar **data_dir = g_strsplit(data_dirs, ":", 0);
+ gchar **_data_dir_iter = data_dir;
+ while(*_data_dir_iter)
+ {
+ data_squeeze = g_strconcat(*_data_dir_iter, "/squeeze", NULL);
+ data_home_dir = g_dir_open(data_squeeze, 0, NULL);
+ if(data_home_dir)
+ {
+ while((filename = g_dir_read_name(data_home_dir)) != NULL)
+ {
+
+ if(g_str_has_suffix(filename, ".squeeze"))
+ {
+ gchar *path = g_strconcat(data_squeeze, "/", filename, NULL);
+ LSQSupportFactory *factory = lsq_support_reader_parse_file(path);
+ if(factory)
+ {
+ g_debug("factory found");
+ support_factory_list = g_slist_append(support_factory_list, factory);
+ }
+ g_free(path);
+ }
+ }
+
+ g_dir_close(data_home_dir);
+ }
+ _data_dir_iter++;
+ }
}
void
Modified: squeeze/trunk/libsqueeze/support-reader.c
===================================================================
--- squeeze/trunk/libsqueeze/support-reader.c 2007-06-20 22:00:18 UTC (rev 25828)
+++ squeeze/trunk/libsqueeze/support-reader.c 2007-06-21 09:45:16 UTC (rev 25829)
@@ -145,7 +145,7 @@
mime_support->required_apps = xfce_rc_read_list_entry(rc, "X-Squeeze-Requires", ";");
gchar **_iter = mime_support->required_apps;
mime_support->supported = TRUE;
- while(_iter)
+ while(*_iter)
{
gchar *path = g_find_program_in_path(*_iter);
if(path)
More information about the Xfce4-commits
mailing list