[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