Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libexpr/exerror.c
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1989-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
* *
19
***********************************************************************/
20
#pragma prototyped
21
/*
22
* Glenn Fowler
23
* AT&T Research
24
*
25
* expression library
26
*/
27
28
#include <exlib.h>
29
30
/*
31
* library error handler
32
*/
33
34
void
35
exerror(const char* format, ...)
36
{
37
Sfio_t* sp;
38
39
if (expr.program->disc->errorf && !expr.program->errors && (sp = sfstropen()))
40
{
41
va_list ap;
42
char* s;
43
char buf[64];
44
45
expr.program->errors = 1;
46
excontext(expr.program, buf, sizeof(buf));
47
sfputr(sp, buf, -1);
48
va_start(ap, format);
49
sfvprintf(sp, format, ap);
50
va_end(ap);
51
if (!(s = sfstruse(sp)))
52
s = "out of space";
53
(*expr.program->disc->errorf)(expr.program, expr.program->disc, (expr.program->disc->flags & EX_FATAL) ? 3 : 2, "%s", s);
54
sfclose(sp);
55
}
56
else if (expr.program->disc->flags & EX_FATAL)
57
exit(1);
58
}
59
60