[gthumb] Make comments and categories work for remote ~/.gvfs files



commit b170074b863cdd42bfb49a9a295468a71c0b711a
Author: Michael J. Chudobiak <mjc avtechpulse com>
Date:   Thu May 7 13:27:18 2009 -0400

    Make comments and categories work for remote ~/.gvfs files
---
 libgthumb/comments.c    |   53 ++++++++++++++++++++--------------------------
 libgthumb/file-utils.c  |    2 +-
 libgthumb/gfile-utils.c |    5 +---
 3 files changed, 25 insertions(+), 35 deletions(-)

diff --git a/libgthumb/comments.c b/libgthumb/comments.c
index 047c715..ccc1532 100644
--- a/libgthumb/comments.c
+++ b/libgthumb/comments.c
@@ -223,9 +223,6 @@ comment_copy (const char *src,
 	char *comment_src = NULL;
 	char *comment_dest = NULL;
 
-	if (! is_local_file (src) || ! is_local_file (dest))
-		return;
-
 	comment_src = comments_get_comment_filename (src, TRUE);
 	if (! path_is_file (comment_src)) {
 		g_free (comment_src);
@@ -250,9 +247,6 @@ comment_move (const char *src,
 	char *comment_src = NULL;
 	char *comment_dest = NULL;
 
-	if (! is_local_file (src) || ! is_local_file (dest))
-		return;
-
 	comment_src = comments_get_comment_filename (src, TRUE);
 	if (! path_is_file (comment_src)) {
 		g_free (comment_src);
@@ -275,9 +269,6 @@ comment_delete (const char *uri)
 {
 	char *comment_uri;
 
-	if ((uri == NULL) || ! is_local_file (uri))
-		return;
-
 	comment_uri = comments_get_comment_filename (uri, TRUE);
 	file_unlink (comment_uri);
 	g_free (comment_uri);
@@ -469,27 +460,26 @@ load_comment_from_xml (const char *uri)
 {
 	CommentData *data;
 	char        *comment_uri;
-	char	    *local_file = NULL;
 	xmlDocPtr    doc;
         xmlNodePtr   root, node;
         xmlChar     *value;
 	xmlChar     *format;
+	FileData    *fd;
 
 	if (uri == NULL)
 		return NULL;
 
 	comment_uri = comments_get_comment_filename (uri, TRUE);
-	local_file = get_cache_filename_from_uri (comment_uri);
-	if (! path_exists (local_file)) {
-		g_free (comment_uri);
-		g_free (local_file);
+	fd = file_data_new (comment_uri);
+	g_free (comment_uri);
+
+	if (! path_is_file (fd->utf8_path) || ! file_data_has_local_path (fd, NULL)) {
+		file_data_unref (fd);
 		return NULL;
 	}
 
-        doc = xmlParseFile (local_file);
-
-	g_free (comment_uri);
-        g_free (local_file);
+        doc = xmlParseFile (fd->local_path);
+	file_data_unref (fd);
         
 	if (doc == NULL) 
 		return NULL;
@@ -536,13 +526,13 @@ save_comment (const char  *uri,
 	xmlDocPtr    doc;
         xmlNodePtr   tree, subtree;
 	char        *comment_uri = NULL;
-        char        *local_file = NULL;
 	char        *time_str = NULL;
 	char        *keywords_str = NULL;
 	char        *dest_dir = NULL;
 	char        *e_comment = NULL, *e_place = NULL, *e_keywords = NULL;
+	FileData    *fd;
 
-	if ((data == NULL) || (uri == NULL) || ! is_local_file (uri))
+	if ((data == NULL) || (uri == NULL))
 		return;
 
 	if (save_embedded)
@@ -591,16 +581,19 @@ save_comment (const char  *uri,
 	/* Write to disk. */
 
 	comment_uri = comments_get_comment_filename (uri, TRUE);
-        local_file = get_cache_filename_from_uri (comment_uri);
-	dest_dir = remove_level_from_path (local_file);
-	if (ensure_dir_exists (dest_dir, 0700)) {
-		xmlSetDocCompressMode (doc, 3);
-		xmlSaveFile (local_file, doc);
+	fd = file_data_new (comment_uri);
+
+	if (file_data_has_local_path (fd, NULL)) {
+		dest_dir = remove_level_from_path (fd->local_path);
+		if (ensure_dir_exists (dest_dir, 0700)) {
+			xmlSetDocCompressMode (doc, 3);
+			xmlSaveFile (fd->local_path, doc);
+		}
 	}
 	
+	file_data_unref (fd);	
 	g_free (dest_dir);
 	g_free (comment_uri);
-	g_free (local_file);
         xmlFreeDoc (doc);
 }
 
@@ -612,7 +605,7 @@ comments_load_comment (const char *uri,
 	CommentData *xml_comment = NULL;
 	CommentData *img_comment = NULL;
 
-	if ((uri == NULL) || ! is_local_file (uri))
+	if (uri == NULL)
 		return NULL;
 
 	xml_comment = load_comment_from_xml (uri);
@@ -646,7 +639,7 @@ comments_save_comment (const char  *uri,
 {
 	CommentData *new_data;
 
-	if ((uri == NULL) || ! is_local_file (uri))
+	if (uri == NULL)
 		return;
 
 	new_data = comments_load_comment (uri, FALSE);
@@ -684,7 +677,7 @@ comments_save_comment_non_null (const char  *uri,
 {
 	CommentData *new_data;
 
-	if ((uri == NULL) || ! is_local_file (uri))
+	if (uri == NULL)
 		return;
 
 	new_data = comments_load_comment (uri, TRUE);
@@ -722,7 +715,7 @@ comments_save_categories (const char  *uri,
 	CommentData *new_data;
         GSList *tmp;
 
-	if ((uri == NULL) || ! is_local_file (uri))
+	if (uri == NULL)
 		return;
 
 	new_data = comments_load_comment (uri, TRUE);
diff --git a/libgthumb/file-utils.c b/libgthumb/file-utils.c
index 63c3190..f261ff0 100644
--- a/libgthumb/file-utils.c
+++ b/libgthumb/file-utils.c
@@ -389,7 +389,7 @@ ensure_dir_exists (const char *path,
 	
 	if (path == NULL)
 		return FALSE;
-	
+
 	gfile = gfile_new (path);
 	result = gfile_ensure_dir_exists (gfile, mode, NULL);
 	
diff --git a/libgthumb/gfile-utils.c b/libgthumb/gfile-utils.c
index f7e3101..53b14c7 100644
--- a/libgthumb/gfile-utils.c
+++ b/libgthumb/gfile-utils.c
@@ -442,7 +442,7 @@ _gfile_make_directory_tree (GFile    *dir,
                         return FALSE;
         }
 
-        success = g_file_make_directory (dir, NULL, error);
+        success = gfile_path_is_dir (dir) || g_file_make_directory (dir, NULL, error);
         if ((error != NULL) && (*error != NULL) && g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
                 g_clear_error (error);
                 success = TRUE;
@@ -474,9 +474,6 @@ gfile_ensure_dir_exists (GFile    *dir,
         if (error == NULL)
                 error = &priv_error;
 
-	if (gfile_path_is_dir (dir))
-		return TRUE;
-	
         if (! _gfile_make_directory_tree (dir, mode, error)) {
 
                 gfile_warning ("could not create directory", dir, *error);



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