diff options
author | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2023-07-06 12:29:35 (EDT) |
---|---|---|
committer | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2023-07-06 12:38:09 (EDT) |
commit | 351fc50f385f6b6cac0571355b910377bd077781 (patch) | |
tree | b309303c9be9bd6c691f762b3f01d782665dac9a /common | |
parent | 2615b187c5e446bcba965f21def342e313656201 (diff) |
mknod: Factor out error functions into common code
Diffstat (limited to 'common')
-rw-r--r-- | common/error.c | 57 | ||||
-rw-r--r-- | common/error.h | 32 |
2 files changed, 89 insertions, 0 deletions
diff --git a/common/error.c b/common/error.c new file mode 100644 index 0000000..7b46826 --- /dev/null +++ b/common/error.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2023 Patrick McDermott + * + * This file is part of opkg-opk. + * + * opkg-opk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * opkg-opk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with opkg-opk. If not, see <https://www.gnu.org/licenses/>. + */ + +#include <errno.h> +#include <stdarg.h> +#include <stdio.h> +#include <string.h> + +#include "error.h" + +static const char *_opkg_opk_program_name; + +void +opkg_opk_set_program_name(const char *program_name) +{ + _opkg_opk_program_name = program_name; +} + +void __attribute__((format(__printf__, 1, 2))) +opkg_opk_error(const char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, "%s: ", _opkg_opk_program_name); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); +} + +void __attribute__((format(__printf__, 1, 2))) +opkg_opk_errno(const char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, "%s: ", _opkg_opk_program_name); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, ": %s\n", strerror(errno)); +} diff --git a/common/error.h b/common/error.h new file mode 100644 index 0000000..3654696 --- /dev/null +++ b/common/error.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2023 Patrick McDermott + * + * This file is part of opkg-opk. + * + * opkg-opk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * opkg-opk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with opkg-opk. If not, see <https://www.gnu.org/licenses/>. + */ + +#ifndef OPKG_OPK_ERROR_H_ +#define OPKG_OPK_ERROR_H_ + +void +opkg_opk_set_program_name(const char *program_name); + +void __attribute__((format(__printf__, 1, 2))) +opkg_opk_error(const char *fmt, ...); + +void __attribute__((format(__printf__, 1, 2))) +opkg_opk_errno(const char *fmt, ...); + +#endif /* OPKG_OPK_ERROR_H_ */ |