diff --git a/pd/src/s_main.c b/pd/src/s_main.c index ce18046243fad9da7ae2510789322f6c272b0fd0..32f04efabd190bc254fb8a0144c170ab03003b7f 100644 --- a/pd/src/s_main.c +++ b/pd/src/s_main.c @@ -169,11 +169,18 @@ static void openit(const char *dirname, const char *filename) glob_evalfile(0, gensym(nameptr), gensym(dirbuf)); sys_vgui("pdtk_set_current_dir %s\n", filename); //sys_vgui("::pd_menus::update_recentfiles_menu .mbar.file 0\n"); + if (strstr(filename, dirname) != 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); + 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); + sys_vgui("::pd_guiprefs::update_recentfiles %s\%s 1\n", dirname, filename); #endif + } else { + sys_vgui("::pd_guiprefs::update_recentfiles %s 1\n", filename); + } } else error("%s: can't open", filename);