forked from fizx/libbow-osx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
error.c
75 lines (58 loc) · 2.05 KB
/
error.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* Error-printing and verbosifying functions
Copyright (C) 1997, 1998 Andrew McCallum
Written by: Andrew Kachites McCallum <[email protected]>
This file is part of the Bag-Of-Words Library, `libbow'.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License
as published by the Free Software Foundation, version 2.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA */
#include <stdarg.h>
#include <bow/libbow.h>
#include <stdio.h>
/* Examined by bow_verbosify() to determine whether to print the message.
Default is bow_progress. */
int bow_verbosity_level = bow_progress;
/* If this is 0, and the message passed to bow_verbosify() contains
backspaces, then the message will not be printed. It is useful to
turn this off when debugging inside an emacs window. The default
value is on. */
int bow_verbosity_use_backspace = 1;
/* Print the printf-style FORMAT string and ARGS on STDERR, only if
the BOW_VERBOSITY_LEVEL is equal or greater than the argument
VERBOSITY_LEVEL. */
int
bow_verbosify (int verbosity_level, const char *format, ...)
{
int ret;
va_list ap;
if ((bow_verbosity_level < verbosity_level)
|| (!bow_verbosity_use_backspace
&& strchr (format, '\b')))
return 0;
va_start (ap, format);
ret = vfprintf (stderr, format, ap);
va_end (ap);
fflush (stderr);
return ret;
}
volatile void
_bow_error (const char *format, ...)
{
va_list ap;
va_start (ap, format);
vfprintf (stderr, format, ap);
va_end (ap);
fputc ('\n', stderr);
fflush (stderr);
#if __linux__
abort ();
#else
exit (-1);
#endif
}