summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bin/e_fm.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c
index 06eb954..bbd3791 100644
--- a/src/bin/e_fm.c
+++ b/src/bin/e_fm.c
@@ -528,7 +528,22 @@ _e_fm2_icon_path(const E_Fm2_Icon *ic, char *buf, int buflen)
int r;
if (ic->info.link)
- r = snprintf(buf, buflen, "%s", ic->info.link);
+ {
+ if (ic->info.link[0] == '/')
+ r = snprintf(buf, buflen, "%s", ic->info.link);
+ else
+ {
+ char *tmp;
+
+ r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file);
+ tmp = ecore_file_realpath(buf);
+ if (tmp)
+ {
+ r = snprintf(buf, buflen, "%s", tmp);
+ free(tmp);
+ }
+ }
+ }
else
r = snprintf(buf, buflen, "%s/%s", ic->sd->path, ic->info.file);
return r < buflen;