mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-01 07:28:30 +00:00
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.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user