file-roller r2201 - in trunk: . src
- From: paobac svn gnome org
- To: svn-commits-list gnome org
- Subject: file-roller r2201 - in trunk: . src
- Date: Sun, 30 Mar 2008 17:59:27 +0100 (BST)
Author: paobac
Date: Sun Mar 30 17:59:27 2008
New Revision: 2201
URL: http://svn.gnome.org/viewvc/file-roller?rev=2201&view=rev
Log:
2008-03-30 Paolo Bacchilega <paobac svn gnome org>
* src/gio-utils.h:
* src/gio-utils.c:
* src/fr-archive.c:
Fixed remote copy of files to be added to the archive.
Modified:
trunk/ChangeLog
trunk/src/fr-archive.c
trunk/src/gio-utils.c
trunk/src/gio-utils.h
Modified: trunk/src/fr-archive.c
==============================================================================
--- trunk/src/fr-archive.c (original)
+++ trunk/src/fr-archive.c Sun Mar 30 17:59:27 2008
@@ -1754,18 +1754,17 @@
{
XferData *xfer_data = user_data;
- fr_archive_copy_done (archive, FR_ACTION_COPYING_FILES_FROM_REMOTE, error);
+ fr_archive_copy_done (xfer_data->archive, FR_ACTION_COPYING_FILES_FROM_REMOTE, error);
- if (error != NULL)
- return;
-
- fr_archive_add_local_files (xfer_data->archive,
- xfer_data->file_list,
- xfer_data->tmp_dir,
- xfer_data->dest_dir,
- FALSE,
- xfer_data->password,
- xfer_data->compression);
+ if (error == NULL)
+ fr_archive_add_local_files (xfer_data->archive,
+ xfer_data->file_list,
+ xfer_data->tmp_dir,
+ xfer_data->dest_dir,
+ FALSE,
+ xfer_data->password,
+ xfer_data->compression);
+ xfer_data_free (xfer_data);
}
@@ -1783,7 +1782,7 @@
g_signal_emit (G_OBJECT (xfer_data->archive),
fr_archive_signals[PROGRESS],
0,
- (double) current_file / total_files + 1);
+ (double) current_file / (total_files + 1));
}
@@ -1800,18 +1799,19 @@
GList *sources = NULL, *destinations = NULL;
GHashTable *created_folders;
GList *scan;
+ XferData *xfer_data;
created_folders = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, NULL);
for (scan = file_list; scan; scan = scan->next) {
char *partial_filename = scan->data;
char *local_uri;
char *local_folder_uri;
+ char *remote_uri;
local_uri = g_strconcat ("file://", tmp_dir, "/", partial_filename, NULL);
-
local_folder_uri = remove_level_from_path (local_uri);
if (g_hash_table_lookup (created_folders, local_folder_uri) == NULL) {
- result = make_tree (local_uri);
+ GnomeVFSResult result = make_tree (local_uri);
if (result != GNOME_VFS_OK) {
g_free (local_folder_uri);
g_free (local_uri);
@@ -2024,7 +2024,7 @@
*/
g_directory_list_async (source_dir,
- NULL,
+ source_dir,
recursive,
follow_links,
NO_BACKUP_FILES,
Modified: trunk/src/gio-utils.c
==============================================================================
--- trunk/src/gio-utils.c (original)
+++ trunk/src/gio-utils.c Sun Mar 30 17:59:27 2008
@@ -200,7 +200,7 @@
if (fec->already_visited)
g_hash_table_destroy (fec->already_visited);
if (fec->to_visit != NULL)
- path_list_free (fec->to_visit);
+ g_list_free (fec->to_visit);
if (fec->error != NULL)
g_error_free (fec->error);
g_free (fec);
@@ -263,17 +263,15 @@
uri = g_strconcat (current_directory, "/", name, NULL);
if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_DIRECTORY) {
- char *sub_directory;
-
/* avoid to visit a directory more than ones */
- sub_directory = g_strdup (uri);
- if (g_hash_table_lookup (fec->already_visited, sub_directory) == NULL) {
+ if (g_hash_table_lookup (fec->already_visited, uri) == NULL) {
+ char *sub_directory;
+
+ sub_directory = g_strdup (uri);
g_hash_table_insert (fec->already_visited, sub_directory, GINT_TO_POINTER (1));
fec->to_visit = g_list_append (fec->to_visit, sub_directory);
}
- else
- g_free (sub_directory);
}
fec->for_each_file_func (uri, child_info, fec->user_data);
@@ -466,8 +464,11 @@
{
GList *scan;
GList *dir_list = NULL;
- int base_dir_len = strlen (base_dir);
+ int base_dir_len;
+ if (base_dir == NULL)
+ base_dir = "";
+ base_dir_len = strlen (base_dir);
for (scan = files; scan; scan = scan->next) {
char *filename = scan->data;
char *dir_name;
@@ -509,7 +510,6 @@
{
GetFileListData *gfl = user_data;
GHashTable *h_dirs;
- char *dir;
GList *scan;
gfl->files = g_list_reverse (gfl->files);
@@ -520,20 +520,23 @@
gfl->dirs = NULL;
}
+ h_dirs = g_hash_table_new (g_str_hash, g_str_equal);
+
/* Always include the base directory, this way empty base
* directories are added to the archive as well. */
- h_dirs = g_hash_table_new (g_str_hash, g_str_equal);
-
- dir = g_strdup (gfl->base_dir);
- gfl->dirs = g_list_prepend (gfl->dirs, dir);
- g_hash_table_insert (h_dirs, dir, GINT_TO_POINTER (1));
+ if (gfl->base_dir != NULL) {
+ char *dir;
+
+ dir = g_strdup (gfl->base_dir);
+ gfl->dirs = g_list_prepend (gfl->dirs, dir);
+ g_hash_table_insert (h_dirs, dir, GINT_TO_POINTER (1));
+ }
/* Add all the parent directories in gfl->files/gfl->dirs to the
* gfl->dirs list, the hash table is used to avoid duplicated
* entries. */
- h_dirs = g_hash_table_new (g_str_hash, g_str_equal);
for (scan = gfl->dirs; scan; scan = scan->next)
g_hash_table_insert (h_dirs, (char*)scan->data, GINT_TO_POINTER (1));
@@ -592,7 +595,7 @@
void
-g_directory_list_async (const char *directory,
+g_directory_list_async (const char *directory,
const char *base_dir,
gboolean recursive,
gboolean follow_links,
@@ -932,10 +935,10 @@
gpointer user_data)
{
GList *source_files;
- GList *source_files;
+ GList *destination_files;
source_files = g_list_append (NULL, (gpointer)source);
- source_files = g_list_append (NULL, (gpointer)destination);
+ destination_files = g_list_append (NULL, (gpointer)destination);
g_copy_files_async (source_files,
destination_files,
@@ -1050,8 +1053,8 @@
typedef struct {
- GFile *source;
- GFile *destination;
+ char *source;
+ char *destination;
GFileCopyFlags flags;
int io_priority;
GCancellable *cancellable;
@@ -1061,8 +1064,6 @@
gpointer user_data;
GError *error;
- char *source_uri;
- char *destination_uri;
GList *to_copy;
GList *current;
GFile *current_source;
@@ -1076,11 +1077,9 @@
{
if (dcd == NULL)
return;
- g_object_unref (dcd->source);
- g_object_unref (dcd->destination);
- g_object_unref (dcd->cancellable);
- g_free (dcd->source_uri);
- g_free (dcd->destination_uri);
+
+ g_free (dcd->source);
+ g_free (dcd->destination);
if (dcd->current_source != NULL) {
g_object_unref (dcd->current_source);
dcd->current_source = NULL;
@@ -1091,6 +1090,7 @@
}
g_list_foreach (dcd->to_copy, (GFunc) child_data_free, NULL);
g_list_free (dcd->to_copy);
+ g_object_unref (dcd->cancellable);
g_free (dcd);
}
@@ -1114,7 +1114,7 @@
char *destination_uri;
GFile *destination_file;
- destination_uri = g_strconcat (dcd->destination_uri, "/", uri + strlen (dcd->source_uri) + 1, NULL);
+ destination_uri = g_strconcat (dcd->destination, "/", uri + strlen (dcd->source) + 1, NULL);
destination_file = g_file_new_for_uri (destination_uri);
g_free (destination_uri);
@@ -1265,8 +1265,8 @@
void
-g_directory_copy_async (GFile *source,
- GFile *destination,
+g_directory_copy_async (const char *source,
+ const char *destination,
GFileCopyFlags flags,
int io_priority,
GCancellable *cancellable,
@@ -1279,25 +1279,22 @@
GFileInfo *info;
dcd = g_new0 (DirectoryCopyData, 1);
- dcd->source = g_file_dup (source);
- dcd->destination = g_file_dup (destination);
+ dcd->source = g_strdup (source);
+ dcd->destination = g_strdup (destination);
dcd->flags = flags;
dcd->io_priority = io_priority;
dcd->cancellable = cancellable;
dcd->progress_callback = progress_callback;
dcd->progress_callback_data = progress_callback_data;
dcd->callback = callback;
- dcd->user_data = user_data;
-
- dcd->source_uri = g_file_get_uri (dcd->source);
- dcd->destination_uri = g_file_get_uri (dcd->destination);
+ dcd->user_data = user_data;
info = g_file_info_new ();
g_file_info_set_file_type (info, G_FILE_TYPE_DIRECTORY);
- dcd->to_copy = g_list_prepend (NULL, child_data_new (dcd->source_uri, info));
+ dcd->to_copy = g_list_prepend (NULL, child_data_new (dcd->source, info));
g_object_unref (info);
- g_directory_foreach_child (dcd->source_uri,
+ g_directory_foreach_child (dcd->source,
TRUE,
TRUE,
dcd->cancellable,
Modified: trunk/src/gio-utils.h
==============================================================================
--- trunk/src/gio-utils.h (original)
+++ trunk/src/gio-utils.h Sun Mar 30 17:59:27 2008
@@ -116,8 +116,8 @@
gpointer progress_callback_data,
CopyDoneCallback callback,
gpointer user_data);
-void g_directory_copy_async (GFile *source,
- GFile *destination,
+void g_directory_copy_async (const char *source,
+ const char *destination,
GFileCopyFlags flags,
int io_priority,
GCancellable *cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]