[gthumb] Make comments and categories work for remote ~/.gvfs files
- From: Michael J. Chudobiak <mjc src gnome org>
- To: svn-commits-list gnome org
- Subject: [gthumb] Make comments and categories work for remote ~/.gvfs files
- Date: Thu, 7 May 2009 13:28:01 -0400 (EDT)
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]