/* * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io> * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later */ #define perror_msg_and_fail perror_msg_and_fail #define error_msg_and_fail error_msg_and_fail #include "tests.h" #include <errno.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void perror_msg_and_fail(const char *fmt, ...) { int err_no = errno; va_list p; va_start(p, fmt); vfprintf(stderr, fmt, p); if (err_no) fprintf(stderr, ": %s\n", strerror(err_no)); else putc('\n', stderr); exit(1); } void error_msg_and_fail(const char *fmt, ...) { va_list p; va_start(p, fmt); vfprintf(stderr, fmt, p); putc('\n', stderr); exit(1); } void error_msg_and_skip(const char *fmt, ...) { va_list p; va_start(p, fmt); vfprintf(stderr, fmt, p); putc('\n', stderr); exit(77); } void perror_msg_and_skip(const char *fmt, ...) { int err_no = errno; va_list p; va_start(p, fmt); vfprintf(stderr, fmt, p); if (err_no) fprintf(stderr, ": %s\n", strerror(err_no)); else putc('\n', stderr); exit(77); }