diff --git a/gci_extract.c b/gci_extract.c index cfb7ba7..6625c10 100644 --- a/gci_extract.c +++ b/gci_extract.c @@ -146,7 +146,7 @@ int main(int argc, char *argv[]) { GCI_DECRYPTED_DLQUEST_HEADER bin_gci_header; result = get_quest_data(bin_gci_filename, &bin_data, &bin_data_size, &bin_gci_header); if (result) { - printf("Error code %d reading quest .bin data.\n", result); + printf("Error code %d reading quest .bin data: %s\n", result, get_error_message(result)); goto error; } @@ -154,7 +154,7 @@ int main(int argc, char *argv[]) { GCI_DECRYPTED_DLQUEST_HEADER dat_gci_header; result = get_quest_data(dat_gci_filename, &dat_data, &dat_data_size, &dat_gci_header); if (result) { - printf("Error code %d reading quest .dat data.\n", result); + printf("Error code %d reading quest .dat data: %s\n", result, get_error_message(result)); goto error; } diff --git a/utils.c b/utils.c index cf8e0f8..b49cd0a 100644 --- a/utils.c +++ b/utils.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -6,6 +7,17 @@ #include "utils.h" #include "retvals.h" +// from error codes defined in retvals.h +static const char *error_messages[] = { + "No error", // SUCCESS + "Invalid parameter(s)", // ERROR_INVALID_PARAMS + "File not found", // ERROR_FILE_NOT_FOUND + "Cannot create file", // ERROR_CREATING_FILE + "Bad data", // ERROR_BAD_DATA + "I/O error", // ERROR_IO + NULL +}; + int read_file(const char *filename, uint8_t** out_file_data, uint32_t *out_file_size) { if (!filename || !out_file_size || !out_file_data) return ERROR_INVALID_PARAMS; @@ -88,3 +100,16 @@ char* append_string(const char *a, const char *b) { strcat(result, b); return result; } + +const char* get_error_message(int retvals_error_code) { + retvals_error_code = abs(retvals_error_code); + + int max_error_index; + for (max_error_index = 0; error_messages[max_error_index]; ++max_error_index) {} + max_error_index = max_error_index; + + if (retvals_error_code >= max_error_index) + return "Unknown error"; + else + return error_messages[retvals_error_code]; +} diff --git a/utils.h b/utils.h index f55bc85..dd45a65 100644 --- a/utils.h +++ b/utils.h @@ -11,4 +11,6 @@ int get_filesize(const char *filename, size_t *out_size); const char* path_to_filename(const char *path); char* append_string(const char *a, const char *b); +const char* get_error_message(int retvals_error_code); + #endif