--- thunar/thunar/thunar-transfer-job.c 2013-05-05 12:37:23.000000000 -0400 +++ thunar-1.6.3/thunar/thunar-transfer-job.c 2014-08-01 23:49:12.323918933 -0400 @@ -269,6 +269,7 @@ GFileType target_type; gboolean target_exists; GError *err = NULL; + GFileInfo *info; _thunar_return_val_if_fail (THUNAR_IS_TRANSFER_JOB (job), FALSE); _thunar_return_val_if_fail (G_IS_FILE (source_file), FALSE); @@ -363,6 +364,33 @@ } } } + else if (err->code == G_IO_ERROR_NOT_SUPPORTED) + { + /* symlinks are not supported + * + * this means either that glib wasn't compiled with symlink + * support or that the target filesystem doesn't support + * them + * + * try again by following symlinks + */ + g_clear_error (&err); + + /* reset the filesize */ + info = g_file_query_info (source_file, + G_FILE_ATTRIBUTE_STANDARD_SIZE, + 0, exo_job_get_cancellable (EXO_JOB (job)), + &err); + if (G_UNLIKELY (info == NULL)) + return FALSE; + /* wrong: assumes symlink size is zero */ + job->total_size += g_file_info_get_size (info); + + g_file_copy (source_file, target_file, + copy_flags ^ G_FILE_COPY_NOFOLLOW_SYMLINKS, + exo_job_get_cancellable (EXO_JOB (job)), + thunar_transfer_job_progress, job, &err); + } } if (G_UNLIKELY (err != NULL))