From 32a5388c10b5c71514c05dd4623c45a9bfe9c741 Mon Sep 17 00:00:00 2001 From: Adrian Warecki Date: Tue, 7 Mar 2023 12:18:47 +0100 Subject: [PATCH] file_utils: Add file_error function Added a generic function that displays a file operation error message. Signed-off-by: Adrian Warecki --- src/file_utils.c | 30 ++++++++++++++++++------------ src/include/rimage/file_utils.h | 8 ++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/file_utils.c b/src/file_utils.c index 6511dd90c..c8d406d67 100644 --- a/src/file_utils.c +++ b/src/file_utils.c @@ -8,9 +8,21 @@ #include #include #include +#include #include +int file_error(const char *msg, const char *filename) +{ + int code = errno; + char sys_msg[256]; + + strerror_r(code, sys_msg, sizeof(sys_msg)); + + fprintf(stderr, "%s:\terror: %s. %s (errno = %d)\n", filename, msg, sys_msg, code); + return -code; +} + int create_file_name(char *new_name, const size_t name_size, const char *template_name, const char *new_ext) { @@ -37,22 +49,16 @@ int get_file_size(FILE *f, const char* filename, size_t *size) /* get file size */ ret = fseek(f, 0, SEEK_END); - if (ret < 0) { - fprintf(stderr, "error: unable to seek eof %s %d\n", filename, errno); - return -errno; - } + if (ret) + return file_error("unable to seek eof", filename); *size = ftell(f); - if (*size < 0) { - fprintf(stderr, "error: unable to get file size for %s %d\n", filename, errno); - return -errno; - } + if (*size < 0) + return file_error("unable to get file size", filename); ret = fseek(f, 0, SEEK_SET); - if (ret < 0) { - fprintf(stderr, "error: unable to seek set %s %d\n", filename, errno); - return -errno; - } + if (ret) + return file_error("unable to seek set", filename); return 0; } diff --git a/src/include/rimage/file_utils.h b/src/include/rimage/file_utils.h index 2c7ef6528..34ecc89f5 100644 --- a/src/include/rimage/file_utils.h +++ b/src/include/rimage/file_utils.h @@ -8,6 +8,14 @@ #include +/** + * Print file operation error message + * @param [in]msg error message + * @param [in]filename File name used to display the error message + * @param error code + */ +int file_error(const char *msg, const char *filename); + /** * Create new file name using output file name as template. * @param [out] new_name char[] destination of new file name