[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