cvs: php4 /ext/ircg ircg.c php_ircg.h

From: Date: Sat, 17 Feb 2001 08:30:11 +0000
Subject: cvs: php4 /ext/ircg ircg.c php_ircg.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4068@lists.php.net to get a copy of this message
sas Sat Feb 17 00:30:11 2001 EDT Modified files: /php4/ext/ircg ircg.c php_ircg.h Log: Convert to the new hooks-based callback system. Also add a facility to change our own nick as well as tracking other nick changes. Index: php4/ext/ircg/ircg.c diff -u php4/ext/ircg/ircg.c:1.24 php4/ext/ircg/ircg.c:1.25 --- php4/ext/ircg/ircg.c:1.24 Fri Feb 16 14:53:18 2001 +++ php4/ext/ircg/ircg.c Sat Feb 17 00:30:10 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg.c,v 1.24 2001/02/16 22:53:18 sas Exp $ */ +/* $Id: ircg.c,v 1.25 2001/02/17 08:30:10 sas Exp $ */ #include "php.h" #include "php_ini.h" @@ -50,6 +50,7 @@ FMT_MSG_FATAL_ERROR, FMT_MSG_JOIN_LIST_END, FMT_MSG_SELF_PART, + FMT_MSG_NICK, NO_FMTS }; @@ -61,6 +62,7 @@ PHP_FE(ircg_join, NULL) PHP_FE(ircg_part, NULL) PHP_FE(ircg_msg, NULL) + PHP_FE(ircg_nick, NULL) PHP_FE(ircg_disconnect, NULL) PHP_FE(ircg_is_conn_alive, NULL) PHP_FE(ircg_lookup_format_messages, NULL) @@ -95,7 +97,8 @@ "Error: %m<br />", "Fatal Error: %m<br />", "", - "" + "", + "%f changes nick to %t<br />" }; #define MSG(conn, type) \ @@ -286,6 +289,18 @@ msg_send(conn, &m); } +static void nick_handler(irconn_t *c, smart_str *oldnick, smart_str *newnick, + void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + + m.len = 0; + format_msg(MSG(conn, FMT_MSG_NICK), NULL, newnick->c, oldnick->c, NULL, + &m); + msg_send(conn, &m); +} + static void error_handler(irconn_t *ircc, int id, int fatal, smart_str *msg, void *conn_data) { php_irconn_t *conn = conn_data; @@ -424,7 +439,7 @@ if (!conn) RETURN_FALSE; - irc_join(&conn->conn, Z_STRVAL_PP(p2), NULL, part_handler, user_add, user_leave, user_kick, new_topic, conn); + irc_join(&conn->conn, Z_STRVAL_PP(p2), NULL, conn); RETVAL_TRUE; } @@ -511,6 +526,20 @@ RETVAL_TRUE; } +static void register_hooks(irconn_t *conn, void *dummy) +{ + irc_register_hook(conn, IRCG_MSG, msg_handler); + irc_register_hook(conn, IRCG_QUIT, quit_handler); + irc_register_hook(conn, IRCG_ERROR, error_handler); + irc_register_hook(conn, IRCG_NICK, nick_handler); + + irc_register_hook(conn, IRCG_PART, part_handler); + irc_register_hook(conn, IRCG_USER_ADD, user_add); + irc_register_hook(conn, IRCG_USER_LEAVE, user_leave); + irc_register_hook(conn, IRCG_USER_KICK, user_kick); + irc_register_hook(conn, IRCG_TOPIC, new_topic); +} + PHP_FUNCTION(ircg_pconnect) { zval **p1, **p2, **p3, **p4 = NULL; @@ -546,7 +575,7 @@ conn = malloc(sizeof(*conn)); conn->fd = -1; - if (irc_connect(username, NULL, msg_handler, quit_handler, error_handler, + if (irc_connect(username, register_hooks, conn, server, port, &conn->conn)) { free(conn); RETURN_FALSE; @@ -573,6 +602,27 @@ zend_hash_index_del(&h_irconn, Z_LVAL_PP(id)); + RETURN_TRUE; +} + + +PHP_FUNCTION(ircg_nick) +{ + zval **id, **newnick; + php_irconn_t *conn; + + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &id, &newnick) == FAILURE) + WRONG_PARAM_COUNT; + + convert_to_long_ex(id); + convert_to_string_ex(newnick); + + conn = lookup_irconn(Z_LVAL_PP(id)); + + if (!conn) RETURN_FALSE; + + irc_nick(&conn->conn, Z_STRVAL_PP(newnick)); + RETURN_TRUE; } Index: php4/ext/ircg/php_ircg.h diff -u php4/ext/ircg/php_ircg.h:1.3 php4/ext/ircg/php_ircg.h:1.4 --- php4/ext/ircg/php_ircg.h:1.3 Fri Jan 12 06:27:27 2001 +++ php4/ext/ircg/php_ircg.h Sat Feb 17 00:30:10 2001 @@ -35,6 +35,7 @@ PHP_FUNCTION(ircg_part); PHP_FUNCTION(ircg_register_current_conn); PHP_FUNCTION(ircg_msg); +PHP_FUNCTION(ircg_nick); PHP_FUNCTION(ircg_disconnect); PHP_FUNCTION(ircg_is_conn_alive); PHP_FUNCTION(ircg_lookup_format_messages);

« previous php.cvs (#4068) next »