sas             Tue Jul  8 00:59:48 2003 EDT

  Modified files:              
    /php-src/ext/ircg   ircg.c php_ircg.h php_ircg_private.h 
                        php_ircg_tokenizer.c php_ircg_tokenizer.h 
  Log:
      * Added ircg_lusers(int connection)
      * Added ircg_names(int connection, string channel [, string target])
      * Added ircg_oper(int connection, string name, string password)
      * Added ircg_list(int connection, string channel)
      * Added support for RPL_LUSER*, RPL_YOUREOPER, various ERR_*
      * Added HTML-encoding of all data sources (%c etc.)
      * Added highest used fd/maximum open fds info to phpinfo()
  
  
Index: php-src/ext/ircg/ircg.c
diff -u php-src/ext/ircg/ircg.c:1.192 php-src/ext/ircg/ircg.c:1.193
--- php-src/ext/ircg/ircg.c:1.192       Mon Jul  7 11:45:43 2003
+++ php-src/ext/ircg/ircg.c     Tue Jul  8 00:59:47 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: ircg.c,v 1.192 2003/07/07 15:45:43 sas Exp $ */
+/* $Id: ircg.c,v 1.193 2003/07/08 04:59:47 sas Exp $ */
 
 /* {{{ includes */
 
@@ -84,6 +84,8 @@
 /* initialized in the IRCG control process, so that we can avoid locking */
 struct cache_entry *php_ircg_cache_entries;
 
+#define SEEN_FD(fd) do { if ((fd) > php_ircg->highest_fd) php_ircg->highest_fd = 
(fd); } while (0)
+
 /* }}} */
 
 /* {{{ ircg_functions[] */
@@ -100,25 +102,15 @@
        PHP_FE(ircg_msg, NULL)
        PHP_FE(ircg_notice, NULL)
        PHP_FE(ircg_nick, NULL)
-#if IRCG_API_VERSION - 0 >= 20010226
        PHP_FE(ircg_topic, NULL)
-#endif
-#if IRCG_API_VERSION - 0 >= 20010227
        PHP_FE(ircg_channel_mode, NULL)
-#endif 
        PHP_FE(ircg_html_encode, NULL)
-#if IRCG_API_VERSION - 0 >= 20010227
        PHP_FE(ircg_whois, NULL)
-#endif
-#if IRCG_API_VERSION - 0 >= 20010226
        PHP_FE(ircg_kick, NULL)
-#endif
        PHP_FE(ircg_nickname_escape, NULL)
        PHP_FE(ircg_nickname_unescape, NULL)
-#if IRCG_API_VERSION - 0 >= 20010402
        PHP_FE(ircg_ignore_add, NULL)
        PHP_FE(ircg_ignore_del, NULL)
-#endif
        PHP_FE(ircg_disconnect, NULL)
        PHP_FE(ircg_fetch_error_msg, NULL)
        PHP_FE(ircg_is_conn_alive, NULL)
@@ -126,12 +118,12 @@
        PHP_FE(ircg_register_format_messages, NULL)
        PHP_FE(ircg_get_username, NULL)
        PHP_FE(ircg_eval_ecmascript_params, NULL)
-#if IRCG_API_VERSION >= 20021115
-       PHP_FE(ircg_who, NULL)
-#endif
-#if IRCG_API_VERSION >= 20021117
+       PHP_FE(ircg_names, NULL)
        PHP_FE(ircg_invite, NULL)
-#endif
+       PHP_FE(ircg_lusers, NULL)
+       PHP_FE(ircg_oper, NULL)
+       PHP_FE(ircg_who, NULL)
+       PHP_FE(ircg_list, NULL)
        {NULL, NULL, NULL}      /* Must be the last line in ircg_functions[] */
 };
 /* }}} */
@@ -183,46 +175,46 @@
 /* {{{ Default format messages */
 
 static char *fmt_msgs_default[] = {
-       "[%c] %f: %m<br />",
-       "private from %f: %m<br />",
-       "%f private to %t: %m<br />",
-       "%f leaves %c<br />",
-       "%f joins %c<br />",
-       "%t was kicked by %f from %c (%m)<br />",
-       "%f changes topic on %c to %m<br />",
+       "[EMAIL PROTECTED]: %m<br />",
+       "%f: %m<br />",
+       "To %t: %m<br />",
+       "%f leaves %6c<br />",
+       "%f joins %6c<br />",
+       "%t was kicked by %f from %6c (%m)<br />",
+       "%f changes topic on %6c to %m<br />",
        "Error: %m<br />",
        "Fatal Error: %m<br />",
        "",
        "",
        "%f changes nick to %t<br />",
        "%f quits (%m)<br />",
-       "Users in channel %c:",
+       "Welcome to channel %6c:",
        " %f",
-       " in the channel %c<br />",
+       " are in the channel %6c<br />",
        "%f: user(%t) host(%c) real name(%m)<br />",
        "%f: server(%c) server info(%m)<br />",
        "%f has been idle for %m seconds<br />",
-       "%f is on channel %c<br />",
+       "%f is on channel %6c<br />",
        "End of whois for %f<br />",
-       "%f sets voice flag of %t to %m on %c<br />",
-       "%f sets channel operator flag of %t to %m on %c<br />",
-       "banned from %c: %m<br />",
-       "end of ban list for %c<br />",
+       "%f sets voice flag of %t to %m on %6c<br />",
+       "%f sets channel operator flag of %t to %m on %6c<br />",
+       "banned from %6c: %m<br />",
+       "end of ban list for %6c<br />",
        "You have been disconnected<br />",
-       "Channel %c has %t users and the topic is '%m'<br />",
+       "Channel %6c has %t users and the topic is '%m'<br />",
        "End of LIST<br />",
        "Nickname %t has ident %f, realname '%m', hostname %c, ",
        "is on server %t, has flag %f, hopcount %m, and channel %c.<br />",
-       "end of who<br />",
-       "%f is inviting %t to %c<br />",
-       "[notice %c] %f: %m<br />",
+       "End of WHO<br />",
+       "%f has invited %t to %6c<br />",
+       "[notice %6c] %f: %m<br />",
        "notice from %f: %m<br />",
        "notice to %t: %m<br />",
-    "%t users, %f services, %r servers<br />",
-    "%r operators<br />",
-    "%r unknown connections<br />",
-    "%r formed channels<br />",
-    "I have %t clients and %r servers<br />",
+       "%t users, %f services, %r servers<br />",
+       "%r operators<br />",
+       "%r unknown connections<br />",
+       "%r formed channels<br />",
+       "I have %t clients and %r servers<br />",
 };
 
 ZEND_DECLARE_MODULE_GLOBALS(ircg);
@@ -746,6 +738,56 @@
 
 #endif
 
+static void luserclient_handler(irconn_t *c, smart_str *users, smart_str *services, 
smart_str *servers, void *dummy)
+{
+       php_irconn_t *conn = dummy;
+       smart_str m = {0};
+
+       FORMAT_MSG(conn, FMT_MSG_LUSERCLIENT, NULL, users, services, servers, &m,
+                       conn->conn.username, conn->conn.username_len);
+       msg_send(conn, &m);
+}
+
+static void luserme_handler(irconn_t *c, smart_str *users, smart_str *servers, void 
*dummy)
+{
+       php_irconn_t *conn = dummy;
+       smart_str m = {0};
+
+       FORMAT_MSG(conn, FMT_MSG_LUSERME, NULL, users, NULL, servers, &m,
+                       conn->conn.username, conn->conn.username_len);
+       msg_send(conn, &m);
+}
+
+static void luserop_handler(irconn_t *c, smart_str *str, void *dummy)
+{
+       php_irconn_t *conn = dummy;
+       smart_str m = {0};
+
+       FORMAT_MSG(conn, FMT_MSG_LUSEROP, NULL, NULL, NULL, str, &m,
+                       conn->conn.username, conn->conn.username_len);
+       msg_send(conn, &m);
+}
+
+static void luserunknown_handler(irconn_t *c, smart_str *str, void *dummy)
+{
+       php_irconn_t *conn = dummy;
+       smart_str m = {0};
+
+       FORMAT_MSG(conn, FMT_MSG_LUSERUNKNOWN, NULL, NULL, NULL, str, &m,
+                       conn->conn.username, conn->conn.username_len);
+       msg_send(conn, &m);
+}
+
+static void luserchannels_handler(irconn_t *c, smart_str *str, void *dummy)
+{
+       php_irconn_t *conn = dummy;
+       smart_str m = {0};
+
+       FORMAT_MSG(conn, FMT_MSG_LUSERCHANNELS, NULL, NULL, NULL, str, &m,
+                       conn->conn.username, conn->conn.username_len);
+       msg_send(conn, &m);
+}
+
 /* }}} */
 
 static void error_handler(irconn_t *ircc, int id, int fatal, smart_str *msg, void 
*conn_data)
@@ -1081,6 +1123,7 @@
        if (conn->fd == -1) {
                        goto out;
        }
+       SEEN_FD(conn->fd);
    
        if (fcntl(conn->fd, F_SETFD, 1)) {
                close(conn->fd);
@@ -1235,6 +1278,8 @@
        if (conn->fd == -1)
                goto out;
        
+       SEEN_FD(conn->fd);
+       
 #ifdef USE_FD2IRCONN
        ircg_hash_index_update(&h_fd2irconn, conn->fd, &Z_LVAL_PP(p1), 
                        sizeof(int), NULL);
@@ -1346,6 +1391,31 @@
 }
 /* }}} */
 
+/* {{{ proto bool ircg_oper(int connection, string name, string password)
+   Elevates privileges to IRC OPER */
+PHP_FUNCTION(ircg_oper)
+{
+       zval **p1, **p2, **p3;
+       php_irconn_t *conn;
+
+       if (ZEND_NUM_ARGS() != 3
+                       || zend_get_parameters_ex(ZEND_NUM_ARGS(), &p1, &p2, &p3) == 
FAILURE)
+               WRONG_PARAM_COUNT;
+
+       convert_to_long_ex(p1);
+       convert_to_string_ex(p2);
+       convert_to_string_ex(p3);
+
+       conn = lookup_irconn(Z_LVAL_PP(p1));
+
+       if (!conn) RETURN_FALSE;
+
+       irc_handle_command(&conn->conn, "OPER", 2, Z_STRVAL_PP(p2), Z_STRVAL_PP(p3));
+       put_irconn(conn);
+       RETVAL_TRUE;
+}
+/* }}} */
+
 /* {{{ proto bool ircg_whois( int connection, string nick)
    Queries user information for nick on server */
 #if IRCG_API_VERSION - 0 >= 20010227
@@ -1599,6 +1669,35 @@
 #endif
 /* }}} */
 
+/* {{{ proto bool ircg_names( int connection, string channel [, string target])
+   Queries visible usernames */
+PHP_FUNCTION(ircg_names)
+{
+       zval **p1, **p2, **p3;
+       php_irconn_t *conn;
+       int ac = ZEND_NUM_ARGS();
+
+       if (ac < 2 || ac > 3 || zend_get_parameters_ex(ac, &p1, &p2, &p3) == FAILURE)
+
+               WRONG_PARAM_COUNT;
+
+       convert_to_long_ex(p1);
+       convert_to_string_ex(p2);
+
+       if (ac > 2) {
+               convert_to_string_ex(p3);
+       }
+
+       conn = lookup_irconn(Z_LVAL_PP(p1));
+
+       if (!conn) RETURN_FALSE;
+
+       irc_handle_command(&conn->conn, "NAMES", ac > 2 ? 2 : 1, Z_STRVAL_PP(p2), ac > 
2 ? Z_STRVAL_PP(p3) : NULL);
+       put_irconn(conn);
+       RETVAL_TRUE;
+}
+/* }}} */
+
 /* {{{ proto bool ircg_kick(int connection, string channel, string nick, string 
reason)
    Kicks user from channel */
 #if IRCG_API_VERSION - 0 >= 20010226
@@ -1626,6 +1725,28 @@
 #endif
 /* }}} */
 
+/* {{{ proto bool ircg_lusers(int connection)
+   IRC network statistics */
+PHP_FUNCTION(ircg_lusers)
+{
+       zval **p1;
+       php_irconn_t *conn;
+
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &p1) == FAILURE)
+               WRONG_PARAM_COUNT;
+
+       convert_to_long_ex(p1);
+
+       conn = lookup_irconn(Z_LVAL_PP(p1));
+
+       if (!conn) RETURN_FALSE;
+
+       irc_handle_command(&conn->conn, "LUSERS", 0);
+       put_irconn(conn);
+       RETVAL_TRUE;
+}
+/* }}} */
+
 /* {{{ proto bool ircg_part(int connection, string channel)
    Leaves a channel */
 PHP_FUNCTION(ircg_part)
@@ -1911,6 +2032,12 @@
 #endif
 
        irc_register_hook(conn, IRCG_NOTICE, notice_handler);
+
+       IFMSG(FMT_MSG_LUSERCLIENT, IRCG_LUSERCLIENT, luserclient_handler);
+       IFMSG(FMT_MSG_LUSERME, IRCG_LUSERME, luserme_handler);
+       IFMSG(FMT_MSG_LUSEROP, IRCG_LUSEROP, luserop_handler);
+       IFMSG(FMT_MSG_LUSERUNKNOWN, IRCG_LUSERUNKNOWN, luserunknown_handler);
+       IFMSG(FMT_MSG_LUSERCHANNELS, IRCG_LUSERCHANNELS, luserchannels_handler);
        
        irc_set_map_handle(conn, php_ircg_cb_msg_handle);
 }
@@ -1948,8 +2075,8 @@
 }
 /* }}} */
 
-/* {{{ proto int ircg_pconnect(void)
-   ??? */
+/* {{{ proto int ircg_pconnect(string username [, string server [, int port [, string 
format-msg-set-name [, array ctcp-set [, array user-details [, bool 
bailout-on-trivial]]]]]])
+   Create a persistent IRC connection */
 PHP_FUNCTION(ircg_pconnect)
 {
        int drop_ref = 0;
@@ -2066,8 +2193,8 @@
 }
 /* }}} */
 
-/* {{{ proto bool ircg_disconnect(void)
-   ??? */
+/* {{{ proto bool ircg_disconnect(int connection, string reason)
+   Terminate IRC connection */
 PHP_FUNCTION(ircg_disconnect)
 {
        zval **id, **reason;
@@ -2095,8 +2222,8 @@
 }
 /* }}} */
 
-/* {{{ proto bool ircg_nick(void)
-   ??? */
+/* {{{ proto bool ircg_nick(int connection, string newnick)
+   Changes the nickname */
 PHP_FUNCTION(ircg_nick)
 {
        zval **id, **newnick;
@@ -2119,8 +2246,34 @@
 }
 /* }}} */
 
-/* {{{ proto bool ircg_notice(void)
-   ??? */
+/* {{{ proto bool ircg_list(int connection, string channel)
+   List topic/user count of channel(s) */
+PHP_FUNCTION(ircg_list)
+{
+       zval **id, **p2;
+       php_irconn_t *conn;
+       int ac = ZEND_NUM_ARGS();
+
+       if (ac != 2 || zend_get_parameters_ex(ac, &id, &p2) == FAILURE)
+               WRONG_PARAM_COUNT;
+
+       convert_to_long_ex(id);
+       convert_to_string_ex(p2);
+
+       conn = lookup_irconn(Z_LVAL_PP(id));
+
+       if (!conn) RETURN_FALSE;
+
+       irc_handle_command(&conn->conn, "LIST", 1, Z_STRVAL_PP(p2));
+       put_irconn(conn);
+
+       RETURN_TRUE;
+}
+/* }}} */
+
+
+/* {{{ proto bool ircg_notice(int connection, string recipient, string message)
+   Sends a one-way communication NOTICE to a target */
 PHP_FUNCTION(ircg_notice)
 {
        zval **id, **recipient, **msg;
@@ -2143,6 +2296,9 @@
 }
 /* }}} */
 
+/* {{{ proto array ircg_eval_ecmascript_params(string params)
+   Decodes a list of JS-encoded parameters into a native array */
+
 #define ADD_PARA() do { \
                                if (para.len) smart_str_0(&para); \
                                add_next_index_stringl(return_value, \
@@ -2152,8 +2308,6 @@
                                para.c = 0; \
 } while (0)
 
-/* {{{ proto array ircg_eval_ecmascript_params(string params)
- ??? */
 PHP_FUNCTION(ircg_eval_ecmascript_params)
 {
        zval **str;
@@ -2258,8 +2412,8 @@
 }
 /* }}} */
 
-/* {{{ proto bool ircg_msg(void)
-   ??? */
+/* {{{ proto bool ircg_msg(int connection, string recipient, string message [,bool 
loop-suppress])
+   Delivers a message to the IRC network */
 PHP_FUNCTION(ircg_msg)
 {
        zval **id, **recipient, **msg, **suppress;
@@ -2495,7 +2649,10 @@
        php_info_print_table_start();
        php_info_print_table_header(2, "Property", "Value");
        
-
+       php_ircg_print_table_row("Maximum number of open fds (system limit)",
+                       getdtablesize() TSRMLS_CC);
+       php_ircg_print_table_row("Highest encountered fd",
+                       php_ircg->highest_fd TSRMLS_CC);
        php_ircg_print_table_row("Maximum concurrent IRC connections", 
                        php_ircg->max_concurrency TSRMLS_CC);
        php_ircg_print_table_row("Scanner result cache hits", 
Index: php-src/ext/ircg/php_ircg.h
diff -u php-src/ext/ircg/php_ircg.h:1.30 php-src/ext/ircg/php_ircg.h:1.31
--- php-src/ext/ircg/php_ircg.h:1.30    Tue Jun 10 16:03:31 2003
+++ php-src/ext/ircg/php_ircg.h Tue Jul  8 00:59:47 2003
@@ -55,8 +55,13 @@
 PHP_FUNCTION(ircg_nickname_unescape);
 PHP_FUNCTION(ircg_get_username);
 PHP_FUNCTION(ircg_eval_ecmascript_params);
+PHP_FUNCTION(ircg_list);
 PHP_FUNCTION(ircg_who);
 PHP_FUNCTION(ircg_invite);
+PHP_FUNCTION(ircg_names);
+PHP_FUNCTION(ircg_lusers);
+PHP_FUNCTION(ircg_oper);
+
 
 PHP_MINIT_FUNCTION(ircg);
 PHP_MSHUTDOWN_FUNCTION(ircg);
Index: php-src/ext/ircg/php_ircg_private.h
diff -u php-src/ext/ircg/php_ircg_private.h:1.8 php-src/ext/ircg/php_ircg_private.h:1.9
--- php-src/ext/ircg/php_ircg_private.h:1.8     Wed Apr 23 00:02:10 2003
+++ php-src/ext/ircg/php_ircg_private.h Tue Jul  8 00:59:47 2003
@@ -47,6 +47,7 @@
        unsigned long fmt_sets_exist, fmt_sets_evicted, fmt_sets_updates, 
                        fmt_sets_ignored, fmt_sets_created, fmt_sets_destroyed;
        unsigned long cache_hits, cache_misses;
+       int highest_fd;
 
        time_t next_gc;
 
Index: php-src/ext/ircg/php_ircg_tokenizer.c
diff -u php-src/ext/ircg/php_ircg_tokenizer.c:1.4 
php-src/ext/ircg/php_ircg_tokenizer.c:1.5
--- php-src/ext/ircg/php_ircg_tokenizer.c:1.4   Fri May 30 07:41:29 2003
+++ php-src/ext/ircg/php_ircg_tokenizer.c       Tue Jul  8 00:59:47 2003
@@ -81,6 +81,7 @@
                case '3': mode |= P_NOAUTO_LINKS; goto next;
                case '4': mode |= P_CONV_BR; goto next;
                case '5': mode |= P_COND_STOP; goto next;
+               case '6': mode |= P_HTML; goto next;
 
                /* associate mode bits with each command where applicable */
                case 'c': NEW_TOKEN(C_CHANNEL, v) = mode; break;
@@ -88,8 +89,8 @@
                case 't': NEW_TOKEN(C_TO, v) = mode; break;
                case 'f': NEW_TOKEN(C_FROM, v) = mode; break;
                case 'r': NEW_TOKEN(C_MESSAGE, v) = mode; break;
-               case 'm': NEW_TOKEN(C_MESSAGE, v) = mode | P_MIRC; break;
-               case 'j': NEW_TOKEN(C_MESSAGE, v) = mode | P_MIRC | P_JS; break;
+               case 'm': NEW_TOKEN(C_MESSAGE, v) = mode | P_HTML; break;
+               case 'j': NEW_TOKEN(C_MESSAGE, v) = mode | P_HTML | P_JS; break;
 
                case '%': NEW_TOKEN(C_PERCENT, v) = 0; break;
 
@@ -110,20 +111,17 @@
                smart_str *to, smart_str *from, smart_str *msg, smart_str *result, 
                const char *username, int username_len, int *status)
 {
-       smart_str encoded_msg = {0};
-       int encoded = 0;
        int i = 0;
        const token_t *t;
        int ntoken;
-   
+    smart_str tmp = {0};
+
        if (!fmt_msg) return;
        
        ntoken = fmt_msg->ntoken;
        t = fmt_msg->t;
        
-       php_ircg->exec_fmt_msgs++;
-       
-#define IRCG_APPEND(what)                                                      \
+#define IRCG_APPEND(what, use_cache)                           \
                if (t[i].para.v & P_COND_STOP) {                        \
                        if (username_len != what->len || memcmp(what->c, username, 
username_len) != 0) \
                                goto stop;                                             
         \
@@ -132,13 +130,13 @@
                switch (t[i].para.v & 7) {                                      \
                case P_JS:                                                             
         \
                        if (!what) break;                                              
 \
-                       php_ircg_js_escape(what, result);                       \
+                       php_ircg_js_escape(what, result);               \
                        break;                                                         
         \
                case P_NICKNAME_JS: {                                           \
                        smart_str tmp = {0};                                    \
                        if (!what) break;                                              
 \
                        php_ircg_nickname_unescape(what, &tmp);         \
-                       php_ircg_js_escape(&tmp, result);                       \
+                       php_ircg_js_escape(&tmp, result);               \
                        smart_str_free_ex(&tmp, 1);                     \
                        break;                                                         
         \
                }                                                                      
                 \
@@ -150,27 +148,35 @@
                        if (!what) break;                                              
 \
                        smart_str_append_ex(result, what, 1);   \
                        break;                                                         
         \
-               case P_MIRC_JS:                                                        
 \
+               case P_HTML_JS:                                                        
 \
                        if (!what) break;                                              
 \
-                       if (!encoded) {                                                
 \
+                       if (use_cache) {                                               
 \
                                ircg_mirc_color_cache(msg,                      \
-                                               &encoded_msg, channel,          \
+                                               &tmp, channel,                         
 \
+                                               !(t[i].para.v & P_NOAUTO_LINKS), \
+                                               t[i].para.v & P_CONV_BR);       \
+                       } else {                                                       
         \
+                               ircg_mirc_color(what->c, &tmp,          \
+                                               what->len,                             
         \
                                                !(t[i].para.v & P_NOAUTO_LINKS), \
                                                t[i].para.v & P_CONV_BR);       \
-                               encoded = 1;                                           
 \
                        }                                                              
                 \
-                       php_ircg_js_escape(&encoded_msg, result);       \
+                       php_ircg_js_escape(&tmp, result);               \
+                       smart_str_free(&tmp);                                   \
                        break;                                                         
         \
-               case P_MIRC:                                                           
 \
+               case P_HTML:                                                           
 \
                        if (!what) break;                                              
 \
-                       if (!encoded) {                                                
 \
-                               ircg_mirc_color_cache(msg,                      \
-                                               &encoded_msg, channel,          \
+                       if (use_cache) {                                               
 \
+                               ircg_mirc_color_cache(msg,                      \
+                                               result, channel,                       
 \
+                                               !(t[i].para.v & P_NOAUTO_LINKS), \
+                                               t[i].para.v & P_CONV_BR);       \
+                       } else {                                                       
         \
+                               ircg_mirc_color(what->c, result,        \
+                                               what->len,                             
         \
                                                !(t[i].para.v & P_NOAUTO_LINKS), \
                                                t[i].para.v & P_CONV_BR);       \
-                               encoded = 1;                                           
 \
                        }                                                              
                 \
-                       smart_str_append_ex(result, &encoded_msg, 1); \
                        break;                                                         
         \
                }
 
@@ -179,10 +185,10 @@
                case C_STRING_INLINE: smart_str_appendl_ex(result, t[i].para.is.buf, 
                                                                          
t[i].para.is.buf_len, 1); break;
                case C_STRING: smart_str_append_ex(result, &t[i].para.s, 1); break;
-               case C_FROM: IRCG_APPEND(from); break;
-               case C_TO: IRCG_APPEND(to); break;
-               case C_CHANNEL: IRCG_APPEND(channel); break;
-               case C_MESSAGE: IRCG_APPEND(msg); break;
+               case C_FROM: IRCG_APPEND(from, 0); break;
+               case C_TO: IRCG_APPEND(to, 0); break;
+               case C_CHANNEL: IRCG_APPEND(channel, 0); break;
+               case C_MESSAGE: IRCG_APPEND(msg, 1); break;
                case C_PERCENT: smart_str_appendc_ex(result, '%', 1); break;
                case C_TERMINATE_1: /* auth by username */
                        if (ntoken > 0 && t[i+1].code == C_STRING) {
@@ -195,11 +201,10 @@
        }
 
 stop:  
-       if (encoded)
-               smart_str_free_ex(&encoded_msg, 1);
        
        if (result->c)
                smart_str_0(result);
+       php_ircg->exec_fmt_msgs++;
 }
 
 
Index: php-src/ext/ircg/php_ircg_tokenizer.h
diff -u php-src/ext/ircg/php_ircg_tokenizer.h:1.5 
php-src/ext/ircg/php_ircg_tokenizer.h:1.6
--- php-src/ext/ircg/php_ircg_tokenizer.h:1.5   Fri May 30 07:41:29 2003
+++ php-src/ext/ircg/php_ircg_tokenizer.h       Tue Jul  8 00:59:47 2003
@@ -41,8 +41,8 @@
        P_JS          = 1,
        P_NICKNAME    = 2,
        P_NICKNAME_JS = 3,
-       P_MIRC        = 4,
-       P_MIRC_JS     = 5,
+       P_HTML        = 4,
+       P_HTML_JS     = 5,
        P_NOAUTO_LINKS = 8, /* Don't automatically convert links */
        P_CONV_BR      = 16,    /* Convert a special character to <br> */
        P_COND_STOP    = 32,    /* If argument != username, stop */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to