OSDN Git Service

Call exit instead of abort on unhandled errors
[android-x86/external-exfat.git] / libexfat / log.c
1 /*
2         log.c (02.09.09)
3         exFAT file system implementation library.
4
5         Copyright (C) 2010-2013  Andrew Nayenko
6
7         This program is free software: you can redistribute it and/or modify
8         it under the terms of the GNU General Public License as published by
9         the Free Software Foundation, either version 3 of the License, or
10         (at your option) any later version.
11
12         This program is distributed in the hope that it will be useful,
13         but WITHOUT ANY WARRANTY; without even the implied warranty of
14         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15         GNU General Public License for more details.
16
17         You should have received a copy of the GNU General Public License
18         along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #include "exfat.h"
22 #include <stdarg.h>
23 #include <syslog.h>
24 #include <unistd.h>
25
26 int exfat_errors;
27
28 /*
29  * This message means an internal bug in exFAT implementation.
30  */
31 void exfat_bug(const char* format, ...)
32 {
33         va_list ap, aq;
34
35         va_start(ap, format);
36         va_copy(aq, ap);
37
38         fflush(stdout);
39         fputs("BUG: ", stderr);
40         vfprintf(stderr, format, ap);
41         va_end(ap);
42         fputs(".\n", stderr);
43
44         if (!isatty(STDERR_FILENO))
45                 vsyslog(LOG_CRIT, format, aq);
46         va_end(aq);
47
48 #if defined(__ANDROID__)
49     exit(-1);
50 #else
51         abort();
52 #endif
53 }
54
55 /*
56  * This message means an error in exFAT file system.
57  */
58 void exfat_error(const char* format, ...)
59 {
60         va_list ap, aq;
61
62         exfat_errors++;
63         va_start(ap, format);
64         va_copy(aq, ap);
65
66         fflush(stdout);
67         fputs("ERROR: ", stderr);
68         vfprintf(stderr, format, ap);
69         va_end(ap);
70         fputs(".\n", stderr);
71
72         if (!isatty(STDERR_FILENO))
73                 vsyslog(LOG_ERR, format, aq);
74         va_end(aq);
75 }
76
77 /*
78  * This message means that there is something unexpected in exFAT file system
79  * that can be a potential problem.
80  */
81 void exfat_warn(const char* format, ...)
82 {
83         va_list ap, aq;
84
85         va_start(ap, format);
86         va_copy(aq, ap);
87
88         fflush(stdout);
89         fputs("WARN: ", stderr);
90         vfprintf(stderr, format, ap);
91         va_end(ap);
92         fputs(".\n", stderr);
93
94         if (!isatty(STDERR_FILENO))
95                 vsyslog(LOG_WARNING, format, aq);
96         va_end(aq);
97 }
98
99 /*
100  * Just debug message. Disabled by default.
101  */
102 void exfat_debug(const char* format, ...)
103 {
104         va_list ap;
105
106         fflush(stdout);
107         fputs("DEBUG: ", stderr);
108         va_start(ap, format);
109         vfprintf(stderr, format, ap);
110         va_end(ap);
111         fputs(".\n", stderr);
112 }