cvs: php4 /ext/ircg ircg.c

From: Date: Fri, 09 Mar 2001 18:13:29 +0000
Subject: cvs: php4 /ext/ircg ircg.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4462@lists.php.net to get a copy of this message
sas Fri Mar 9 10:13:29 2001 EDT Modified files: /php4/ext/ircg ircg.c Log: Add a format identifier for escaping %m, so that it can be safely used as a parameter for Javascript. Index: php4/ext/ircg/ircg.c diff -u php4/ext/ircg/ircg.c:1.49 php4/ext/ircg/ircg.c:1.50 --- php4/ext/ircg/ircg.c:1.49 Wed Mar 7 14:18:50 2001 +++ php4/ext/ircg/ircg.c Fri Mar 9 10:13:29 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg.c,v 1.49 2001/03/07 22:18:50 sas Exp $ */ +/* $Id: ircg.c,v 1.50 2001/03/09 18:13:29 sas Exp $ */ #include "php.h" #include "php_ini.h" @@ -190,6 +190,26 @@ free(conn); } +static void ircg_js_escape(smart_str *input, smart_str *output) +{ + char *p; + char *end; + + end = input->c + input->len; + + for(p = input->c; p < end; p++) { + switch (*p) { + case '"': + case '\\': + case '\'': + smart_str_appendc(output, '\\'); + /* fall-through */ + default: + smart_str_appendc(output, *p); + } + } +} + void ircg_mirc_color(const char *, smart_str *, size_t); static void format_msg(const char *fmt, smart_str *channel, smart_str *to, smart_str *from, smart_str *msg, smart_str *result) @@ -198,7 +218,9 @@ char c; char *q; smart_str encoded_msg = {0}; + smart_str js_encoded_msg = {0}; int encoded = 0; + int js_encoded = 0; unsigned long len; if (fmt[0] == '\0') { @@ -223,6 +245,17 @@ case 'f': smart_str_append_ex(result, from, 1); break; + case 'j': + if (!encoded) { + ircg_mirc_color(msg->c, &encoded_msg, msg->len); + encoded = 1; + } + if (!js_encoded) { + ircg_js_escape(&encoded_msg, &js_encoded_msg); + js_encoded = 1; + } + smart_str_append_ex(result, &js_encoded_msg, 1); + break; case 'm': if (!encoded) { ircg_mirc_color(msg->c, &encoded_msg, msg->len); @@ -252,6 +285,8 @@ if (encoded) smart_str_free(&encoded_msg); + if (js_encoded) + smart_str_free(&js_encoded_msg); smart_str_0(result); }

« previous php.cvs (#4462) next »