summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2016-07-06 18:37:43 -0400
committerGravatar GitHub2016-07-06 18:37:43 -0400
commit6fa7b1f4863a2e6bde07c3f7ddca3ac52da39757 (patch)
treebd9f49be6615f05c9f4fd4fd31dd16bfa0eb8ace /src
parentMerge pull request #1921 from Subv/fs_funcs (diff)
parentFix the errorcode of archive handle (diff)
downloadyuzu-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.h1
-rw-r--r--src/core/hle/service/fs/archive.cpp24
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 {
58const ResultCode ERR_INVALID_HANDLE(ErrorDescription::InvalidHandle, ErrorModule::FS, 58const 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.
62const 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
62enum class FileCommand : u32 { 66enum class FileCommand : u32 {
63 Dummy1 = 0x000100C6, 67 Dummy1 = 0x000100C6,
@@ -292,7 +296,7 @@ ResultVal<ArchiveHandle> OpenArchive(ArchiveIdCode id_code, FileSys::Path& archi
292 296
293ResultCode CloseArchive(ArchiveHandle handle) { 297ResultCode 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
327ResultCode DeleteFileFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { 331ResultCode 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
356ResultCode DeleteDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { 360ResultCode 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
367ResultCode CreateFileInArchive(ArchiveHandle archive_handle, const FileSys::Path& path, u64 file_size) { 371ResultCode 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
375ResultCode CreateDirectoryFromArchive(ArchiveHandle archive_handle, const FileSys::Path& path) { 379ResultCode 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
423ResultVal<u64> GetFreeBytesInArchive(ArchiveHandle archive_handle) { 427ResultVal<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