Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/uwin/err.c
1811 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#include "FEATURE/uwin"
23
24
#if !_UWIN
25
26
void _STUB_err(){}
27
28
#else
29
30
#pragma prototyped
31
32
/*
33
* bsd 4.4 compatibility
34
*
35
* NOTE: errorv(ERROR_NOID) => the first arg is the printf format
36
*/
37
38
#include <ast.h>
39
#include <error.h>
40
41
#include <windows.h>
42
43
#ifdef __EXPORT__
44
#define extern __EXPORT__
45
#endif
46
47
static void
48
errmsg(int level, int code, const char* fmt, va_list ap)
49
{
50
if (!error_info.id)
51
{
52
struct _astdll* dp = _ast_getdll();
53
char* s;
54
char* t;
55
56
if (s = dp->_ast__argv[0])
57
{
58
if (t = strrchr(s, '/'))
59
s = t + 1;
60
error_info.id = s;
61
}
62
}
63
errorv(fmt, level|ERROR_NOID, ap);
64
if ((level & ERROR_LEVEL) >= ERROR_ERROR)
65
exit(code);
66
}
67
68
extern void verr(int code, const char* fmt, va_list ap)
69
{
70
errmsg(ERROR_ERROR|ERROR_SYSTEM, code, fmt, ap);
71
}
72
73
extern void err(int code, const char* fmt, ...)
74
{
75
va_list ap;
76
77
va_start(ap, fmt);
78
errmsg(ERROR_ERROR|ERROR_SYSTEM, code, fmt, ap);
79
va_end(ap);
80
}
81
82
extern void verrx(int code, const char* fmt, va_list ap)
83
{
84
errmsg(ERROR_ERROR, code, fmt, ap);
85
}
86
87
extern void errx(int code, const char* fmt, ...)
88
{
89
va_list ap;
90
91
va_start(ap, fmt);
92
errmsg(ERROR_ERROR, code, fmt, ap);
93
va_end(ap);
94
}
95
96
extern void vwarn(const char* fmt, va_list ap)
97
{
98
errmsg(ERROR_WARNING|ERROR_SYSTEM, 0, fmt, ap);
99
}
100
101
extern void warn(const char* fmt, ...)
102
{
103
va_list ap;
104
105
va_start(ap, fmt);
106
errmsg(ERROR_WARNING|ERROR_SYSTEM, 0, fmt, ap);
107
va_end(ap);
108
}
109
110
extern void vwarnx(const char* fmt, va_list ap)
111
{
112
errmsg(ERROR_WARNING, 0, fmt, ap);
113
}
114
115
extern void warnx(const char* fmt, ...)
116
{
117
va_list ap;
118
119
va_start(ap, fmt);
120
errmsg(ERROR_WARNING, 0, fmt, ap);
121
va_end(ap);
122
}
123
124
#endif
125
126