diff options
author | Matteo Bernardini <ponce@slackbuilds.org> | 2012-12-18 21:08:08 -0500 |
---|---|---|
committer | dsomero <xgizzmo@slackbuilds.org> | 2012-12-23 09:16:47 -0500 |
commit | 23b8c687d9c1de82297556d7a82f81555fe9f6a7 (patch) | |
tree | 16a44d58b35f7b1c8c2e3116a6bc5db2383b4fb9 /libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch | |
parent | 4d841526538160b1ee1bc6eea1defecd06184f6a (diff) |
libraries/libfm: Apply patches from upstream.
Signed-off-by: dsomero <xgizzmo@slackbuilds.org>
Diffstat (limited to 'libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch')
-rw-r--r-- | libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch b/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch new file mode 100644 index 0000000000000..a980e81668a4c --- /dev/null +++ b/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch @@ -0,0 +1,57 @@ +From 690e15ba4367784f3ac2134c5e68d52ee05e6cbb Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko <andrej@rep.kiev.ua> +Date: Thu, 15 Nov 2012 21:08:51 +0200 +Subject: [PATCH 11/22] smb:// symlinked locations cannot be launched from + folder view. + +This is because we don't assume each symlink is a folder anymore +(that assuming was stupid anyway) so we check how to handle the +symlink target. We have to get info on the target. If target isn't +mounted we cannot retrieve info on it and FmFileInfoJob fails. +Therefore we cannot launch the location. +The commit adds creation of simplest file info which contains only +name and type (directory) for not mounted location. +--- + src/job/fm-file-info-job.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/job/fm-file-info-job.c b/src/job/fm-file-info-job.c +index 19acb1b..69eb37d 100644 +--- a/src/job/fm-file-info-job.c ++++ b/src/job/fm-file-info-job.c +@@ -165,6 +165,24 @@ static gboolean fm_file_info_job_run(FmJob* fmjob) + gf = fm_path_to_gfile(path); + if(!_fm_file_info_job_get_info_for_gfile(fmjob, fi, gf, &err)) + { ++ if(err->domain == G_IO_ERROR && err->code == G_IO_ERROR_NOT_MOUNTED) ++ { ++ GFileInfo *inf; ++ /* location by link isn't mounted; unfortunately we cannot ++ launch a target if we don't know what kind of target we ++ have; lets make a simplest directory-kind GFIleInfo */ ++ /* FIXME: this may be dirty a bit */ ++ g_error_free(err); ++ err = NULL; ++ inf = g_file_info_new(); ++ g_file_info_set_file_type(inf, G_FILE_TYPE_DIRECTORY); ++ g_file_info_set_name(inf, fm_path_get_basename(path)); ++ g_file_info_set_display_name(inf, fm_path_get_basename(path)); ++ fm_file_info_set_from_gfileinfo(fi, inf); ++ g_object_unref(inf); ++ } ++ else ++ { + FmJobErrorAction act = fm_job_emit_error(fmjob, err, FM_JOB_ERROR_MILD); + g_error_free(err); + err = NULL; +@@ -175,6 +193,7 @@ static gboolean fm_file_info_job_run(FmJob* fmjob) + } + + fm_file_info_list_delete_link(job->file_infos, l); /* also calls unref */ ++ } + } + g_object_unref(gf); + } +-- +1.8.0.1 + |