#include "conf.h"
#define CNUL ""
/* Plain Colors */
#define CNRM "\x1B[0;0m"
/* %00 */
#define CRED "\x1B[31m"
/* %01 */
#define CGRN "\x1B[32m"
/* %02 */
#define CYEL "\x1B[33m"
/* %03 */
#define CBLU "\x1B[34m"
/* %04 */
#define CMAG "\x1B[35m"
/* %05 */
#define CCYN "\x1B[36m"
/* %06 */
#define CWHT "\x1B[37m"
/* %07 */
#define CBLK "\x1B[30m"
/* %08 */
/* Bold Colors */
#define BRED "\x1B[1;31m"
/* %09 */
#define BGRN "\x1B[1;32m"
/* %10 */
#define BYEL "\x1B[1;33m"
/* %11 */
#define BBLU "\x1B[1;34m"
/* %12 */
#define BMAG "\x1B[1;35m"
/* %13 */
#define BCYN "\x1B[1;36m"
/* %14 */
#define BWHT "\x1B[1;37m"
/* %15 */
#define BBLK "\x1B[1;30m"
/* %16 */
/* Backgrounds */
#define BKRED "\x1B[41m"
/* %17 */
#define BKGRN "\x1B[42m"
/* %18 */
#define BKYEL "\x1B[43m"
/* %19 */
#define BKBLU "\x1B[44m"
/* %20 */
#define BKMAG "\x1B[45m"
/* %21 */
#define BKCYN "\x1B[46m"
/* %22 */
#define BKWHT "\x1B[47m"
/* %23 */
#define BKBLK "\x1B[40m"
/* %24 */
/* Underline, Flashing */
#define UNDER "\x1B[4m"
/* %25 */
#define FLASH "\x1B[5m"
/* %26 */
const char *COLORLIST[] = {CNRM, CRED, CGRN, CYEL, CBLU, CMAG, CCYN, CWHT, CBLK
,
BRED, BGRN, BYEL, BBLU, BMAG, BCYN, BWHT, BBLK,
BKRED,BKGRN,BKYEL,BKBLU,BKMAG,BKCYN,BKWHT,BKBLK,
UNDER,FLASH};
#define MAX_COLORS 26
int isnum(char i)
{
return( (i >= '0') && (i <= '9') );
}
void proc_color(char *inbuf, int color)
{
register int j=0,p=0;
int c,k,max;
char out_buf[32768];
if(inbuf[0] == '\0') return;
while(inbuf[j]!='\0')
{
if( (inbuf[j]=='&') &&
isnum(inbuf[j+1]) && isnum(inbuf[j+2]) )
{
c=(inbuf[j+1]-'0')*10 + inbuf[j+2]-'0';
if(c>MAX_COLORS) c = 0;
max=strlen(COLORLIST[c]);
j+=3;
if(color)
for(k=0;k<max;k++)
{ out_buf[p] = COLORLIST[c][k]; p++; }
}
else {out_buf[p] = inbuf[j]; j++;p++;}
}
out_buf[p] = '\0';
strcpy(inbuf, out_buf);
}