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 <gsf@research.att.com> * 18* David Korn <dgk@research.att.com> * 19* Phong Vo <kpv@research.att.com> * 20* * 21***********************************************************************/ 22#include "FEATURE/uwin" 23 24#if !_UWIN 25 26void _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 47static void 48errmsg(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 68extern void verr(int code, const char* fmt, va_list ap) 69{ 70 errmsg(ERROR_ERROR|ERROR_SYSTEM, code, fmt, ap); 71} 72 73extern 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 82extern void verrx(int code, const char* fmt, va_list ap) 83{ 84 errmsg(ERROR_ERROR, code, fmt, ap); 85} 86 87extern 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 96extern void vwarn(const char* fmt, va_list ap) 97{ 98 errmsg(ERROR_WARNING|ERROR_SYSTEM, 0, fmt, ap); 99} 100 101extern 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 110extern void vwarnx(const char* fmt, va_list ap) 111{ 112 errmsg(ERROR_WARNING, 0, fmt, ap); 113} 114 115extern 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