[MPlayer-cvslog] r25339 - trunk/libmenu/menu_filesel.c
ulion
subversion at mplayerhq.hu
Mon Dec 10 15:12:41 CET 2007
Author: ulion
Date: Mon Dec 10 15:12:40 2007
New Revision: 25339
Log:
Fix mylstat() call to parent dir where the subdir has no exec permission.
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 10 15:12:40 2007
@@ -117,6 +117,26 @@ typedef int (*kill_warn)(const void*, co
static int mylstat(char *dir, char *file,struct stat* st) {
int l = strlen(dir) + strlen(file);
char s[l+2];
+ if (!strcmp("..", file)) {
+ char *slash;
+ l -= 3;
+ strcpy(s, dir);
+#if defined(__MINGW32__) || defined(__CYGWIN__)
+ if (s[l] == '/' || s[l] == '\\')
+#else
+ if (s[l] == '/')
+#endif
+ s[l] = '\0';
+ slash = strrchr(s, '/');
+#if defined(__MINGW32__) || defined(__CYGWIN__)
+ if (!slash)
+ slash = strrchr(s,'\\');
+#endif
+ if (!slash)
+ return stat(dir,st);
+ slash[1] = '\0';
+ return stat(s,st);
+ }
sprintf(s,"%s/%s",dir,file);
return stat(s,st);
}
@@ -229,7 +249,8 @@ static int menu_open_dir(menu_t* menu,ch
&& !strncmp (mpriv->dir, menu_chroot, len))
continue;
}
- mylstat(args,dp->d_name,&st);
+ if (mylstat(args,dp->d_name,&st))
+ continue;
if (file_filter && extensions && !S_ISDIR(st.st_mode)) {
if((ext = strrchr(dp->d_name,'.')) == NULL)
continue;
More information about the MPlayer-cvslog
mailing list