diff options
| author | 2016-07-06 18:37:43 -0400 | |
|---|---|---|
| committer | 2016-07-06 18:37:43 -0400 | |
| commit | 6fa7b1f4863a2e6bde07c3f7ddca3ac52da39757 (patch) | |
| tree | bd9f49be6615f05c9f4fd4fd31dd16bfa0eb8ace /src | |
| parent | Merge pull request #1921 from Subv/fs_funcs (diff) | |
| parent | Fix the errorcode of archive handle (diff) | |
| download | yuzu-6fa7b1f4863a2e6bde07c3f7ddca3ac52da39757.tar.gz yuzu-6fa7b1f4863a2e6bde07c3f7ddca3ac52da39757.tar.xz yuzu-6fa7b1f4863a2e6bde07c3f7ddca3ac52da39757.zip | |
Merge pull request #1940 from JamePeng/fix-archive-error-code
Fix the errorcode of archive handle
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/result.h | 1 | ||||
| -rw-r--r-- | src/core/hle/service/fs/archive.cpp | 24 |
2 files changed, 15 insertions, 10 deletions
diff --git a/src/core/hle/result.h b/src/core/hle/result.h index 68d6f5a87..268a8dad2 100644 --- a/src/core/hle/result.h +++ b/src/core/hle/result.h | |||
| @@ -20,6 +20,7 @@ enum class ErrorDescription : u32 { | |||
| 20 | WrongPermission = 46, | 20 | WrongPermission = 46, |
| 21 | OS_InvalidBufferDescriptor = 48, | 21 | OS_InvalidBufferDescriptor = 48, |
| 22 | WrongAddress = 53, | 22 | WrongAddress = 53, |
| 23 | FS_ArchiveNotMounted = 101, | ||
| 23 | FS_NotFound = 120, | 24 | FS_NotFound = 120, |
| 24 | FS_AlreadyExists = 190, | 25 | FS_AlreadyExists = 190, |
| 25 | FS_InvalidOpenFlags = 230, | 26 | FS_InvalidOpenFlags = 230, |
diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp index 81b9abe4c..f4acc4895 100644 --- a/src/core/hle/service/fs/archive.cpp +++ b/src/core/hle/service/fs/archive.cpp | |||
| @@ -58,6 +58,10 @@ namespace FS { | |||
| 58 | const ResultCode ERR_INVALID_HANDLE(ErrorDescription::InvalidHandle, ErrorModule::FS, | 58 | const ResultCode ERR_INVALID_HANDLE(ErrorDescription::InvalidHandle, ErrorModule::FS, |
| 59 | ErrorSummary::InvalidArgument, ErrorLevel::Permanent); | 59 | ErrorSummary::InvalidArgument, ErrorLevel::Permanent); |
| 60 | 60 | ||
| 61 | /// Returned when a function is passed an invalid archive handle. | ||
| 62 | const ResultCode ERR_INVALID_ARCHIVE_HANDLE(ErrorDescription::FS_ArchiveNotMounted, ErrorModule::FS, | ||
| 63 | ErrorSummary::NotFound, ErrorLevel::Status); // 0xC8804465 | ||
| 64 | |||
| 61 | // Command to access archive file | 65 | // Command to access archive file |
| 62 | enum class FileCommand : u32 { | 66 | enum class FileCommand : u32 { |
| 63 | Dummy1 = 0x000100C6, | 67 | Dummy1 = 0x000100C6, |
| @@ -292,7 +296,7 @@ ResultVal<ArchiveHandle> OpenArchive(ArchiveIdCode id_code, FileSys::Path& archi | |||
| 292 | 296 | ||
| 293 | ResultCode CloseArchive(ArchiveHandle handle) { | 297 | ResultCode CloseArchive(ArchiveHandle handle) { |
| 294 | if (handle_map.erase(handle) == 0) | 298 | if (handle_map.erase(handle) == 0) |
| 295 | return ERR_INVALID_HANDLE; | 299 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 296 | else | 300 | else |
| 297 | return RESULT_SUCCESS; | 301 | return RESULT_SUCCESS; |
| 298 | } | 302 | } |
| @@ -314,7 +318,7 @@ ResultVal<Kernel::SharedPtr<File>> OpenFileFromArchive(ArchiveHandle archive_han | |||
| 314 | const FileSys::Path& path, const FileSys::Mode mode) { | 318 | const FileSys::Path& path, const FileSys::Mode mode) { |
| 315 | ArchiveBackend* archive = GetArchive(archive_handle); | 319 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 316 | if (archive == nullptr) | 320 | if (archive == nullptr) |
| 317 | return ERR_INVALID_HANDLE; | 321 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 318 | 322 | ||
| 319 | auto backend = archive->OpenFile(path, mode); | 323 | auto backend = archive->OpenFile(path, mode); |
| 320 | if (backend.Failed()) | 324 | if (backend.Failed()) |
| @@ -327,7 +331,7 @@ ResultVal<Kernel::SharedPtr<File>> OpenFileFromArchive(ArchiveHandle archive_han | |||
| 327 | ResultCode DeleteFileFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { | 331 | ResultCode DeleteFileFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { |
| 328 | ArchiveBackend* archive = GetArchive(archive_handle); | 332 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 329 | if (archive == nullptr) | 333 | if (archive == nullptr) |
| 330 | return ERR_INVALID_HANDLE; | 334 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 331 | 335 | ||
| 332 | return archive->DeleteFile(path); | 336 | return archive->DeleteFile(path); |
| 333 | } | 337 | } |
| @@ -337,7 +341,7 @@ ResultCode RenameFileBetweenArchives(ArchiveHandle src_archive_handle, const Fil | |||
| 337 | ArchiveBackend* src_archive = GetArchive(src_archive_handle); | 341 | ArchiveBackend* src_archive = GetArchive(src_archive_handle); |
| 338 | ArchiveBackend* dest_archive = GetArchive(dest_archive_handle); | 342 | ArchiveBackend* dest_archive = GetArchive(dest_archive_handle); |
| 339 | if (src_archive == nullptr || dest_archive == nullptr) | 343 | if (src_archive == nullptr || dest_archive == nullptr) |
| 340 | return ERR_INVALID_HANDLE; | 344 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 341 | 345 | ||
| 342 | if (src_archive == dest_archive) { | 346 | if (src_archive == dest_archive) { |
| 343 | if (src_archive->RenameFile(src_path, dest_path)) | 347 | if (src_archive->RenameFile(src_path, dest_path)) |
| @@ -356,7 +360,7 @@ ResultCode RenameFileBetweenArchives(ArchiveHandle src_archive_handle, const Fil | |||
| 356 | ResultCode DeleteDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { | 360 | ResultCode DeleteDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { |
| 357 | ArchiveBackend* archive = GetArchive(archive_handle); | 361 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 358 | if (archive == nullptr) | 362 | if (archive == nullptr) |
| 359 | return ERR_INVALID_HANDLE; | 363 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 360 | 364 | ||
| 361 | if (archive->DeleteDirectory(path)) | 365 | if (archive->DeleteDirectory(path)) |
| 362 | return RESULT_SUCCESS; | 366 | return RESULT_SUCCESS; |
| @@ -367,7 +371,7 @@ ResultCode DeleteDirectoryFromArchive(ArchiveHandle archive_handle, const FileSy | |||
| 367 | ResultCode CreateFileInArchive(ArchiveHandle archive_handle, const FileSys::Path& path, u64 file_size) { | 371 | ResultCode CreateFileInArchive(ArchiveHandle archive_handle, const FileSys::Path& path, u64 file_size) { |
| 368 | ArchiveBackend* archive = GetArchive(archive_handle); | 372 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 369 | if (archive == nullptr) | 373 | if (archive == nullptr) |
| 370 | return ERR_INVALID_HANDLE; | 374 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 371 | 375 | ||
| 372 | return archive->CreateFile(path, file_size); | 376 | return archive->CreateFile(path, file_size); |
| 373 | } | 377 | } |
| @@ -375,7 +379,7 @@ ResultCode CreateFileInArchive(ArchiveHandle archive_handle, const FileSys::Path | |||
| 375 | ResultCode CreateDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { | 379 | ResultCode CreateDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { |
| 376 | ArchiveBackend* archive = GetArchive(archive_handle); | 380 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 377 | if (archive == nullptr) | 381 | if (archive == nullptr) |
| 378 | return ERR_INVALID_HANDLE; | 382 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 379 | 383 | ||
| 380 | if (archive->CreateDirectory(path)) | 384 | if (archive->CreateDirectory(path)) |
| 381 | return RESULT_SUCCESS; | 385 | return RESULT_SUCCESS; |
| @@ -388,7 +392,7 @@ ResultCode RenameDirectoryBetweenArchives(ArchiveHandle src_archive_handle, cons | |||
| 388 | ArchiveBackend* src_archive = GetArchive(src_archive_handle); | 392 | ArchiveBackend* src_archive = GetArchive(src_archive_handle); |
| 389 | ArchiveBackend* dest_archive = GetArchive(dest_archive_handle); | 393 | ArchiveBackend* dest_archive = GetArchive(dest_archive_handle); |
| 390 | if (src_archive == nullptr || dest_archive == nullptr) | 394 | if (src_archive == nullptr || dest_archive == nullptr) |
| 391 | return ERR_INVALID_HANDLE; | 395 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 392 | 396 | ||
| 393 | if (src_archive == dest_archive) { | 397 | if (src_archive == dest_archive) { |
| 394 | if (src_archive->RenameDirectory(src_path, dest_path)) | 398 | if (src_archive->RenameDirectory(src_path, dest_path)) |
| @@ -408,7 +412,7 @@ ResultVal<Kernel::SharedPtr<Directory>> OpenDirectoryFromArchive(ArchiveHandle a | |||
| 408 | const FileSys::Path& path) { | 412 | const FileSys::Path& path) { |
| 409 | ArchiveBackend* archive = GetArchive(archive_handle); | 413 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 410 | if (archive == nullptr) | 414 | if (archive == nullptr) |
| 411 | return ERR_INVALID_HANDLE; | 415 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 412 | 416 | ||
| 413 | std::unique_ptr<FileSys::DirectoryBackend> backend = archive->OpenDirectory(path); | 417 | std::unique_ptr<FileSys::DirectoryBackend> backend = archive->OpenDirectory(path); |
| 414 | if (backend == nullptr) { | 418 | if (backend == nullptr) { |
| @@ -423,7 +427,7 @@ ResultVal<Kernel::SharedPtr<Directory>> OpenDirectoryFromArchive(ArchiveHandle a | |||
| 423 | ResultVal<u64> GetFreeBytesInArchive(ArchiveHandle archive_handle) { | 427 | ResultVal<u64> GetFreeBytesInArchive(ArchiveHandle archive_handle) { |
| 424 | ArchiveBackend* archive = GetArchive(archive_handle); | 428 | ArchiveBackend* archive = GetArchive(archive_handle); |
| 425 | if (archive == nullptr) | 429 | if (archive == nullptr) |
| 426 | return ERR_INVALID_HANDLE; | 430 | return ERR_INVALID_ARCHIVE_HANDLE; |
| 427 | return MakeResult<u64>(archive->GetFreeBytes()); | 431 | return MakeResult<u64>(archive->GetFreeBytes()); |
| 428 | } | 432 | } |
| 429 | 433 | ||