yprintf.c
Go to the documentation of this file.
00001 // Copyright (c) 2010-2016 The YP-Spur Authors, except where otherwise indicated.
00002 //
00003 // Permission is hereby granted, free of charge, to any person obtaining a copy
00004 // of this software and associated documentation files (the "Software"), to
00005 // deal in the Software without restriction, including without limitation the
00006 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
00007 // sell copies of the Software, and to permit persons to whom the Software is
00008 // furnished to do so, subject to the following conditions:
00009 //
00010 // The above copyright notice and this permission notice shall be included in
00011 // all copies or substantial portions of the Software.
00012 //
00013 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00014 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00015 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00016 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00017 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00018 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00019 // SOFTWARE.
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 }


yp-spur
Author(s):
autogenerated on Fri May 10 2019 02:52:19