- if (S_ISDIR(mode) && flags & DEL_RECURSE) {
- ret = delete_dir_contents(fname, flags);
- if (ret == DR_PINNED || ret == DR_NOT_EMPTY
-@@ -221,7 +229,7 @@ static enum delret delete_dir_contents(c
- }
-
- strlcpy(p, fp->basename, remainder);
-- result = delete_item(fname, fp->mode, NULL, flags);
-+ result = delete_item(fname, fp->mode, FILEFLAGS(fp->fileflags), NULL, flags);
- if (result != DR_SUCCESS && ret == DR_SUCCESS)
- ret = result == DR_PINNED ? result : DR_NOT_EMPTY;
+ if (S_ISDIR(mode) && !(flags & DEL_DIR_IS_EMPTY)) {
+ ignore_perishable = 1;
+ /* If DEL_RECURSE is not set, this just reports emptiness. */
+@@ -248,7 +256,7 @@ static enum delret delete_dir_contents(c
+ if (S_ISDIR(fp->mode)
+ && delete_dir_contents(fname, flags | DEL_RECURSE) != DR_SUCCESS)
+ ret = DR_NOT_EMPTY;
+- if (delete_item(fname, fp->mode, NULL, flags) != DR_SUCCESS)
++ if (delete_item(fname, fp->mode, FILEFLAGS(fp->fileflags), NULL, flags) != DR_SUCCESS)
+ ret = DR_NOT_EMPTY;