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

From: Date: Mon, 26 Feb 2001 23:11:06 +0000
Subject: cvs: php4 /ext/ircg ircg.c php_ircg.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4282@lists.php.net to get a copy of this message
sas Mon Feb 26 15:11:06 2001 EDT Modified files: /php4/ext/ircg ircg.c php_ircg.h Log: Support for the new whois functionality in ircg Index: php4/ext/ircg/ircg.c diff -u php4/ext/ircg/ircg.c:1.39 php4/ext/ircg/ircg.c:1.40 --- php4/ext/ircg/ircg.c:1.39 Sun Feb 25 22:07:00 2001 +++ php4/ext/ircg/ircg.c Mon Feb 26 15:11:06 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg.c,v 1.39 2001/02/26 06:07:00 andi Exp $ */ +/* $Id: ircg.c,v 1.40 2001/02/26 23:11:06 sas Exp $ */ #include "php.h" #include "php_ini.h" @@ -55,6 +55,11 @@ FMT_MSG_MASS_JOIN_BEGIN, FMT_MSG_MASS_JOIN_ELEMENT, FMT_MSG_MASS_JOIN_END, + FMT_MSG_WHOIS_USER, + FMT_MSG_WHOIS_SERVER, + FMT_MSG_WHOIS_IDLE, + FMT_MSG_WHOIS_CHANNEL, + FMT_MSG_WHOIS_END, NO_FMTS }; @@ -68,6 +73,7 @@ PHP_FE(ircg_msg, NULL) PHP_FE(ircg_nick, NULL) PHP_FE(ircg_topic, NULL) + PHP_FE(ircg_whois, NULL) PHP_FE(ircg_kick, NULL) PHP_FE(ircg_disconnect, NULL) PHP_FE(ircg_is_conn_alive, NULL) @@ -112,7 +118,12 @@ "%f quits (%m)<br />", "Welcome", " %f", - " in this very fine channel" + " in this very fine channel", + "%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 />", + "End of whois for %f<br />" }; #define MSG(conn, type) \ @@ -353,6 +364,72 @@ msg_send(conn, &m); } +static void whois_user_handler(irconn_t *c, smart_str *nick, smart_str *user, + smart_str *host, smart_str *real_name, void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + + m.len = 0; + format_msg(MSG(conn, FMT_MSG_WHOIS_USER), host->c, user->c, nick->c, + real_name->c, &m); + msg_send(conn, &m); +} + + +static void whois_server_handler(irconn_t *c, smart_str *nick, + smart_str *server, smart_str *server_info, void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + + m.len = 0; + format_msg(MSG(conn, FMT_MSG_WHOIS_SERVER), server->c, NULL, nick->c, + server_info->c, &m); + msg_send(conn, &m); +} + + +static void whois_idle_handler(irconn_t *c, smart_str *nick, + smart_str *idletime, void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + + m.len = 0; + format_msg(MSG(conn, FMT_MSG_WHOIS_IDLE), NULL, NULL, nick->c, + idletime->c, &m); + msg_send(conn, &m); +} + +static void end_of_whois_handler(irconn_t *c, smart_str *nick, void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + + m.len = 0; + format_msg(MSG(conn, FMT_MSG_WHOIS_END), NULL, NULL, nick->c, NULL, &m); + msg_send(conn, &m); +} + + +static void whois_channels_handler(irconn_t *c, smart_str *nick, + smart_str *channels, int nr, void *dummy) +{ + php_irconn_t *conn = dummy; + static smart_str m; + int i; + + m.len = 0; + + for (i = 0; i < nr; i++) { + format_msg(MSG(conn, FMT_MSG_WHOIS_CHANNEL), channels[i].c, NULL, + nick->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; @@ -515,6 +592,27 @@ RETVAL_TRUE; } +PHP_FUNCTION(ircg_whois) +{ +#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010227 + zval **p1, **p2; + php_irconn_t *conn; + + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &p1, &p2) == FAILURE) + WRONG_PARAM_COUNT; + + convert_to_long_ex(p1); + convert_to_string_ex(p2); + + conn = lookup_irconn(Z_LVAL_PP(p1)); + + if (!conn) RETURN_FALSE; + + irc_handle_command(&conn->conn, "WHOIS", 1, Z_STRVAL_PP(p2)); + RETVAL_TRUE; +#endif +} + PHP_FUNCTION(ircg_topic) { #if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010226 @@ -680,6 +778,14 @@ irc_register_hook(conn, IRCG_USER_KICK, user_kick); irc_register_hook(conn, IRCG_USER_QUIT, user_quit); irc_register_hook(conn, IRCG_TOPIC, new_topic); + +#if defined(IRCG_API_VERSION) && IRCG_API_VERSION >= 20010227 + irc_register_hook(conn, IRCG_WHOISUSER, whois_user_handler); + irc_register_hook(conn, IRCG_WHOISSERVER, whois_server_handler); + irc_register_hook(conn, IRCG_WHOISIDLE, whois_idle_handler); + irc_register_hook(conn, IRCG_WHOISCHANNELS, whois_channels_handler); + irc_register_hook(conn, IRCG_ENDOFWHOIS, end_of_whois_handler); +#endif } static int ircg_copy_ctcp_msgs(zval **array, php_irconn_t *conn) Index: php4/ext/ircg/php_ircg.h diff -u php4/ext/ircg/php_ircg.h:1.6 php4/ext/ircg/php_ircg.h:1.7 --- php4/ext/ircg/php_ircg.h:1.6 Sun Feb 25 22:07:00 2001 +++ php4/ext/ircg/php_ircg.h Mon Feb 26 15:11:06 2001 @@ -34,6 +34,7 @@ PHP_FUNCTION(ircg_set_current); PHP_FUNCTION(ircg_part); PHP_FUNCTION(ircg_register_current_conn); +PHP_FUNCTION(ircg_whois); PHP_FUNCTION(ircg_msg); PHP_FUNCTION(ircg_nick); PHP_FUNCTION(ircg_kick);

« previous php.cvs (#4282) next »