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, "&lt;"); continue; }
+       ">"                             { add_entity(STD_ARGS, "&gt;"); continue; }
+       "&"                             { add_entity(STD_ARGS, "&amp;"); 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]

Reply via email to