--- deliantra/server/socket/lowlevel.C 2007/06/12 10:29:52 1.47 +++ deliantra/server/socket/lowlevel.C 2007/06/24 04:09:29 1.48 @@ -513,28 +513,32 @@ send_packet (sl); } -void -client::send_drawinfo (const char *msg, int flags) -{ - send_packet_printf ("drawinfo %d %s", flags, msg); +// returns true when the message needs special (read: perl) treatment +static bool +msg_is_special (const char *msg) +{ + return msg [strcspn (msg, "<[&\n")]; } void client::send_msg (int color, const char *type, const char *msg) { - if (can_msg) + if (msg_is_special (msg)) + cfperl_send_msg (this, color, type, msg); + else if (can_msg) send_packet_printf ("msg %d %s %s", color, type, msg); else if (color < 0) return; // client cannot handle this - else if (strchr (msg, '<') || strchr (msg, '&')) - { - //TODO: should escape/modify to old syntax - send_packet_printf ("drawinfo %d %s", color, msg); - } else send_packet_printf ("drawinfo %d %s", color, msg); } +void +client::send_drawinfo (const char *msg, int flags) +{ + send_msg (flags, "log", msg); +} + /*********************************************************************** * * packet functions/utilities