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);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]