]> granicus.if.org Git - neomutt/commitdiff
Use stat() instead of dirent->d_type to test for directory. Closes #3089.
authorVladimir Marek <Vladimir.Marek@Sun.COM>
Wed, 2 Jul 2008 16:26:17 +0000 (18:26 +0200)
committerVladimir Marek <Vladimir.Marek@Sun.COM>
Wed, 2 Jul 2008 16:26:17 +0000 (18:26 +0200)
ChangeLog
lib.c

index 93ca9f19d16780be45e8d2edfcd8b7b9d5ad247b..49ee221cc2e68f013700bc0f2336530d3c8d0230 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-07-02 18:23 +0200  Rocco Rutte  <pdmef@gmx.net>  (7783502a04c7)
+
+       * curs_main.c: Calculate menu->max after a possible resort in index
+       (maybe changing number of messages). Closes #3088.
+
+2008-07-02 18:08 +0200  Rocco Rutte  <pdmef@gmx.net>  (f41ba27be46f)
+
+       * ChangeLog, curs_lib.c: Fix casts for progress update to prevent
+       -ftrapv aborts to trigger. Closes #3018.
+
 2008-07-02 08:56 -0700  Brendan Cully  <brendan@kublai.com>  (c51c16db46cc)
 
        * crypt-gpgme.c: Only make LC_MESSAGES conditional on NLS in GPGME
diff --git a/lib.c b/lib.c
index baf016c4847b19c0bb9adae8d7f445cfd244213f..f5bd366c421052b500acec90c51363b5c4cb144f 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -41,6 +41,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <pwd.h>
+#include <sys/types.h>
 #include <dirent.h>
 
 #ifdef HAVE_SYSEXITS_H
@@ -583,6 +584,7 @@ int mutt_rmtree (const char* path)
   DIR* dirp;
   struct dirent* de;
   char cur[_POSIX_PATH_MAX];
+  struct stat statbuf;
   int rc = 0;
 
   if (!(dirp = opendir (path)))
@@ -597,7 +599,14 @@ int mutt_rmtree (const char* path)
 
     snprintf (cur, sizeof (cur), "%s/%s", path, de->d_name);
     /* XXX make nonrecursive version */
-    if (de->d_type == DT_DIR)
+
+    if (stat(cur, &statbuf) == -1)
+    {
+      rc = 1;
+      continue;
+    }
+
+    if (S_ISDIR (statbuf.st_mode))
       rc |= mutt_rmtree (cur);
     else
       rc |= unlink (cur);