diff options
Diffstat (limited to 'exfat/libexfat/log.c')
-rw-r--r-- | exfat/libexfat/log.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/exfat/libexfat/log.c b/exfat/libexfat/log.c new file mode 100644 index 000000000..8b589b406 --- /dev/null +++ b/exfat/libexfat/log.c @@ -0,0 +1,108 @@ +/* + log.c (02.09.09) + exFAT file system implementation library. + + Copyright (C) 2010-2012 Andrew Nayenko + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "exfat.h" +#include <stdarg.h> +#include <syslog.h> +#include <unistd.h> + +int exfat_errors; + +/* + * This message means an internal bug in exFAT implementation. + */ +void exfat_bug(const char* format, ...) +{ + va_list ap, aq; + + va_start(ap, format); + va_copy(aq, ap); + + fflush(stdout); + fputs("BUG: ", stderr); + vfprintf(stderr, format, ap); + va_end(ap); + fputs(".\n", stderr); + + if (!isatty(STDERR_FILENO)) + vsyslog(LOG_CRIT, format, aq); + va_end(aq); + + abort(); +} + +/* + * This message means an error in exFAT file system. + */ +void exfat_error(const char* format, ...) +{ + va_list ap, aq; + + exfat_errors++; + va_start(ap, format); + va_copy(aq, ap); + + fflush(stdout); + fputs("ERROR: ", stderr); + vfprintf(stderr, format, ap); + va_end(ap); + fputs(".\n", stderr); + + if (!isatty(STDERR_FILENO)) + vsyslog(LOG_ERR, format, aq); + va_end(aq); +} + +/* + * This message means that there is something unexpected in exFAT file system + * that can be a potential problem. + */ +void exfat_warn(const char* format, ...) +{ + va_list ap, aq; + + va_start(ap, format); + va_copy(aq, ap); + + fflush(stdout); + fputs("WARN: ", stderr); + vfprintf(stderr, format, ap); + va_end(ap); + fputs(".\n", stderr); + + if (!isatty(STDERR_FILENO)) + vsyslog(LOG_WARNING, format, aq); + va_end(aq); +} + +/* + * Just debug message. Disabled by default. + */ +void exfat_debug(const char* format, ...) +{ + va_list ap; + + fflush(stdout); + fputs("DEBUG: ", stderr); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + fputs(".\n", stderr); +} |