فهرست منبع

Simplified SDL_SYS_RemovePath()

If we get ENOENT we call that success. If the parent directory doesn't exist, that's fine, other operations on it will fail if it matters to the application.
Sam Lantinga 1 سال پیش
والد
کامیت
05b57f6c2c
1فایلهای تغییر یافته به همراه4 افزوده شده و 19 حذف شده
  1. 4 19
      src/filesystem/posix/SDL_sysfsops.c

+ 4 - 19
src/filesystem/posix/SDL_sysfsops.c

@@ -59,26 +59,11 @@ int SDL_SYS_RemovePath(const char *path)
 {
     int rc = remove(path);
     if (rc < 0) {
-        const int origerrno = errno;
-        if (origerrno == ENOENT) {
-            char *parent = SDL_strdup(path);
-            if (!parent) {
-                return -1;
-            }
-
-            char *ptr = SDL_strrchr(parent, '/');
-            if (ptr) {
-                *ptr = '\0';  // chop off thing we were removing, see if parent is there.
-            }
-
-            struct stat statbuf;
-            rc = stat(ptr ? parent : ".", &statbuf);
-            SDL_free(parent);
-            if (rc == 0) {
-                return 0;  // it's already gone, and parent exists, consider it success.
-            }
+        if (errno == ENOENT) {
+            // It's already gone, this is a success
+            return 0;
         }
-        return SDL_SetError("Can't remove path: %s", strerror(origerrno));
+        return SDL_SetError("Can't remove path: %s", strerror(errno));
     }
     return 0;
 }