/* * Copyright (c) 2016 Dmitry V. Levin * Copyright (c) 2016-2018 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 #include #include #include #include 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); }