sas Fri Feb 16 14:53:18 2001 EDT
Modified files:
/php4/ext/ircg ircg.c ircg_scanner.c ircg_scanner.re
Log:
Move the separate entity encoding into the scanner. Otherwise,
we cannot properly differentiate between (apparent) HTML which was
generated by the IRC user vs. the scanner.
Index: php4/ext/ircg/ircg.c
diff -u php4/ext/ircg/ircg.c:1.23 php4/ext/ircg/ircg.c:1.24
--- php4/ext/ircg/ircg.c:1.23 Fri Feb 16 11:01:22 2001
+++ php4/ext/ircg/ircg.c Fri Feb 16 14:53:18 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ircg.c,v 1.23 2001/02/16 19:01:22 sas Exp $ */
+/* $Id: ircg.c,v 1.24 2001/02/16 22:53:18 sas Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -165,7 +165,6 @@
const char *p;
char c;
int mode = 0;
- static smart_str new_msg;
smart_str encoded_msg = {0};
result->len = 0;
@@ -174,10 +173,7 @@
}
if (msg) {
- new_msg.len = 0;
- ircg_mirc_color(msg, &new_msg);
- encoded_msg.c = php_escape_html_entities(new_msg.c, new_msg.len,
- &encoded_msg.len, 1, 1);
+ ircg_mirc_color(msg, &encoded_msg);
}
for (p = fmt; (c = *p); p++) {
Index: php4/ext/ircg/ircg_scanner.c
diff -u php4/ext/ircg/ircg_scanner.c:1.1 php4/ext/ircg/ircg_scanner.c:1.2
--- php4/ext/ircg/ircg_scanner.c:1.1 Fri Feb 16 11:01:22 2001
+++ php4/ext/ircg/ircg_scanner.c Fri Feb 16 14:53:18 2001
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.5 on Fri Feb 16 19:55:49 2001 */
+/* Generated by re2c 0.5 on Fri Feb 16 23:53:05 2001 */
#line 1 "/home/sas/src/php4/ext/ircg/ircg_scanner.re"
/*
+----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ircg_scanner.c,v 1.1 2001/02/16 19:01:22 sas Exp $ */
+/* $Id: ircg_scanner.c,v 1.2 2001/02/16 22:53:18 sas Exp $ */
#include <ext/standard/php_smart_str.h>
#include <stdio.h>
@@ -140,6 +140,11 @@
smart_str_appendl(ctx->result, start, YYCURSOR - start);
}
+static void add_entity(STD_PARA, const char *entity)
+{
+ smart_str_appends(ctx->result, entity);
+}
+
void ircg_mirc_color(const char *msg, smart_str *result) {
int mode = STATE_PLAIN;
const char *end, *xp, *q, *start;
@@ -157,6 +162,7 @@
while (1) {
start = YYCURSOR;
+
switch (STATE) {
case STATE_PLAIN:
@@ -202,57 +208,74 @@
yy0:
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
- if(yych <= '@'){
- if(yych <= '\000') goto yy7;
- if(yych == '\003') goto yy4;
- goto yy6;
+ if(yych <= '<'){
+ if(yych <= '\003'){
+ if(yych <= '\000') goto yy10;
+ if(yych <= '\002') goto yy6;
+ goto yy4;
+ } else {
+ if(yych == '&') goto yy7;
+ if(yych <= ';') goto yy6;
+ goto yy8;
+ }
} else {
- if(yych <= 'Z') goto yy2;
- if(yych <= '`') goto yy6;
- if(yych >= '{') goto yy6;
+ if(yych <= '@'){
+ if(yych == '>') goto yy9;
+ goto yy6;
+ } else {
+ if(yych <= 'Z') goto yy2;
+ if(yych <= '`') goto yy6;
+ if(yych >= '{') goto yy6;
+ }
}
yy2: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= '/') goto yy3;
- if(yych <= ':') goto yy10;
+ if(yych <= ':') goto yy13;
} else {
- if(yych <= 'Z') goto yy10;
+ if(yych <= 'Z') goto yy13;
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy10;
+ if(yych <= 'z') goto yy13;
}
yy3:
-#line 172
+#line 178
{ passthru(STD_ARGS); continue; }
yy4: yych = *++YYCURSOR;
yy5:
-#line 171
+#line 177
{ mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; }
yy6: yych = *++YYCURSOR;
goto yy3;
yy7: yych = *++YYCURSOR;
-yy8:
-#line 173
+ goto yy3;
+yy8: yych = *++YYCURSOR;
+ goto yy3;
+yy9: yych = *++YYCURSOR;
+ goto yy3;
+yy10: yych = *++YYCURSOR;
+yy11:
+#line 182
{ goto stop; }
-yy9: ++YYCURSOR;
+yy12: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy10: if(yybm[0+yych] & 128) goto yy9;
- if(yych == ':') goto yy12;
-yy11: YYCURSOR = YYMARKER;
+yy13: if(yybm[0+yych] & 128) goto yy12;
+ if(yych == ':') goto yy15;
+yy14: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy3;
}
-yy12: yych = *++YYCURSOR;
- if(yych != '/') goto yy11;
-yy13: yych = *++YYCURSOR;
- if(yych != '/') goto yy11;
-yy14: yych = *++YYCURSOR;
-yy15:
-#line 170
+yy15: yych = *++YYCURSOR;
+ if(yych != '/') goto yy14;
+yy16: yych = *++YYCURSOR;
+ if(yych != '/') goto yy14;
+yy17: yych = *++YYCURSOR;
+yy18:
+#line 176
{ handle_scheme(STD_ARGS); STATE = STATE_URL; continue; }
}
-#line 174
+#line 183
break;
@@ -297,43 +320,43 @@
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
- goto yy16;
-yy17: ++YYCURSOR;
-yy16:
+ goto yy19;
+yy20: ++YYCURSOR;
+yy19:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if(yych <= '>'){
if(yych <= '"'){
- if(yych != '!') goto yy20;
+ if(yych != '!') goto yy23;
} else {
- if(yych == '<') goto yy20;
- if(yych >= '>') goto yy20;
+ if(yych == '<') goto yy23;
+ if(yych >= '>') goto yy23;
}
} else {
if(yych <= '`'){
- if(yych <= 'Z') goto yy18;
- if(yych != '_') goto yy20;
+ if(yych <= 'Z') goto yy21;
+ if(yych != '_') goto yy23;
} else {
- if(yych <= 'z') goto yy18;
- if(yych != '~') goto yy20;
+ if(yych <= 'z') goto yy21;
+ if(yych != '~') goto yy23;
}
}
-yy18: yych = *++YYCURSOR;
- goto yy23;
-yy19:
-#line 182
+yy21: yych = *++YYCURSOR;
+ goto yy26;
+yy22:
+#line 191
{ handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy20: yych = *++YYCURSOR;
-yy21:
-#line 183
+yy23: yych = *++YYCURSOR;
+yy24:
+#line 192
{ passthru(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy22: ++YYCURSOR;
+yy25: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
-yy23: if(yybm[0+yych] & 128) goto yy22;
- goto yy19;
+yy26: if(yybm[0+yych] & 128) goto yy25;
+ goto yy22;
}
-#line 184
+#line 193
break;
@@ -343,27 +366,27 @@
{
YYCTYPE yych;
unsigned int yyaccept;
- goto yy24;
-yy25: ++YYCURSOR;
-yy24:
+ goto yy27;
+yy28: ++YYCURSOR;
+yy27:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '/') goto yy28;
- if(yych >= ':') goto yy28;
-yy26: yych = *++YYCURSOR;
- if(yych <= '/') goto yy27;
- if(yych <= '9') goto yy30;
-yy27:
-#line 191
+ if(yych <= '/') goto yy31;
+ if(yych >= ':') goto yy31;
+yy29: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy30;
+ if(yych <= '9') goto yy33;
+yy30:
+#line 200
{ handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; }
-yy28: yych = *++YYCURSOR;
-yy29:
-#line 192
+yy31: yych = *++YYCURSOR;
+yy32:
+#line 201
{ finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN;
continue; }
-yy30: yych = *++YYCURSOR;
- goto yy27;
+yy33: yych = *++YYCURSOR;
+ goto yy30;
}
-#line 193
+#line 202
break;
@@ -373,22 +396,22 @@
{
YYCTYPE yych;
unsigned int yyaccept;
- goto yy31;
-yy32: ++YYCURSOR;
-yy31:
+ goto yy34;
+yy35: ++YYCURSOR;
+yy34:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yych != ',') goto yy35;
-yy33: yych = *++YYCURSOR;
-yy34:
-#line 200
+ if(yych != ',') goto yy38;
+yy36: yych = *++YYCURSOR;
+yy37:
+#line 209
{ STATE = STATE_COLOR_BG; continue; }
-yy35: yych = *++YYCURSOR;
-yy36:
-#line 201
+yy38: yych = *++YYCURSOR;
+yy39:
+#line 210
{ YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; }
}
-#line 202
+#line 211
break;
@@ -398,27 +421,27 @@
{
YYCTYPE yych;
unsigned int yyaccept;
- goto yy37;
-yy38: ++YYCURSOR;
-yy37:
+ goto yy40;
+yy41: ++YYCURSOR;
+yy40:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '/') goto yy41;
- if(yych >= ':') goto yy41;
-yy39: yych = *++YYCURSOR;
- if(yych <= '/') goto yy40;
- if(yych <= '9') goto yy43;
-yy40:
-#line 209
+ if(yych <= '/') goto yy44;
+ if(yych >= ':') goto yy44;
+yy42: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy43;
+ if(yych <= '9') goto yy46;
+yy43:
+#line 218
{ handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE =
STATE_PLAIN; continue; }
-yy41: yych = *++YYCURSOR;
-yy42:
-#line 210
+yy44: yych = *++YYCURSOR;
+yy45:
+#line 219
{ commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy43: yych = *++YYCURSOR;
- goto yy40;
+yy46: yych = *++YYCURSOR;
+ goto yy43;
}
-#line 211
+#line 220
break;
}
Index: php4/ext/ircg/ircg_scanner.re
diff -u php4/ext/ircg/ircg_scanner.re:1.1 php4/ext/ircg/ircg_scanner.re:1.2
--- php4/ext/ircg/ircg_scanner.re:1.1 Fri Feb 16 11:01:22 2001
+++ php4/ext/ircg/ircg_scanner.re Fri Feb 16 14:53:18 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ircg_scanner.re,v 1.1 2001/02/16 19:01:22 sas Exp $ */
+/* $Id: ircg_scanner.re,v 1.2 2001/02/16 22:53:18 sas Exp $ */
#include <ext/standard/php_smart_str.h>
#include <stdio.h>
@@ -146,6 +146,11 @@
smart_str_appendl(ctx->result, start, YYCURSOR - start);
}
+static void add_entity(STD_PARA, const char *entity)
+{
+ smart_str_appends(ctx->result, entity);
+}
+
void ircg_mirc_color(const char *msg, smart_str *result) {
int mode = STATE_PLAIN;
const char *end, *xp, *q, *start;
@@ -163,6 +168,7 @@
while (1) {
start = YYCURSOR;
+
switch (STATE) {
case STATE_PLAIN:
@@ -170,6 +176,9 @@
scheme "://" { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; }
coloresc { mctx.fg_code = mctx.bg_code = -1; STATE =
STATE_COLOR_FG; continue; }
anynoneof { passthru(STD_ARGS); continue; }
+ "<" { add_entity(STD_ARGS, "<"); continue; }
+ ">" { add_entity(STD_ARGS, ">"); continue; }
+ "&" { add_entity(STD_ARGS, "&"); continue; }
eof { goto stop; }
*/
@@ -179,7 +188,7 @@
/*!re2c
- [a-zA-Z0-9\./\-~_?=@&+#:;!*'()%,$]+ { handle_url(STD_ARGS); STATE
= STATE_PLAIN; continue; }
+ [-a-zA-Z0-9~_?=.@&+/#:;!*'()%,$]+ { handle_url(STD_ARGS); STATE
+= STATE_PLAIN; continue; }
any { passthru(STD_ARGS); STATE = STATE_PLAIN;
continue; }
*/
--
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]