(root)/
strace-6.5/
tests-mx32/
error_msg.c
       1  /*
       2   * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
       3   * Copyright (c) 2016-2021 The strace developers.
       4   * All rights reserved.
       5   *
       6   * SPDX-License-Identifier: GPL-2.0-or-later
       7   */
       8  
       9  #define perror_msg_and_fail perror_msg_and_fail
      10  #define error_msg_and_fail error_msg_and_fail
      11  
      12  #include "tests.h"
      13  #include <errno.h>
      14  #include <stdarg.h>
      15  #include <stdio.h>
      16  #include <stdlib.h>
      17  #include <string.h>
      18  
      19  void
      20  perror_msg_and_fail(const char *fmt, ...)
      21  {
      22  	int err_no = errno;
      23  	va_list p;
      24  
      25  	va_start(p, fmt);
      26  	vfprintf(stderr, fmt, p);
      27  	if (err_no)
      28  		fprintf(stderr, ": %s\n", strerror(err_no));
      29  	else
      30  		putc('\n', stderr);
      31  	exit(1);
      32  }
      33  
      34  void
      35  error_msg_and_fail(const char *fmt, ...)
      36  {
      37  	va_list p;
      38  
      39  	va_start(p, fmt);
      40  	vfprintf(stderr, fmt, p);
      41  	putc('\n', stderr);
      42  	exit(1);
      43  }
      44  
      45  void
      46  error_msg_and_skip(const char *fmt, ...)
      47  {
      48  	va_list p;
      49  
      50  	va_start(p, fmt);
      51  	vfprintf(stderr, fmt, p);
      52  	putc('\n', stderr);
      53  	exit(77);
      54  }
      55  
      56  void
      57  perror_msg_and_skip(const char *fmt, ...)
      58  {
      59  	int err_no = errno;
      60  	va_list p;
      61  
      62  	va_start(p, fmt);
      63  	vfprintf(stderr, fmt, p);
      64  	if (err_no)
      65  		fprintf(stderr, ": %s\n", strerror(err_no));
      66  	else
      67  		putc('\n', stderr);
      68  	exit(77);
      69  }