/*Original code, written by Davion. */ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include "include.h" int symbol_lookup args ( ( const char symbol ) ); extern const struct colour_type colour_table[]; const struct colour_type colour_table[] = { { "White", "x", "\e[0m" }, { "DRed", "r", "\e[0;31m" }, { "DGreen", "g", "\e[0;32m" }, { "DYellow", "y", "\e[0;33m" }, { "DBlue", "b", "\e[0;34m" }, { "DPurple", "m", "\e[0;35m" }, { "DCyan", "c", "\e[0;36m" }, { "Dwhite", "w", "\e[0;37m" }, { "DGrey", "D", "\e[1;30m" }, { "BRed", "R", "\e[1;31m" }, { "BGreen", "G", "\e[1;32m" }, { "BYellow", "Y", "\e[1;33m" }, { "BBlue", "B", "\e[1;34m" }, { "BPink", "M", "\e[1;35m" }, { "BCyan", "C", "\e[1;36m" }, { "BWhite", "W", "\e[1;37m" }, { "Bracer", "{", "{" }, { "Beep", "*", "\a" }, { "NewLine", "\\", "\n\r", }, { NULL, NULL, NULL } }; char *colour_string( const char *txt ) { const char *string = txt; static char buf[MSL*4]; char symbol; char *coloured, *code; int i; bool found; buf[0] = '\0'; coloured = buf; for(;*string != '\0' ; string++ ) { found = false; if(*string == '{' ) { string++; symbol = *string; if( ( i = symbol_lookup(symbol) ) == -1 ) i = 0; code = colour_table[i].code; while(*code != '\0' ) { *coloured++ = *code++; *coloured = '\0'; } found = true; } if(!found) { *coloured++ = *string; *coloured = '\0'; } } *coloured = '\0'; return buf; } int symbol_lookup( const char symbol ) { int i; for ( i = 0; colour_table[i].name != NULL ; i++ ) { if( symbol == *colour_table[i].symbol ) return i; } return -1; }