Преглед изворни кода

Cleaned up some __PHYSFS_platformStat() details.

Ryan C. Gordon пре 14 година
родитељ
комит
54cc53349d
2 измењених фајлова са 9 додато и 15 уклоњено
  1. 1 1
      src/archiver_dir.c
  2. 8 14
      src/platform_posix.c

+ 1 - 1
src/archiver_dir.c

@@ -72,7 +72,7 @@ static PHYSFS_Io *doOpen(dvoid *opaque, const char *name,
     allocator.Free(f);
     if (io == NULL)
     {
-        PHYSFS_Stat statbuf;
+        PHYSFS_Stat statbuf;  /* !!! FIXME: this changes the error message. */
         __PHYSFS_platformStat(f, fileExists, &statbuf);
         return NULL;
     } /* if */

+ 8 - 14
src/platform_posix.c

@@ -205,13 +205,12 @@ void __PHYSFS_platformEnumerateFiles(const char *dirname,
 
             strcpy(buf + dlen, ent->d_name);
 
-            if (__PHYSFS_platformStat(buf, &exists, &statbuf))
-            {
-                if (!exists)
-                    continue;
-                else if (statbuf.filetype == PHYSFS_FILETYPE_SYMLINK)
-                    continue;
-            } /* if */
+            if (!__PHYSFS_platformStat(buf, &exists, &statbuf))
+                continue;
+            else if (!exists)
+                continue;  /* probably can't happen, but just in case. */
+            else if (statbuf.filetype == PHYSFS_FILETYPE_SYMLINK)
+                continue;
         } /* if */
 
         callback(callbackdata, origdir, ent->d_name);
@@ -389,14 +388,9 @@ int __PHYSFS_platformStat(const char *filename, int *exists, PHYSFS_Stat *st)
 {
     struct stat statbuf;
 
-    if (lstat(filename, &statbuf))
+    if (lstat(filename, &statbuf) == -1)
     {
-        if (errno == ENOENT)
-        {
-            *exists = 0;
-            return 0;
-        } /* if */
-
+        *exists = (errno == ENOENT);
         BAIL_MACRO(strerror(errno), 0);
     } /* if */