Re: cvs: php4 /ext/ircg ircg.c

From: Date: Thu, 16 Nov 2000 02:56:55 +0000
Subject: Re: cvs: php4 /ext/ircg ircg.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-2633@lists.php.net to get a copy of this message
Sascha, would you mind enhancing that etc/ircg/README file a bit to include a quick summary of what this extension actually does? It took me a couple of minutes of reading the code before I figured it out. -Rasmus On Thu, 16 Nov 2000, Sascha Schumann wrote: > sas Wed Nov 15 17:24:25 2000 EDT > > Modified files: > /php4/ext/ircg ircg.c > Log: > Add mIRC-style color handling > > http://www.mirc.co.uk/help/color.txt > http://www.ircle.com/colorfaq.html > > > Index: php4/ext/ircg/ircg.c > diff -u php4/ext/ircg/ircg.c:1.4 php4/ext/ircg/ircg.c:1.5 > --- php4/ext/ircg/ircg.c:1.4 Wed Nov 15 15:38:46 2000 > +++ php4/ext/ircg/ircg.c Wed Nov 15 17:24:25 2000 > @@ -116,12 +116,102 @@ > free(conn); > } > > +static const char *color_list[] = { > + "white", > + "black", > + "blue", > + "green", > + "red", > + "brown", > + "purple", > + "orange", > + "yellow", > + "lightgreen", > + "teal", > + "lightcyan", > + "lightblue", > + "pink", > + "gray", > + "lightgrey" > +}; > + > +static void mirc_color(const char *input, smart_str *result) > +{ > + int mode = 0; > + char *p, c; > + int fg, bg; > + int font_open = 0; > + > + for (p = input; (c = *p); p++) { > + switch (mode) { > + case 0: > +evaluate_normal: > + if (c == '') { > + mode = 1; > + bg = fg = -1; > + } else { > + if (font_open) { > + smart_str_appends_ex(result, "</FONT>", 1); > + font_open = 0; > + } > + if (fg >= 0 && fg <= 15) { > + smart_str_appends_ex(result, "<FONT COLOR=\"", 1); > + smart_str_appends_ex(result, color_list[fg], 1); > + smart_str_appends_ex(result, "\">", 1); > + font_open = 1; > + } > + smart_str_appendc_ex(result, c, 1); > + } > + break; > + case 1: > + if (isdigit(c)) { > + if (fg == -1) fg = 0; > + fg = fg * 10 + c - '0'; > + if (fg > 10) > + mode = 2; > + } else { > + mode = 0; > + goto evaluate_normal; > + } > + break; > + case 2: > + if (c == ',') { > + mode = 3; > + } else { > + mode = 0; > + goto evaluate_normal; > + } > + break; > + case 3: > + if (isdigit(c)) { > + if (bg == -1) bg = 0; > + bg = bg * 10 + c - '0'; > + if (bg > 10) > + mode = 0; > + } else { > + mode = 0; > + goto evaluate_normal; > + } > + break; > + } > + } > + if (font_open) { > + smart_str_appends_ex(result, "</FONT>", 1); > + font_open = 0; > + } > +} > + > static void format_msg(const char *fmt, const char *channel, const char *to, const char *from, > const char *msg, smart_str *result) > { > const char *p; > char c; > int mode = 0; > + smart_str new_msg = {0}; > > + if (msg) { > + mirc_color(msg, &new_msg); > + } > + > for (p = fmt; (c = *p); p++) { > switch (mode) { > case 0: > @@ -148,7 +238,7 @@ > smart_str_appends_ex(result, from, 1); > break; > case 'm': > - smart_str_appends_ex(result, msg, 1); > + smart_str_append_ex(result, &new_msg, 1); > break; > default: > smart_str_appendc_ex(result, '%', 1); > @@ -159,6 +249,10 @@ > } > } > > + if (msg) { > + smart_str_free_ex(&new_msg, 1); > + } > + > smart_str_0(result); > } > > > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net > For additional commands, e-mail: php-cvs-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net >

« previous php.cvs (#2633) next »