1/*
2 * Copyright (c) 1999 Apple Computer, 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#ifndef RLD
24#include <stdlib.h>
25#include <string.h>
26#include <stdio.h>
27#include <stdarg.h>
28#include <errno.h>
29#include <mach/mach.h>
30#include <mach/mach_error.h>
31
32#include "stuff/errors.h"
33
34__private_extern__ uint32_t errors = 0;	/* number of calls to error() */
35
36/*
37 * Just print the message in the standard format without setting an error.
38 */
39__private_extern__
40void
41warning(
42const char *format,
43...)
44{
45    va_list ap;
46
47	va_start(ap, format);
48        fprintf(stderr, "%s: ", progname);
49	vfprintf(stderr, format, ap);
50        fprintf(stderr, "\n");
51	va_end(ap);
52}
53
54/*
55 * Print the error message and return to the caller after setting the error
56 * indication.
57 */
58__private_extern__
59void
60error(
61const char *format,
62...)
63{
64    va_list ap;
65
66	va_start(ap, format);
67        fprintf(stderr, "%s: ", progname);
68	vfprintf(stderr, format, ap);
69        fprintf(stderr, "\n");
70	va_end(ap);
71	errors++;
72}
73
74/*
75 * Print the error message, the architecture if not NULL and return to the
76 * caller after setting the error indication.
77 */
78__private_extern__
79void
80error_with_arch(
81const char *arch_name,
82const char *format,
83...)
84{
85    va_list ap;
86
87	va_start(ap, format);
88        fprintf(stderr, "%s: ", progname);
89	if(arch_name != NULL)
90	    fprintf(stderr, "for architecture: %s ", arch_name);
91	vfprintf(stderr, format, ap);
92        fprintf(stderr, "\n");
93	va_end(ap);
94	errors++;
95}
96
97/*
98 * Print the error message along with the system error message and return to
99 * the caller after setting the error indication.
100 */
101__private_extern__
102void
103system_error(
104const char *format,
105...)
106{
107    va_list ap;
108
109	va_start(ap, format);
110        fprintf(stderr, "%s: ", progname);
111	vfprintf(stderr, format, ap);
112	fprintf(stderr, " (%s)\n", strerror(errno));
113	va_end(ap);
114	errors++;
115}
116
117/*
118 * Print the error message along with the mach error string.
119 */
120__private_extern__
121void
122my_mach_error(
123kern_return_t r,
124char *format,
125...)
126{
127    va_list ap;
128
129	va_start(ap, format);
130        fprintf(stderr, "%s: ", progname);
131	vfprintf(stderr, format, ap);
132	fprintf(stderr, " (%s)\n", mach_error_string(r));
133	va_end(ap);
134	errors++;
135}
136#endif /* !defined(RLD) */
137