From 05b57f6c2cbb4103f4ece01ab0a9182679d3b02f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 21 Mar 2024 21:16:14 -0700 Subject: [PATCH] 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. --- src/filesystem/posix/SDL_sysfsops.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/filesystem/posix/SDL_sysfsops.c b/src/filesystem/posix/SDL_sysfsops.c index fcc38ed9b..857782eb6 100644 --- a/src/filesystem/posix/SDL_sysfsops.c +++ b/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; }