/* * 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 . */ #include #include #include #include #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)); }