diff --git a/src/simple-mtpfs-mtp-device.cpp b/src/simple-mtpfs-mtp-device.cpp index 9d52fa5..8741f39 100644 --- a/src/simple-mtpfs-mtp-device.cpp +++ b/src/simple-mtpfs-mtp-device.cpp @@ -310,6 +310,8 @@ int MTPDevice::dirRemove(const std::string &path) logerr("No such directory '", path, "' to remove.\n"); return -ENOENT; } + if (!dir_to_remove->isEmpty()) + return -ENOTEMPTY; criticalEnter(); int rval = LIBMTP_Delete_Object(m_device, dir_to_remove->id()); criticalLeave(); diff --git a/src/simple-mtpfs-type-dir.h b/src/simple-mtpfs-type-dir.h index 73c7a06..b80c7f3 100644 --- a/src/simple-mtpfs-type-dir.h +++ b/src/simple-mtpfs-type-dir.h @@ -52,6 +52,7 @@ public: const TypeFile *file(const std::string &name) const; std::set dirs() const { return m_dirs; } std::set files() const { return m_files; } + bool isEmpty() const { return m_dirs.empty() && m_files.empty(); } LIBMTP_folder_t *toLIBMTPFolder() const; TypeDir &operator =(const TypeDir &rhs);