From d65043648e4ce6fa6311d714d2b3400d0caa7482 Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Wed, 23 Jul 2014 17:02:53 -0400
Subject: [PATCH] *finally fixed proper adding of full paths to the recent
 files.

---
 pd/src/s_main.c | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/pd/src/s_main.c b/pd/src/s_main.c
index 161b0b112..6692d346a 100644
--- a/pd/src/s_main.c
+++ b/pd/src/s_main.c
@@ -168,24 +168,15 @@ static void openit(const char *dirname, const char *filename)
         close (fd);
         glob_evalfile(0, gensym(nameptr), gensym(dirbuf));
         sys_vgui("pdtk_set_current_dir %s\n", filename);
+        char actualpath[PATH_MAX];
+        char *path_ptr = NULL;
+        path_ptr = realpath(filename, actualpath);
         //sys_vgui("::pd_menus::update_recentfiles_menu .mbar.file 0\n");
-        if (strstr(filename, dirname) != NULL)
+        //fprintf(stderr, "%s %s %s %s %s\n", dirname, filename, 
+        //    strstr(filename, dirname), actualpath, path_ptr);
+        if (path_ptr != NULL)
         {
-            /* when opening files from a command line (at startup), filename
-               contains full path so, if dirname is already included in
-               filename we only pass filename variable otherwise combine the
-               two and send them together */
-#ifndef MSW
-            sys_vgui("::pd_guiprefs::update_recentfiles %s/%s 1\n",
-                dirname, filename);
-#else
-            sys_vgui("::pd_guiprefs::update_recentfiles %s\%s 1\n",
-                dirname, filename);
-#endif
-        }
-        else
-        {
-            sys_vgui("::pd_guiprefs::update_recentfiles %s 1\n", filename);
+            sys_vgui("::pd_guiprefs::update_recentfiles %s 1\n", actualpath);
         }
     }
     else
-- 
GitLab