mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
for file in $(find -type f -and -not -path '*/.svn/*' -and -not -name '*.so') ; do sed -e 's#http://www.inspircd.org/wiki#http://wiki.inspircd.org#' -e 's#http://wiki.inspircd.org/index.php/#http://wiki.inspircd.org/#' -i $file ; done git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11223 e03df62e-2008-0410-955e-edbf42e46eb7
110 lines
2.6 KiB
C
110 lines
2.6 KiB
C
/* +------------------------------------+
|
|
* | Inspire Internet Relay Chat Daemon |
|
|
* +------------------------------------+
|
|
*
|
|
* InspIRCd: (C) 2002-2009 InspIRCd Development Team
|
|
* See: http://wiki.inspircd.org/Credits
|
|
*
|
|
* This program is free but copyrighted software; see
|
|
* the file COPYING for details.
|
|
*
|
|
* ---------------------------------------------------
|
|
*/
|
|
|
|
#ifndef __COLOURS_H
|
|
#define __COLOURS_H
|
|
|
|
#define TRED FOREGROUND_RED | FOREGROUND_INTENSITY
|
|
#define TGREEN FOREGROUND_GREEN | FOREGROUND_INTENSITY
|
|
#define TYELLOW FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY
|
|
#define TNORMAL FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE
|
|
#define TWHITE TNORMAL | FOREGROUND_INTENSITY
|
|
#define TBLUE FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY
|
|
|
|
inline void sc(WORD color) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color); }
|
|
|
|
/* Handles colors in printf */
|
|
int printf_c(const char * format, ...)
|
|
{
|
|
// Better hope we're not multithreaded, otherwise we'll have chickens crossing the road other side to get the to :P
|
|
static char message[500];
|
|
static char temp[500];
|
|
int color1, color2;
|
|
|
|
/* parse arguments */
|
|
va_list ap;
|
|
va_start(ap, format);
|
|
vsnprintf(message, 500, format, ap);
|
|
va_end(ap);
|
|
|
|
/* search for unix-style escape sequences */
|
|
int t;
|
|
int c = 0;
|
|
const char * p = message;
|
|
while (*p != 0)
|
|
{
|
|
if (*p == '\033')
|
|
{
|
|
// Escape sequence -> copy into the temp buffer, and parse the color.
|
|
p++;
|
|
t = 0;
|
|
while ((*p) && (*p != 'm'))
|
|
{
|
|
temp[t++] = *p;
|
|
++p;
|
|
}
|
|
|
|
temp[t] = 0;
|
|
p++;
|
|
|
|
if (*temp == '[')
|
|
{
|
|
if (sscanf(temp, "[%u;%u", &color1, &color2) == 2)
|
|
{
|
|
switch(color2)
|
|
{
|
|
case 32: // Green
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY); // Yellow
|
|
break;
|
|
|
|
default: // Unknown
|
|
// White
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (*(temp+1))
|
|
{
|
|
case '0':
|
|
// Returning to normal colour.
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
|
|
break;
|
|
|
|
case '1':
|
|
// White
|
|
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TWHITE);
|
|
break;
|
|
|
|
default:
|
|
char message[50];
|
|
sprintf(message, "Unknown color code: %s", temp);
|
|
MessageBox(0, message, message, MB_OK);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
putchar(*p);
|
|
++c;
|
|
++p;
|
|
}
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif
|
|
|