[evolution-rss] More work on trying to make the path operation as portable as possible



commit 3920fde537fccfc8809f2062d3141c1004f2a084
Author: Fridrich Å trba <fridrich strba bluewin ch>
Date:   Tue Apr 13 15:06:20 2010 +0200

    More work on trying to make the path operation as portable as possible

 src/network-soup.c       |    6 ++--
 src/parser.c             |    6 ++--
 src/rss-cache.c          |    6 ++--
 src/rss-config-factory.c |   11 +++----
 src/rss.c                |   76 ++++++++++++++++++++++++++++------------------
 5 files changed, 60 insertions(+), 45 deletions(-)
---
diff --git a/src/network-soup.c b/src/network-soup.c
index bda202d..b3bd03e 100644
--- a/src/network-soup.c
+++ b/src/network-soup.c
@@ -311,7 +311,7 @@ read_up(gpointer data)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", feed_dir, buf);
 	g_free(feed_dir);
 
 	fr = fopen(feed_name, "r");
@@ -341,7 +341,7 @@ save_up(gpointer data)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", feed_dir, buf);
 	g_free(feed_dir);
 
 	fr = fopen(feed_name, "w+");
@@ -369,7 +369,7 @@ del_up(gpointer data)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", feed_dir, buf);
 	g_free(feed_dir);
 	unlink(feed_name);
 	g_free(feed_name);
diff --git a/src/parser.c b/src/parser.c
index 3201a66..7aaaed9 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1083,7 +1083,7 @@ update_channel(RDF *r)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", feed_dir, buf);
 	g_free(feed_dir);
 
 	fr = fopen(feed_name, "r");
@@ -1114,8 +1114,8 @@ update_channel(RDF *r)
 		CF->feedid = g_strdup(buf);
 		CF->sender = g_strdup(sender);
 		if (r->prefix)
-			CF->full_path = g_strconcat(
-						r->prefix, "/",
+			CF->full_path = g_build_path(
+						G_DIR_SEPARATOR_S, r->prefix,
 						chn_name, NULL);
 		else
 			CF->full_path = g_strdup(chn_name);
diff --git a/src/rss-cache.c b/src/rss-cache.c
index 20696aa..5ae4178 100644
--- a/src/rss-cache.c
+++ b/src/rss-cache.c
@@ -76,18 +76,18 @@ rss_cache_get_path(int create, const char *key)
 #if (DATASERVER_VERSION >= 2031001)
 	dir = alloca(strlen(camel_data_cache_get_path(cache))
 		+ strlen(HTTP_CACHE_PATH) + 8);
-	sprintf(dir, "%s/%s/%02x",
+	sprintf(dir, "%s" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%02x",
 		camel_data_cache_get_path(cache),
 		HTTP_CACHE_PATH, hash);
 #else
 	dir = alloca(strlen(cache->path)
 		+ strlen(HTTP_CACHE_PATH) + 8);
-	sprintf(dir, "%s/%s/%02x", cache->path, HTTP_CACHE_PATH, hash);
+	sprintf(dir, "%s" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%02x", cache->path, HTTP_CACHE_PATH, hash);
 #endif
 	tmp = camel_file_util_safe_filename(key);
 	if (!tmp)
 		return NULL;
-	real = g_strdup_printf("%s/%s", dir, tmp);
+	real = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dir, tmp);
 	g_free(tmp);
 
 	return real;
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index 78edd04..59c5166 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -373,9 +373,8 @@ construct_list(gpointer key, gpointer value, gpointer user_data)
 	gtk_list_store_append (store, &iter);
 	full_name = lookup_feed_folder(key);
 	name = g_path_get_basename(full_name);
-	full_path = g_strconcat(
+	full_path = g_build_filename(
 			lookup_main_folder(),
-			"/",
 			full_name,
 			NULL);
 	gtk_list_store_set (
@@ -2246,7 +2245,7 @@ while (info) {
 	fpath = extract_main_folder(fold->full_name);
 	g_print("fpath:%s\n", fpath);
 
-	path = g_strsplit(fpath, "/", 0);
+	path = g_strsplit(fpath, G_DIR_SEPARATOR_S, 0);
 	if (path) {
 		do {
 			g_print("path:%s\n", path[i]);
@@ -2277,7 +2276,7 @@ gen_folder_parents(GList *list, GList *flist, gchar *tmp)
 	flist = g_list_first(flist);
 	while ((flist = g_list_next(flist))) {
 		if (!strncmp(tmp, flist->data, strlen(tmp))) {
-			path = g_strsplit(flist->data, "/", 0);
+			path = g_strsplit(flist->data, G_DIR_SEPARATOR_S, 0);
 			i=0;
 			str=NULL;
 			if (*path != NULL) {
@@ -2285,8 +2284,8 @@ gen_folder_parents(GList *list, GList *flist, gchar *tmp)
 					if (!str)
 						str = g_strdup(path[i]);
 					else
-						str = g_strconcat(
-							str, "/",
+						str = g_build_filename(
+							str,
 							path[i], NULL);
 					if (!g_list_find_custom(list, str, (GCompareFunc)strcmp))
 						list = g_list_append(list, str);
diff --git a/src/rss.c b/src/rss.c
index 17ec252..572c2a9 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -156,6 +156,32 @@ int rss_verbose_debug = 0;
 #include "parser.h"
 
 
+#ifdef _WIN32
+char *strcasestr(const char *a, const char *b)
+{
+	char *a2=g_ascii_strdown(a,-1), *b2=g_ascii_strdown(b,-1), *r=strstr(a2,b2);
+	if(r)
+		r=(char *)a+(r-a2);
+	g_free(a2);
+	g_free(b2);
+	return r;
+}
+#endif
+
+static void sanitize_path_separator(gchar *);
+
+static void
+sanitize_path_separator(gchar *str)
+{
+#ifdef _WIN32
+	while (*str != '\0') {
+		if (G_IS_DIR_SEPARATOR(*str))
+			*str = G_DIR_SEPARATOR;
+		str++;
+	}
+#endif
+}
+
 int pop = 0;
 GtkWidget *flabel;
 //#define RSS_DEBUG 1
@@ -1004,7 +1030,7 @@ rss_select_folder(gchar *folder_name)
 #if 0 //kb//
 	CamelStore *store = rss_component_peek_local_store();
 	EMFolderTreeModel *model = mail_component_peek_tree_model(mail_component_peek());
-	gchar *real_name = g_strdup_printf("%s/%s", lookup_main_folder(), folder_name);
+	gchar *real_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", lookup_main_folder(), folder_name);
 	CamelFolder *folder = camel_store_get_folder (store, real_name, 0, NULL);
 
 	g_print("real_name:%s\n", real_name);
@@ -2931,7 +2957,7 @@ void org_gnome_cooly_folder_icon(void *ep, EMEventTargetCustomIcon *t)
 #else
 			gchar *feed_dir = rss_component_peek_base_directory();
 			gchar *feed_file = g_strdup_printf(
-						"%s/%s.img", feed_dir, key);
+						"%s" G_DIR_SEPARATOR_S "%s.img", feed_dir, key);
 			pixbuf = gdk_pixbuf_new_from_file(feed_file, NULL);
 			g_free(feed_dir);
 
@@ -3053,18 +3079,6 @@ search_rss(char *buffer, int len)
 	return NULL;
 }
 
-#ifdef _WIN32
-char *strcasestr(const char *a, const char *b)
-{
-	char *a2=g_ascii_strdown(a,-1), *b2=g_ascii_strdown(b,-1), *r=strstr(a2,b2);
-	if(r)
-		r=(char *)a+(r-a2);
-	g_free(a2);
-	g_free(b2);
-	return r;
-}
-#endif
-
 void
 prepare_hashes(void)
 {
@@ -3348,7 +3362,7 @@ add:
 
 		/* folder might not be created yet */
 		real_name = g_strdup_printf(
-				"%s/%s",
+				"%s" G_DIR_SEPARATOR_S "%s",
 				lookup_main_folder(),
 				lookup_feed_folder(chn_name));
 		rss_select_folder(real_name);
@@ -4014,17 +4028,17 @@ gchar *
 rss_component_peek_base_directory(void)
 {
 #if (EVOLUTION_VERSION >= 22900) //kb//
-	return g_strdup_printf("%s/rss",
+	return g_strdup_printf("%s" G_DIR_SEPARATOR_S "rss",
 //		em_utils_get_data_dir());
 		mail_session_get_data_dir ());
 #else
 	MailComponent *component = mail_component_peek();
 /* http://bugzilla.gnome.org/show_bug.cgi?id=513951 */
 #if (EVOLUTION_VERSION >= 22300)		// include devel too
-	return g_strdup_printf("%s/rss",
+	return g_strdup_printf("%s" G_DIR_SEPARATOR_S "rss",
 		mail_component_peek_base_directory (component));
 #else
-	return g_strdup_printf("%s/mail/rss",
+	return g_strdup_printf("%s" G_DIR_SEPARATOR_S "mail" G_DIR_SEPARATOR_S "rss",
 		mail_component_peek_base_directory (component));
 #endif
 #endif
@@ -4049,7 +4063,7 @@ get_main_folder(void)
 
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_file = g_strdup_printf("%s/main_folder", feed_dir);
+	feed_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "main_folder", feed_dir);
 	g_free(feed_dir);
 	if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
 		FILE *f = fopen(feed_file, "r");
@@ -4082,7 +4096,7 @@ get_feed_folders(void)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_file = g_strdup_printf("%s/feed_folders", feed_dir);
+	feed_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "feed_folders", feed_dir);
 	g_free(feed_dir);
 	if (g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
 		FILE *f = fopen(feed_file, "r");
@@ -4175,13 +4189,14 @@ finish_update_feed_image (
 	gchar *feed_dir = rss_component_peek_base_directory();
 	gchar *url = (gchar *)user_data;
 	gchar *key = gen_md5(url);
-	gchar *img_file = g_strdup_printf("%s/%s.img", feed_dir, key);
+	gchar *img_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.img", feed_dir, key);
 	gchar *urldir, *server;
 	rfMessage *rfmsg;
 	xmlChar *app;
 	xmlNode *doc;
 
 	g_free(feed_dir);
+	sanitize_path_separator(img_file);
 	urldir = g_path_get_dirname(url);
 	server = get_server_from_uri(url);
 	rfmsg = g_new0(rfMessage, 1);
@@ -4269,7 +4284,7 @@ gboolean
 check_update_feed_image(gchar *key)
 {
 	gchar *feed_dir = rss_component_peek_base_directory();
-	gchar *fav_file = g_strdup_printf("%s/%s.fav", feed_dir, key);
+	gchar *fav_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.fav", feed_dir, key);
 	struct timeval start;
 	FILE *f = NULL;
 	gboolean ret = TRUE;
@@ -4333,7 +4348,7 @@ update_feed_image(RDF *r)
 	feed_dir = rss_component_peek_base_directory();
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 		g_mkdir_with_parents (feed_dir, 0755);
-	feed_file = g_strdup_printf("%s/%s.img", feed_dir, key);
+	feed_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.img", feed_dir, key);
 	d("feed_image() tmpurl:%s\n", feed_file);
 	g_free(feed_dir);
 	if (!g_file_test(feed_file, G_FILE_TEST_EXISTS)) {
@@ -4545,14 +4560,15 @@ check_feed_folder(gchar *folder_name)
 	gchar *main_folder = lookup_main_folder();
 	gchar *real_folder = lookup_feed_folder(folder_name);
 	gchar *real_name = g_strdup_printf(
-				"%s/%s", main_folder, real_folder);
+				"%s" G_DIR_SEPARATOR_S "%s", main_folder, real_folder);
 	d("main_folder:%s\n", main_folder);
 	d("real_folder:%s\n", real_folder);
 	d("real_name:%s\n", real_name);
 	mail_folder = camel_store_get_folder (store, real_name, 0, NULL);
 	base_folder = main_folder;
 	if (mail_folder == NULL) {
-		path = g_strsplit(real_folder, "/", 0);
+		sanitize_path_separator(real_folder);
+		path = g_strsplit(real_folder, G_DIR_SEPARATOR_S, 0);
 		if (path) {
 			do {
 				if (path[i] == NULL)
@@ -4627,7 +4643,7 @@ rss_delete_feed(gchar *full_path, gboolean folder)
 		goto out;
 	buf = gen_md5(url);
 	feed_dir = rss_component_peek_base_directory();
-	feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+	feed_name = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", feed_dir, buf);
 	g_free(feed_dir);
 	g_free(buf);
 	unlink(feed_name);
@@ -6008,7 +6024,7 @@ gboolean
 display_folder_icon(GtkTreeStore *tree_store, gchar *key)
 {
 	gchar *feed_dir = rss_component_peek_base_directory();
-	gchar *img_file = g_strdup_printf("%s/%s.img", feed_dir, key);
+	gchar *img_file = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.img", feed_dir, key);
 	GdkPixbuf *icon, *pixbuf;
 	gboolean result = FALSE;
 	GtkTreeIter iter;
@@ -6026,7 +6042,7 @@ display_folder_icon(GtkTreeStore *tree_store, gchar *key)
 	if (pixbuf) {
 		gchar *name = g_hash_table_lookup(rf->hrname_r, key);
 		gchar *full_name = g_strdup_printf(
-					"%s/%s",
+					"%s" G_DIR_SEPARATOR_S "%s",
 					get_main_folder(),
 					lookup_feed_folder(name));
 		rss_folder = camel_store_get_folder (
@@ -6146,7 +6162,7 @@ verify_image(gchar *uri, EMFormatHTML *format)
  * / -> file://
 /* http://git.gnome.org/browse/evolution/commit/?id=d9deaf9bbc7fd9d0c72d5cf9b1981e3a56ed1162
  */
-#if (DATASERVER_VERSION >= 2031001)
+#if (EVOLUTION_VERSION >= 23001)
 		return g_filename_to_uri(uri, NULL, NULL);
 #else
 		return NULL;
@@ -6494,7 +6510,7 @@ get_feed_age(RDF *r, gpointer name)
 	d("Cleaning folder: %s\n", real_folder);
 
 	real_name = g_strdup_printf(
-			"%s/%s",
+			"%s" G_DIR_SEPARATOR_S "%s",
 			lookup_main_folder(),
 			real_folder);
 	if (!(folder = camel_store_get_folder (store, real_name, 0, NULL)))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]