sas Sun Apr 22 08:17:57 2001 EDT
Modified files: (Branch: PHP_4_0_5)
/php4/ext/ircg config.m4 ircg.c php_ircg.h
Log:
MFH allocation-related and thttpd-independence changes
Index: php4/ext/ircg/config.m4
diff -u php4/ext/ircg/config.m4:1.5 php4/ext/ircg/config.m4:1.5.2.1
--- php4/ext/ircg/config.m4:1.5 Thu Mar 8 15:13:34 2001
+++ php4/ext/ircg/config.m4 Sun Apr 22 08:17:57 2001
@@ -16,6 +16,9 @@
PHP_EVAL_INCLINE(`$IRCG_CONFIG --cppflags`)
AC_ADD_LIBRARY_WITH_PATH(ircg, $PHP_IRCG/lib)
AC_ADD_INCLUDE($PHP_IRCG/include)
+ if test "$PHP_SAPI" = "thttpd"; then
+ AC_DEFINE(IRCG_WITH_THTTPD, 1, [Whether thttpd is available])
+ fi
AC_DEFINE(HAVE_IRCG, 1, [Whether you want IRCG support])
PHP_EXTENSION(ircg, $ext_shared)
fi
Index: php4/ext/ircg/ircg.c
diff -u php4/ext/ircg/ircg.c:1.53 php4/ext/ircg/ircg.c:1.53.2.1
--- php4/ext/ircg/ircg.c:1.53 Sat Mar 10 15:51:56 2001
+++ php4/ext/ircg/ircg.c Sun Apr 22 08:17:57 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ircg.c,v 1.53 2001/03/10 23:51:56 sas Exp $ */
+/* $Id: ircg.c,v 1.53.2.1 2001/04/22 15:17:57 sas Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -62,6 +62,8 @@
FMT_MSG_WHOIS_END,
FMT_MSG_MODE_VOICE,
FMT_MSG_MODE_OP,
+ FMT_MSG_BANLIST,
+ FMT_MSG_BANLIST_END,
NO_FMTS
};
@@ -73,11 +75,15 @@
PHP_FE(ircg_join, NULL)
PHP_FE(ircg_part, NULL)
PHP_FE(ircg_msg, NULL)
+ PHP_FE(ircg_notice, NULL)
PHP_FE(ircg_nick, NULL)
PHP_FE(ircg_topic, NULL)
PHP_FE(ircg_channel_mode, NULL)
+ PHP_FE(ircg_html_encode, NULL)
PHP_FE(ircg_whois, NULL)
PHP_FE(ircg_kick, NULL)
+ PHP_FE(ircg_ignore_add, NULL)
+ PHP_FE(ircg_ignore_del, NULL)
PHP_FE(ircg_disconnect, NULL)
PHP_FE(ircg_is_conn_alive, NULL)
PHP_FE(ircg_lookup_format_messages, NULL)
@@ -132,7 +138,9 @@
"%f is on channel %c<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 />"
+ "%f sets channel operator flag of %t to %m on %c<br />",
+ "banned from %c: %m<br />",
+ "end of ban list for %c<br />"
};
#define MSG(conn, type) \
@@ -202,10 +210,10 @@
case '"':
case '\\':
case '\'':
- smart_str_appendc(output, '\\');
+ smart_str_appendc_ex(output, '\\', 1);
/* fall-through */
default:
- smart_str_appendc(output, *p);
+ smart_str_appendc_ex(output, *p, 1);
}
}
}
@@ -243,7 +251,7 @@
smart_str tmp = {0}; \
ircg_js_escape(what, &tmp); \
smart_str_append_ex(result, &tmp, 1); \
- smart_str_free(&tmp); \
+ smart_str_free_ex(&tmp, 1); \
} else { \
smart_str_append_ex(result, what, 1); \
}
@@ -308,7 +316,7 @@
if (encoded)
smart_str_free(&encoded_msg);
if (js_encoded)
- smart_str_free(&js_encoded_msg);
+ smart_str_free_ex(&js_encoded_msg, 1);
smart_str_0(result);
}
@@ -505,6 +513,24 @@
msg_send(conn, &m);
}
+static void banlist_handler(irconn_t *ircc, smart_str *channel, smart_str *mask, void
+*conn_data)
+{
+ php_irconn_t *conn = conn_data;
+ smart_str m = {0};
+
+ format_msg(MSG(conn, FMT_MSG_BANLIST), channel, NULL, NULL, mask, &m);
+ msg_send(conn, &m);
+}
+
+static void end_of_banlist_handler(irconn_t *ircc, smart_str *channel, void
+*conn_data)
+{
+ php_irconn_t *conn = conn_data;
+ smart_str m = {0};
+
+ format_msg(MSG(conn, FMT_MSG_BANLIST_END), channel, NULL, NULL, NULL, &m);
+ msg_send(conn, &m);
+}
+
static void user_add(irconn_t *ircc, smart_str *channel, smart_str *users,
int nr, void *dummy)
{
@@ -630,6 +656,7 @@
PHP_FUNCTION(ircg_set_current)
{
+#ifdef IRCG_WITH_THTTPD
zval **p1;
php_irconn_t *conn;
@@ -653,6 +680,7 @@
msg_empty_buffer(conn);
RETURN_TRUE;
+#endif
}
PHP_FUNCTION(ircg_new_window)
@@ -707,6 +735,50 @@
#endif
}
+PHP_FUNCTION(ircg_ignore_add)
+{
+#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010402
+ zval **args[2];
+ php_irconn_t *conn;
+ smart_str s;
+
+ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_array_ex(2, args) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ convert_to_long_ex(args[0]);
+ convert_to_string_ex(args[1]);
+
+ conn = lookup_irconn(Z_LVAL_PP(args[0]));
+ if (!conn) RETURN_FALSE;
+
+ smart_str_setl(&s, Z_STRVAL_PP(args[1]), Z_STRLEN_PP(args[1]));
+ irc_ignore_add(&conn->conn, &s, 1);
+#endif
+}
+
+PHP_FUNCTION(ircg_ignore_del)
+{
+#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010402
+ zval **args[2];
+ php_irconn_t *conn;
+ smart_str s;
+
+ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_array_ex(2, args) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ convert_to_long_ex(args[0]);
+ convert_to_string_ex(args[1]);
+
+ conn = lookup_irconn(Z_LVAL_PP(args[0]));
+ if (!conn) RETURN_FALSE;
+
+ smart_str_setl(&s, Z_STRVAL_PP(args[1]), Z_STRLEN_PP(args[1]));
+ if (irc_ignore_del(&conn->conn, &s))
+ RETURN_FALSE;
+ RETURN_TRUE;
+#endif
+}
+
PHP_FUNCTION(ircg_channel_mode)
{
#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010227
@@ -752,6 +824,21 @@
#endif
}
+PHP_FUNCTION(ircg_html_encode)
+{
+ zval **p1;
+ smart_str res = {0};
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &p1) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ convert_to_string_ex(p1);
+
+ ircg_mirc_color(Z_STRVAL_PP(p1), &res, Z_STRLEN_PP(p1));
+
+ RETVAL_STRINGL(res.c, res.len, 0);
+}
+
PHP_FUNCTION(ircg_kick)
{
#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010226
@@ -911,6 +998,11 @@
#if IRCG_API_VERSION >= 20010310
irc_register_hook(conn, IRCG_IDLE_RECV_QUEUE, idle_recv_queue);
#endif
+
+#if IRCG_API_VERSION >= 20010416
+ irc_register_hook(conn, IRCG_BANLIST, banlist_handler);
+ irc_register_hook(conn, IRCG_ENDOFBANLIST, end_of_banlist_handler);
+#endif
}
static int ircg_copy_ctcp_msgs(zval **array, php_irconn_t *conn)
@@ -1048,6 +1140,29 @@
irc_nick(&conn->conn, Z_STRVAL_PP(newnick));
+ RETURN_TRUE;
+}
+
+PHP_FUNCTION(ircg_notice)
+{
+ zval **id, **recipient, **msg;
+ php_irconn_t *conn;
+ smart_str l = {0};
+ smart_str m = {0};
+ smart_str tmp, tmp2;
+
+ if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &id, &recipient, &msg)
+== FAILURE)
+ WRONG_PARAM_COUNT;
+
+ convert_to_long_ex(id);
+ convert_to_string_ex(recipient);
+ convert_to_string_ex(msg);
+
+ conn = lookup_irconn(Z_LVAL_PP(id));
+
+ if (!conn) RETURN_FALSE;
+
+ irc_handle_command(&conn->conn, "NOTICE", 2, Z_STRVAL_PP(recipient),
+Z_STRVAL_PP(msg));
RETURN_TRUE;
}
Index: php4/ext/ircg/php_ircg.h
diff -u php4/ext/ircg/php_ircg.h:1.8 php4/ext/ircg/php_ircg.h:1.8.2.1
--- php4/ext/ircg/php_ircg.h:1.8 Wed Mar 7 14:18:50 2001
+++ php4/ext/ircg/php_ircg.h Sun Apr 22 08:17:57 2001
@@ -36,7 +36,11 @@
PHP_FUNCTION(ircg_register_current_conn);
PHP_FUNCTION(ircg_whois);
PHP_FUNCTION(ircg_msg);
+PHP_FUNCTION(ircg_notice);
PHP_FUNCTION(ircg_nick);
+PHP_FUNCTION(ircg_html_encode);
+PHP_FUNCTION(ircg_ignore_add);
+PHP_FUNCTION(ircg_ignore_del);
PHP_FUNCTION(ircg_kick);
PHP_FUNCTION(ircg_topic);
PHP_FUNCTION(ircg_channel_mode);
--
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]