mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-06-03 02:17:39 +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:
parent
2521ba47fe
commit
05b57f6c2c
1 changed files with 4 additions and 19 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue