[MPlayer-cvslog] r25556 - trunk/libmenu/menu_filesel.c

Zuxy Meng zuxy.meng at gmail.com
Wed Jan 9 14:02:24 CET 2008


Hi,

"ulion" <subversion at mplayerhq.hu> 写入消息新闻:20071231012050.DE8553B1ED at natsuki.mplayerhq.hu...
> Author: ulion
> Date: Mon Dec 31 02:20:50 2007
> New Revision: 25556
> 
> Log:
> Default use the dir where the current playing file located if path not set.
> 
> 
> Modified:
>   trunk/libmenu/menu_filesel.c
> 
> Modified: trunk/libmenu/menu_filesel.c
> ==============================================================================
> --- trunk/libmenu/menu_filesel.c (original)
> +++ trunk/libmenu/menu_filesel.c Mon Dec 31 02:20:50 2007
> @@ -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* a
>   }
>   
>   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))) {

realpath() breaks MinGW build and what's more, it's by design unsafe. Please find a better way to deal with this.

> +      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);

Anyway, has this patch been reviewed ever?

-- 
Zuxy


More information about the MPlayer-cvslog mailing list