nautilus r14579 - in trunk: . libnautilus-private
- From: cneumair svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r14579 - in trunk: . libnautilus-private
- Date: Tue, 2 Sep 2008 23:30:41 +0000 (UTC)
Author: cneumair
Date: Tue Sep 2 23:30:41 2008
New Revision: 14579
URL: http://svn.gnome.org/viewvc/nautilus?rev=14579&view=rev
Log:
2008-09-03 Christian Neumair <cneumair gnome org>
* libnautilus-private/nautilus-file-operations.c (create_job):
Use file name duplication helper, unless we create directories. Also
consider maximal file name length. Fixes #240116.
Modified:
trunk/ChangeLog
trunk/libnautilus-private/nautilus-file-operations.c
Modified: trunk/libnautilus-private/nautilus-file-operations.c
==============================================================================
--- trunk/libnautilus-private/nautilus-file-operations.c (original)
+++ trunk/libnautilus-private/nautilus-file-operations.c Tue Sep 2 23:30:41 2008
@@ -5364,6 +5364,7 @@
char *data;
GFileOutputStream *out;
gboolean handled_invalid_filename;
+ int max_length;
job = user_data;
common = &job->common;
@@ -5376,7 +5377,9 @@
dest_fs_type = NULL;
filename = NULL;
dest = NULL;
-
+
+ max_length = get_max_name_length (job->dest_dir);
+
verify_destination (common,
job->dest_dir,
NULL, -1);
@@ -5480,10 +5483,23 @@
g_object_unref (dest);
- if (count > 1) {
+ if (count == 1) {
new_filename = g_strdup (filename);
+ } else if (job->make_dir) {
+ filename2 = g_strdup_printf ("%s %d", filename, count);
+
+ new_filename = NULL;
+ if (max_length > 0 && strlen (filename2) > max_length) {
+ new_filename = shorten_utf8_string (filename2, strlen (filename2) - max_length);
+ }
+
+ if (new_filename == NULL) {
+ new_filename = g_strdup (filename2);
+ }
+
+ g_free (filename2);
} else {
- new_filename = g_strdup_printf ("%s %d", filename, count);
+ new_filename = get_duplicate_name (filename, count, max_length);
}
if (make_file_name_valid_for_dest_fs (new_filename, dest_fs_type)) {
@@ -5504,7 +5520,18 @@
} else if (IS_IO_ERROR (error, EXISTS)) {
g_object_unref (dest);
dest = NULL;
- filename2 = g_strdup_printf ("%s %d", filename, ++count);
+ if (job->make_dir) {
+ filename2 = g_strdup_printf ("%s %d", filename, ++count);
+ if (max_length > 0 && strlen (filename2) > max_length) {
+ new_filename = shorten_utf8_string (filename2, strlen (filename2) - max_length);
+ if (new_filename != NULL) {
+ g_free (filename2);
+ filename2 = new_filename;
+ }
+ }
+ } else {
+ filename2 = get_duplicate_name (filename, count++, max_length);
+ }
make_file_name_valid_for_dest_fs (filename2, dest_fs_type);
if (filename_is_utf8) {
dest = g_file_get_child_for_display_name (job->dest_dir, filename2, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]