From 61f55e9fd799466bf3fd8e3e28d920b570bed4f0 Mon Sep 17 00:00:00 2001 From: ulion Date: Mon, 31 Dec 2007 01:20:50 +0000 Subject: Default use the dir where the current playing file located if path not set. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25556 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmenu/menu_filesel.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'libmenu') diff --git a/libmenu/menu_filesel.c b/libmenu/menu_filesel.c index 2a66b5d12b..ba8ceae550 100644 --- a/libmenu/menu_filesel.c +++ b/libmenu/menu_filesel.c @@ -31,6 +31,7 @@ int menu_keepdir = 0; char *menu_chroot = NULL; +extern char *filename; struct list_entry_s { struct list_entry p; @@ -425,8 +426,21 @@ static int open_fs(menu_t* menu, char* args) { } getcwd(wd,PATH_MAX); - if (!path || path[0] == '\0') - path = wd; + if (!path || path[0] == '\0') { + char *slash = NULL; + if (filename && !strstr(filename, "://") && (path=realpath(filename, b))) { + slash = strrchr(path, '/'); +#if defined(__MINGW32__) || defined(__CYGWIN__) + // FIXME: Do we need and can convert all '\\' in path to '/' on win32? + if (!slash) + slash = strrchr(path, '\\'); +#endif + } + if (slash) + slash[1] = '\0'; + else + path = wd; + } if (path[0] != '/') { if(path[strlen(path)-1] != '/') snprintf(b,sizeof(b),"%s/%s/",wd,path); -- cgit v1.2.3