/ libdarwin / err.c
err.c
 1  /*
 2   * Copyright (c) 2018 Apple Inc. All rights reserved.
 3   *
 4   * @APPLE_LICENSE_HEADER_START@
 5   *
 6   * This file contains Original Code and/or Modifications of Original Code
 7   * as defined in and that are subject to the Apple Public Source License
 8   * Version 2.0 (the 'License'). You may not use this file except in
 9   * compliance with the License. Please obtain a copy of the License at
10   * http://www.opensource.apple.com/apsl/ and read it before using this
11   * file.
12   *
13   * The Original Code and all software distributed under the License are
14   * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15   * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16   * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17   * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18   * Please see the License for the specific language governing rights and
19   * limitations under the License.
20   *
21   * @APPLE_LICENSE_HEADER_END@
22   */
23  #include "internal.h"
24  
25  #pragma mark Utilities
26  static void
27  _print_preamble(FILE *fp, const char *fmt, va_list ap)
28  {
29  	fprintf(fp, "%s: ", getprogname());
30  	vfprintf(fp, fmt, ap);
31  }
32  
33  #pragma mark API
34  void
35  err_np(errno_t code, const char *fmt, ...)
36  {
37  	va_list ap;
38  
39  	va_start(ap, fmt);
40  	verr_np(code, fmt, ap);
41  	va_end(ap);
42  }
43  
44  void
45  errc_np(int eval, errno_t code, const char *fmt, ...)
46  {
47  	va_list ap;
48  
49  	va_start(ap, fmt);
50  	verrc_np(eval, code, fmt, ap);
51  	va_end(ap);
52  }
53  
54  void
55  warn_np(errno_t code, const char *fmt, ...)
56  {
57  	va_list ap;
58  
59  	va_start(ap, fmt);
60  	vwarn_np(code, fmt, ap);
61  	va_end(ap);
62  }
63  
64  void
65  verr_np(errno_t code, const char *fmt, va_list ap)
66  {
67  	_print_preamble(stderr, fmt, ap);
68  	fprintf(stderr, ": %s\n", strerror_np(code));
69  	exit(sysexit_np(code));
70  }
71  
72  void
73  verrc_np(int eval, errno_t code, const char *fmt, va_list ap)
74  {
75  	_print_preamble(stderr, fmt, ap);
76  	fprintf(stderr, ": %s\n", strerror_np(code));
77  	exit(eval);
78  }
79  
80  void
81  vwarn_np(errno_t code, const char *fmt, va_list ap)
82  {
83  	_print_preamble(stderr, fmt, ap);
84  	fprintf(stderr, ": %s\n", strerror_np(code));
85  }