diff --git a/libctru/include/3ds/os.h b/libctru/include/3ds/os.h index 23d698a..33691a2 100644 --- a/libctru/include/3ds/os.h +++ b/libctru/include/3ds/os.h @@ -75,7 +75,7 @@ void* osConvertOldLINEARMemToNew(const void* vaddr); * * This can be used to get some details about an error returned by a service call. */ -const char* osStrError(u32 error); +const char* osStrError(Result error); /** * @brief Gets the system's FIRM version. diff --git a/libctru/source/os.c b/libctru/source/os.c index 402ea99..d0ea972 100644 --- a/libctru/source/os.c +++ b/libctru/source/os.c @@ -119,30 +119,32 @@ double osTickCounterRead(const TickCounter* cnt) { } //--------------------------------------------------------------------------------- -const char* osStrError(u32 error) { +const char* osStrError(Result error) { //--------------------------------------------------------------------------------- - switch((error>>26) & 0x3F) { - case 0: + switch(R_SUMMARY(error)) { + case RS_SUCCESS: return "Success."; - case 1: + case RS_NOP: return "Nothing happened."; - case 2: + case RS_WOULDBLOCK: return "Would block."; - case 3: + case RS_OUTOFRESOURCE: return "Not enough resources."; - case 4: + case RS_NOTFOUND: return "Not found."; - case 5: + case RS_INVALIDSTATE: return "Invalid state."; - case 6: + case RS_NOTSUPPORTED: return "Unsupported."; - case 7: + case RS_INVALIDARG: return "Invalid argument."; - case 8: + case RS_WRONGARG: return "Wrong argument."; - case 9: - return "Interrupted."; - case 10: + case RS_CANCELED: + return "Cancelled."; + case RS_STATUSCHANGED: + return "Status changed."; + case RS_INTERNAL: return "Internal error."; default: return "Unknown.";