Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdarg.h>
00022 #include <stdio.h>
00023 #include <strings.h>
00024 #include <unistd.h>
00025
00026 #ifdef HAVE_CONFIG_H
00027 #include <config.h>
00028 #endif // HAVE_CONFIG_H
00029
00030 #include <param.h>
00031
00032 void yprintf(ParamOutputLv level, const char *format, ...)
00033 {
00034 va_list ap;
00035
00036 if (output_lv() < level)
00037 return;
00038
00039 #if !defined(__MINGW32__)
00040 if (isatty(2))
00041 {
00042 switch (level)
00043 {
00044 case OUTPUT_LV_ERROR:
00045 fputs("\x1B[0;31m", stderr);
00046 break;
00047 case OUTPUT_LV_WARNING:
00048 fputs("\x1B[0;33m", stderr);
00049 break;
00050 default:
00051 break;
00052 }
00053 }
00054 #endif // !defined(__MINGW32__)
00055
00056 va_start(ap, format);
00057 vfprintf(stderr, format, ap);
00058 va_end(ap);
00059
00060 #if !defined(__MINGW32__)
00061 if (isatty(2))
00062 fputs("\x1B[0m", stderr);
00063 #endif // !defined(__MINGW32__)
00064
00065 fflush(stderr);
00066 }
00067
00068 void ansi_clear_line(ParamOutputLv level)
00069 {
00070 if (output_lv() < level)
00071 return;
00072
00073 #if !defined(__MINGW32__)
00074 if (isatty(2))
00075 fprintf(stderr, "\x1B[2K\r");
00076 else
00077 fputs("\n", stderr);
00078 #else
00079 fputs("\n", stderr);
00080 #endif // !defined(__MINGW32__)
00081 }