HLE/FS: Corrected the error codes for DeleteFile

This commit is contained in:
Subv 2015-12-28 09:59:27 -05:00 committed by Sean Maas
parent e6e217caa4
commit c68bf3936c
6 changed files with 22 additions and 12 deletions

View file

@ -83,9 +83,9 @@ public:
/** /**
* Delete a file specified by its path * Delete a file specified by its path
* @param path Path relative to the archive * @param path Path relative to the archive
* @return Whether the file could be deleted * @return Result of the operation
*/ */
virtual bool DeleteFile(const Path& path) const = 0; virtual ResultCode DeleteFile(const Path& path) const = 0;
/** /**
* Rename a File specified by its path * Rename a File specified by its path

View file

@ -25,8 +25,19 @@ std::unique_ptr<FileBackend> DiskArchive::OpenFile(const Path& path, const Mode
return std::move(file); return std::move(file);
} }
bool DiskArchive::DeleteFile(const Path& path) const { ResultCode DiskArchive::DeleteFile(const Path& path) const {
return FileUtil::Delete(mount_point + path.AsString()); std::string file_path = mount_point + path.AsString();
if (FileUtil::IsDirectory(file_path))
return ResultCode(ErrorDescription::FS_NotAFile, ErrorModule::FS, ErrorSummary::Canceled, ErrorLevel::Status);
if (!FileUtil::Exists(file_path))
return ResultCode(ErrorDescription::FS_NotFound, ErrorModule::FS, ErrorSummary::NotFound, ErrorLevel::Status);
if (FileUtil::Delete(file_path))
return RESULT_SUCCESS;
return ResultCode(ErrorDescription::FS_NotAFile, ErrorModule::FS, ErrorSummary::Canceled, ErrorLevel::Status);
} }
bool DiskArchive::RenameFile(const Path& src_path, const Path& dest_path) const { bool DiskArchive::RenameFile(const Path& src_path, const Path& dest_path) const {

View file

@ -34,7 +34,7 @@ public:
virtual std::string GetName() const override { return "DiskArchive: " + mount_point; } virtual std::string GetName() const override { return "DiskArchive: " + mount_point; }
std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override; std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override;
bool DeleteFile(const Path& path) const override; ResultCode DeleteFile(const Path& path) const override;
bool RenameFile(const Path& src_path, const Path& dest_path) const override; bool RenameFile(const Path& src_path, const Path& dest_path) const override;
bool DeleteDirectory(const Path& path) const override; bool DeleteDirectory(const Path& path) const override;
ResultCode CreateFile(const Path& path, u64 size) const override; ResultCode CreateFile(const Path& path, u64 size) const override;

View file

@ -24,9 +24,11 @@ std::unique_ptr<FileBackend> IVFCArchive::OpenFile(const Path& path, const Mode
return Common::make_unique<IVFCFile>(romfs_file, data_offset, data_size); return Common::make_unique<IVFCFile>(romfs_file, data_offset, data_size);
} }
bool IVFCArchive::DeleteFile(const Path& path) const { ResultCode IVFCArchive::DeleteFile(const Path& path) const {
LOG_CRITICAL(Service_FS, "Attempted to delete a file from an IVFC archive (%s).", GetName().c_str()); LOG_CRITICAL(Service_FS, "Attempted to delete a file from an IVFC archive (%s).", GetName().c_str());
return false; // TODO(Subv): Verify error code
return ResultCode(ErrorDescription::NoData, ErrorModule::FS,
ErrorSummary::Canceled, ErrorLevel::Status);
} }
bool IVFCArchive::RenameFile(const Path& src_path, const Path& dest_path) const { bool IVFCArchive::RenameFile(const Path& src_path, const Path& dest_path) const {

View file

@ -35,7 +35,7 @@ public:
std::string GetName() const override; std::string GetName() const override;
std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override; std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override;
bool DeleteFile(const Path& path) const override; ResultCode DeleteFile(const Path& path) const override;
bool RenameFile(const Path& src_path, const Path& dest_path) const override; bool RenameFile(const Path& src_path, const Path& dest_path) const override;
bool DeleteDirectory(const Path& path) const override; bool DeleteDirectory(const Path& path) const override;
ResultCode CreateFile(const Path& path, u64 size) const override; ResultCode CreateFile(const Path& path, u64 size) const override;

View file

@ -309,10 +309,7 @@ ResultCode DeleteFileFromArchive(ArchiveHandle archive_handle, const FileSys::Pa
if (archive == nullptr) if (archive == nullptr)
return ERR_INVALID_HANDLE; return ERR_INVALID_HANDLE;
if (archive->DeleteFile(path)) return archive->DeleteFile(path);
return RESULT_SUCCESS;
return ResultCode(ErrorDescription::NoData, ErrorModule::FS, // TODO: verify description
ErrorSummary::Canceled, ErrorLevel::Status);
} }
ResultCode RenameFileBetweenArchives(ArchiveHandle src_archive_handle, const FileSys::Path& src_path, ResultCode RenameFileBetweenArchives(ArchiveHandle src_archive_handle, const FileSys::Path& src_path,