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.main
parent
2521ba47fe
commit
05b57f6c2c
|
@ -59,26 +59,11 @@ int SDL_SYS_RemovePath(const char *path)
|
||||||
{
|
{
|
||||||
int rc = remove(path);
|
int rc = remove(path);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
const int origerrno = errno;
|
if (errno == ENOENT) {
|
||||||
if (origerrno == ENOENT) {
|
// It's already gone, this is a success
|
||||||
char *parent = SDL_strdup(path);
|
return 0;
|
||||||
if (!parent) {
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
return SDL_SetError("Can't remove path: %s", strerror(errno));
|
||||||
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.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return SDL_SetError("Can't remove path: %s", strerror(origerrno));
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue