This is actually the functions that I use, can't remember where I got it from, but mine was originally the Wolfpaw server as well, though at this points it's much different.int web_colour(char type, char *string)
{
char code[50]; /* Either this is MSL, or all the things below are 50, i chose this, faster */
char *p = '\0';
switch (type)
{
default:
break;
case '&':
mudstrlcpy(code, "&", 50);
break;
case 'x':
mudstrlcpy(code, "</font><font color=#000000>", 50);
break;
case 'b':
mudstrlcpy(code, "</font><font color=#00007F>", 50);
break;
case 'c':
mudstrlcpy(code, "</font><font color=#007F7F>", 50);
break;
case 'g':
mudstrlcpy(code, "</font><font color=#007F00>", 50);
break;
case 'r':
mudstrlcpy(code, "</font><font color=#7F0000>", 50);
break;
case 'w':
mudstrlcpy(code, "</font><font color=#BFBFBF>", 50);
break;
case 'y':
mudstrlcpy(code, "</font><font color=#FFFF00>", 50);
break;
case 'Y':
mudstrlcpy(code, "</font><font color=#FFFF00>", 50);
break;
case 'B':
mudstrlcpy(code, "</font><font color=#0000FF>", 50);
break;
case 'C':
mudstrlcpy(code, "</font><font color=#00FFFF>", 50);
break;
case 'G':
mudstrlcpy(code, "</font><font color=#00FF00>", 50);
break;
case 'R':
mudstrlcpy(code, "</font><font color=#FF0000>", 50);
break;
case 'W':
mudstrlcpy(code, "</font><font color=#FFFFFF>", 50);
break;
case 'z':
mudstrlcpy(code, "</font><font color=#7F7F7F>", 50);
break;
case 'o':
mudstrlcpy(code, "</font><font color=#FFFF00>", 50);
break;
case 'O':
mudstrlcpy(code, "</font><font color=#7F7F00>", 50);
break;
case 'p':
mudstrlcpy(code, "</font><font color=#7F007F>", 50);
break;
case 'P':
mudstrlcpy(code, "</font><font color=#FF00FF>", 50);
break;
case '/':
mudstrlcpy(code, "<br>", 50);
break;
case '{':
snprintf(code, 50, "%c", '{');
break;
case '-':
snprintf(code, 50, "%c", '~');
break;
}
p = code;
while (*p != '\0')
{
*string = *p++;
*++string = '\0';
}
return (strlen(code));
}
void web_colourconv(char *buffer, const char *txt)
{
const char *point;
int skip = 0;
if (txt == NULL || buffer == NULL)
{
bug("Null txt or buffer", 0);
return;
}
for (point = txt; *point; point++)
{
if (*point == '&')
{
point++;
skip = web_colour(*point, buffer);
while (skip-- > 0)
++buffer;
continue;
}
*buffer = *point;
*++buffer = '\0';
}
*buffer = '\0';
return;
}
int send_buf(int fd, char *buf, int filter)
{
char string[MSL * 10];
if (filter == 1)
{
send(fd, "<CODE>", 6, 0);
buf = smash_color(buf);
buf = text2html(buf);
send(fd, "</CODE>", 7, 0);
}
if (filter == 2)
{
web_colourconv(string, buf);
return send(fd, string, strlen(string), 0);
}
return send(fd, buf, strlen(buf), 0);
}
|