cvs: embed /php-irssi channel.c ext-irssi.c php-irssi-obj.c php-irssi.h server.c
| From: | Wez Furlong | Date: | Tue, 01 Apr 2003 12:28:05 +0000 |
| Subject: | cvs: embed /php-irssi channel.c ext-irssi.c php-irssi-obj.c php-irssi.h server.c | ||
| Groups: | php.embed.cvs | ||
| Request: | Send a blank email to php-embed-cvs+get-50@lists.php.net to get a copy of this message | ||
wez Tue Apr 1 07:28:05 2003 EDT
Modified files:
/embed/php-irssi channel.c ext-irssi.c php-irssi-obj.c php-irssi.h
server.c
Log:
Add $channel->command().
Usage: $channel->command("op _Wez_")
Will send that command to the channel and op _Wez_. This is routed
via the irssi command processor, so it will/should correctly split
the command into separate ops if the number of nicks is too much
for one attempt.
Add more settings functions.
Add $server->mask_match(), $server->masks_match() and $server->match_address()
which can be used to compare a nick/hostmask and see if it matches.
Resolve a slight problem when exporting objects (I hope!).
Index: embed/php-irssi/channel.c diff -u embed/php-irssi/channel.c:1.7 embed/php-irssi/channel.c:1.8 --- embed/php-irssi/channel.c:1.7 Tue Mar 11 09:15:24 2003 +++ embed/php-irssi/channel.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: channel.c,v 1.7 2003/03/11 14:15:24 tal Exp $ + $Id: channel.c,v 1.8 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #define PHP_IRSSI_PROTOS_ONLY @@ -135,10 +135,41 @@ signal_emit("message own_public", 4, channel->server, msg, channel->name, channel->name); } +PHP_FUNCTION(channel_command) +{ + char *cmd, *sendcmd; + const char *cmdchars; + long cmdlen; + CH_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &cmd, &cmdlen)) { + return; + } + + if (cmdlen == 0) { + return; + } + + sendcmd = cmd; + cmdchars = settings_get_str("cmdchars"); + + if (strchr(cmdchars, *cmd) == NULL) { + /* prepend command char */ + spprintf(&sendcmd, 0, "%c%s", *cmdchars, cmd); + } + + signal_emit("send command", 3, sendcmd, channel->server, channel); + + if (sendcmd != cmd) { + efree(sendcmd); + } +} + function_entry php_irssi_CHANNEL_funcs[] = { PHP_NAMED_FE(nick_find, PHP_FN(channel_nick_find), NULL) PHP_NAMED_FE(nick_find_mask, PHP_FN(channel_nick_find_mask), NULL) PHP_NAMED_FE(send, PHP_FN(channel_send), NULL) + PHP_NAMED_FE(command, PHP_FN(channel_command), NULL) {NULL, NULL, NULL} }; Index: embed/php-irssi/ext-irssi.c diff -u embed/php-irssi/ext-irssi.c:1.22 embed/php-irssi/ext-irssi.c:1.23 --- embed/php-irssi/ext-irssi.c:1.22 Mon Mar 31 19:53:02 2003 +++ embed/php-irssi/ext-irssi.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: ext-irssi.c,v 1.22 2003/04/01 00:53:02 wez Exp $ + $Id: ext-irssi.c,v 1.23 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #include "php-signals-list.h" /* generated by php during make */ @@ -179,6 +179,11 @@ val = *zargs[i]; argc++; + if (args[i] == NULL) { + ZVAL_NULL(val); + continue; + } + switch(rec->sigargs->argtypes[i]) { case PIAT_STRING: ZVAL_STRING(val, (char *)args[i], 1); @@ -934,6 +939,98 @@ RETURN_LONG(settings_get_size(key)); } +/* proto void irssi_settings_set_str(string key, string value) + Set a string setting */ +PHP_FUNCTION(irssi_settings_set_str) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_str(key, val); +} + +/* proto void irssi_settings_set_int(string key, long value) + Set an int setting */ +PHP_FUNCTION(irssi_settings_set_int) +{ + char *key; + long keylen, val; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", + &key, &keylen, &val)) { + return; + } + + settings_set_int(key, val); +} + +/* proto void irssi_settings_set_bool(string key, bool value) + Set a bool setting */ +PHP_FUNCTION(irssi_settings_set_bool) +{ + char *key; + long keylen; + zend_bool val; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", + &key, &keylen, &val)) { + return; + } + + settings_set_bool(key, val); +} + + +/* proto void irssi_settings_set_time(string key, string value) + Set a time setting */ +PHP_FUNCTION(irssi_settings_set_time) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_time(key, val); +} + +/* proto void irssi_settings_set_level(string key, string value) + Set a level setting */ +PHP_FUNCTION(irssi_settings_set_level) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_level(key, val); +} + +/* proto void irssi_settings_set_size(string key, string value) + Set a size setting */ +PHP_FUNCTION(irssi_settings_set_size) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_size(key, val); +} + @@ -1055,6 +1152,12 @@ PHP_FE(irssi_settings_get_time, NULL) PHP_FE(irssi_settings_get_level, NULL) PHP_FE(irssi_settings_get_size, NULL) + PHP_FE(irssi_settings_set_str, NULL) + PHP_FE(irssi_settings_set_int, NULL) + PHP_FE(irssi_settings_set_bool, NULL) + PHP_FE(irssi_settings_set_time, NULL) + PHP_FE(irssi_settings_set_level, NULL) + PHP_FE(irssi_settings_set_size, NULL) {NULL, NULL, NULL} }; Index: embed/php-irssi/php-irssi-obj.c diff -u embed/php-irssi/php-irssi-obj.c:1.8 embed/php-irssi/php-irssi-obj.c:1.9 --- embed/php-irssi/php-irssi-obj.c:1.8 Tue Mar 11 09:15:25 2003 +++ embed/php-irssi/php-irssi-obj.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: php-irssi-obj.c,v 1.8 2003/03/11 14:15:25 tal Exp $ + $Id: php-irssi-obj.c,v 1.9 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #include "php-irssi-obj-defs.h" @@ -45,10 +45,10 @@ ZVAL_STRING(val, *(char **)arg, 1); break; case PIAT_SERVER: - php_irssi_export_SERVER(val, (SERVER_REC*)arg TSRMLS_CC); + php_irssi_export_SERVER(val, *(SERVER_REC**)arg TSRMLS_CC); break; case PIAT_CHANNEL: - php_irssi_export_CHANNEL(val, (CHANNEL_REC*)arg TSRMLS_CC); + php_irssi_export_CHANNEL(val, *(CHANNEL_REC**)arg TSRMLS_CC); break; case PIAT_INT: ZVAL_LONG(val, *(int *)arg); @@ -60,10 +60,10 @@ php_irssi_export_GList(val, (GSList*)arg, PIAT_STRING TSRMLS_CC); break; case PIAT_WI_ITEM: - php_irssi_export_WI_ITEM(val, (WI_ITEM_REC*)arg TSRMLS_CC); + php_irssi_export_WI_ITEM(val, *(WI_ITEM_REC**)arg TSRMLS_CC); break; case PIAT_WINDOW: - php_irssi_export_WINDOW(val, (WINDOW_REC*)arg TSRMLS_CC); + php_irssi_export_WINDOW(val, *(WINDOW_REC**)arg TSRMLS_CC); break; case PIAT_NICK: /* We need some context for a NICK */ Index: embed/php-irssi/php-irssi.h diff -u embed/php-irssi/php-irssi.h:1.9 embed/php-irssi/php-irssi.h:1.10 --- embed/php-irssi/php-irssi.h:1.9 Mon Mar 31 15:16:50 2003 +++ embed/php-irssi/php-irssi.h Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: php-irssi.h,v 1.9 2003/03/31 20:16:50 wez Exp $ + $Id: php-irssi.h,v 1.10 2003/04/01 12:28:04 wez Exp $ */ #define MODULE_NAME "php/core" @@ -28,6 +28,7 @@ #include "irc-servers.h" #include "channels.h" #include "nicklist.h" +#include "masks.h" #include "settings.h" #include "servers.h" #include "commands.h" Index: embed/php-irssi/server.c diff -u embed/php-irssi/server.c:1.6 embed/php-irssi/server.c:1.7 --- embed/php-irssi/server.c:1.6 Tue Mar 11 09:15:25 2003 +++ embed/php-irssi/server.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: server.c,v 1.6 2003/03/11 14:15:25 tal Exp $ + $Id: server.c,v 1.7 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" @@ -132,11 +132,54 @@ } +PHP_FUNCTION(server_mask_match) +{ + char *mask, *nick, *user, *host; + long masklen, nicklen, userlen, hostlen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssss", &mask, &masklen, &nick, &nicklen, &user, &userlen, &host, &hostlen)) { + return; + } + + RETURN_BOOL(mask_match(server, mask, nick, user, host)); +} + +PHP_FUNCTION(server_mask_match_address) +{ + char *mask, *nick, *address; + long masklen, nicklen, addresslen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &mask, &masklen, &nick, &nicklen, &address, &addresslen)) { + return; + } + + RETURN_BOOL(mask_match_address(server, mask, nick, address)); +} + +PHP_FUNCTION(server_masks_match) +{ + char *masks, *nick, *address; + long maskslen, nicklen, addresslen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &masks, &maskslen, &nick, &nicklen, &address, &addresslen)) { + return; + } + + RETURN_BOOL(masks_match(server, masks, nick, address)); +} + + function_entry php_irssi_SERVER_funcs[] = { PHP_NAMED_FE(privmsg, PHP_FN(server_privmsg), NULL) PHP_NAMED_FE(send_cmd, PHP_FN(server_send_cmd), NULL) PHP_NAMED_FE(send_cmd_now, PHP_FN(server_send_cmd_now), NULL) PHP_NAMED_FE(channels_join, PHP_FN(server_channels_join), NULL) + PHP_NAMED_FE(mask_match, PHP_FN(server_mask_match), NULL) + PHP_NAMED_FE(masks_match, PHP_FN(server_masks_match), NULL) + PHP_NAMED_FE(mask_match_address, PHP_FN(server_mask_match_address), NULL) {NULL, NULL, NULL} };
Index: embed/php-irssi/channel.c diff -u embed/php-irssi/channel.c:1.7 embed/php-irssi/channel.c:1.8 --- embed/php-irssi/channel.c:1.7 Tue Mar 11 09:15:24 2003 +++ embed/php-irssi/channel.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: channel.c,v 1.7 2003/03/11 14:15:24 tal Exp $ + $Id: channel.c,v 1.8 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #define PHP_IRSSI_PROTOS_ONLY @@ -135,10 +135,41 @@ signal_emit("message own_public", 4, channel->server, msg, channel->name, channel->name); } +PHP_FUNCTION(channel_command) +{ + char *cmd, *sendcmd; + const char *cmdchars; + long cmdlen; + CH_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &cmd, &cmdlen)) { + return; + } + + if (cmdlen == 0) { + return; + } + + sendcmd = cmd; + cmdchars = settings_get_str("cmdchars"); + + if (strchr(cmdchars, *cmd) == NULL) { + /* prepend command char */ + spprintf(&sendcmd, 0, "%c%s", *cmdchars, cmd); + } + + signal_emit("send command", 3, sendcmd, channel->server, channel); + + if (sendcmd != cmd) { + efree(sendcmd); + } +} + function_entry php_irssi_CHANNEL_funcs[] = { PHP_NAMED_FE(nick_find, PHP_FN(channel_nick_find), NULL) PHP_NAMED_FE(nick_find_mask, PHP_FN(channel_nick_find_mask), NULL) PHP_NAMED_FE(send, PHP_FN(channel_send), NULL) + PHP_NAMED_FE(command, PHP_FN(channel_command), NULL) {NULL, NULL, NULL} }; Index: embed/php-irssi/ext-irssi.c diff -u embed/php-irssi/ext-irssi.c:1.22 embed/php-irssi/ext-irssi.c:1.23 --- embed/php-irssi/ext-irssi.c:1.22 Mon Mar 31 19:53:02 2003 +++ embed/php-irssi/ext-irssi.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: ext-irssi.c,v 1.22 2003/04/01 00:53:02 wez Exp $ + $Id: ext-irssi.c,v 1.23 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #include "php-signals-list.h" /* generated by php during make */ @@ -179,6 +179,11 @@ val = *zargs[i]; argc++; + if (args[i] == NULL) { + ZVAL_NULL(val); + continue; + } + switch(rec->sigargs->argtypes[i]) { case PIAT_STRING: ZVAL_STRING(val, (char *)args[i], 1); @@ -934,6 +939,98 @@ RETURN_LONG(settings_get_size(key)); } +/* proto void irssi_settings_set_str(string key, string value) + Set a string setting */ +PHP_FUNCTION(irssi_settings_set_str) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_str(key, val); +} + +/* proto void irssi_settings_set_int(string key, long value) + Set an int setting */ +PHP_FUNCTION(irssi_settings_set_int) +{ + char *key; + long keylen, val; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", + &key, &keylen, &val)) { + return; + } + + settings_set_int(key, val); +} + +/* proto void irssi_settings_set_bool(string key, bool value) + Set a bool setting */ +PHP_FUNCTION(irssi_settings_set_bool) +{ + char *key; + long keylen; + zend_bool val; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", + &key, &keylen, &val)) { + return; + } + + settings_set_bool(key, val); +} + + +/* proto void irssi_settings_set_time(string key, string value) + Set a time setting */ +PHP_FUNCTION(irssi_settings_set_time) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_time(key, val); +} + +/* proto void irssi_settings_set_level(string key, string value) + Set a level setting */ +PHP_FUNCTION(irssi_settings_set_level) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_level(key, val); +} + +/* proto void irssi_settings_set_size(string key, string value) + Set a size setting */ +PHP_FUNCTION(irssi_settings_set_size) +{ + char *key, *val; + long keylen, vallen; + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", + &key, &keylen, &val, &vallen)) { + return; + } + + settings_set_size(key, val); +} + @@ -1055,6 +1152,12 @@ PHP_FE(irssi_settings_get_time, NULL) PHP_FE(irssi_settings_get_level, NULL) PHP_FE(irssi_settings_get_size, NULL) + PHP_FE(irssi_settings_set_str, NULL) + PHP_FE(irssi_settings_set_int, NULL) + PHP_FE(irssi_settings_set_bool, NULL) + PHP_FE(irssi_settings_set_time, NULL) + PHP_FE(irssi_settings_set_level, NULL) + PHP_FE(irssi_settings_set_size, NULL) {NULL, NULL, NULL} }; Index: embed/php-irssi/php-irssi-obj.c diff -u embed/php-irssi/php-irssi-obj.c:1.8 embed/php-irssi/php-irssi-obj.c:1.9 --- embed/php-irssi/php-irssi-obj.c:1.8 Tue Mar 11 09:15:25 2003 +++ embed/php-irssi/php-irssi-obj.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: php-irssi-obj.c,v 1.8 2003/03/11 14:15:25 tal Exp $ + $Id: php-irssi-obj.c,v 1.9 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" #include "php-irssi-obj-defs.h" @@ -45,10 +45,10 @@ ZVAL_STRING(val, *(char **)arg, 1); break; case PIAT_SERVER: - php_irssi_export_SERVER(val, (SERVER_REC*)arg TSRMLS_CC); + php_irssi_export_SERVER(val, *(SERVER_REC**)arg TSRMLS_CC); break; case PIAT_CHANNEL: - php_irssi_export_CHANNEL(val, (CHANNEL_REC*)arg TSRMLS_CC); + php_irssi_export_CHANNEL(val, *(CHANNEL_REC**)arg TSRMLS_CC); break; case PIAT_INT: ZVAL_LONG(val, *(int *)arg); @@ -60,10 +60,10 @@ php_irssi_export_GList(val, (GSList*)arg, PIAT_STRING TSRMLS_CC); break; case PIAT_WI_ITEM: - php_irssi_export_WI_ITEM(val, (WI_ITEM_REC*)arg TSRMLS_CC); + php_irssi_export_WI_ITEM(val, *(WI_ITEM_REC**)arg TSRMLS_CC); break; case PIAT_WINDOW: - php_irssi_export_WINDOW(val, (WINDOW_REC*)arg TSRMLS_CC); + php_irssi_export_WINDOW(val, *(WINDOW_REC**)arg TSRMLS_CC); break; case PIAT_NICK: /* We need some context for a NICK */ Index: embed/php-irssi/php-irssi.h diff -u embed/php-irssi/php-irssi.h:1.9 embed/php-irssi/php-irssi.h:1.10 --- embed/php-irssi/php-irssi.h:1.9 Mon Mar 31 15:16:50 2003 +++ embed/php-irssi/php-irssi.h Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: php-irssi.h,v 1.9 2003/03/31 20:16:50 wez Exp $ + $Id: php-irssi.h,v 1.10 2003/04/01 12:28:04 wez Exp $ */ #define MODULE_NAME "php/core" @@ -28,6 +28,7 @@ #include "irc-servers.h" #include "channels.h" #include "nicklist.h" +#include "masks.h" #include "settings.h" #include "servers.h" #include "commands.h" Index: embed/php-irssi/server.c diff -u embed/php-irssi/server.c:1.6 embed/php-irssi/server.c:1.7 --- embed/php-irssi/server.c:1.6 Tue Mar 11 09:15:25 2003 +++ embed/php-irssi/server.c Tue Apr 1 07:28:04 2003 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ | Author: Wez Furlong <wez@php.net> | +----------------------------------------------------------------------+ - $Id: server.c,v 1.6 2003/03/11 14:15:25 tal Exp $ + $Id: server.c,v 1.7 2003/04/01 12:28:04 wez Exp $ */ #include "php-irssi.h" @@ -132,11 +132,54 @@ } +PHP_FUNCTION(server_mask_match) +{ + char *mask, *nick, *user, *host; + long masklen, nicklen, userlen, hostlen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssss", &mask, &masklen, &nick, &nicklen, &user, &userlen, &host, &hostlen)) { + return; + } + + RETURN_BOOL(mask_match(server, mask, nick, user, host)); +} + +PHP_FUNCTION(server_mask_match_address) +{ + char *mask, *nick, *address; + long masklen, nicklen, addresslen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &mask, &masklen, &nick, &nicklen, &address, &addresslen)) { + return; + } + + RETURN_BOOL(mask_match_address(server, mask, nick, address)); +} + +PHP_FUNCTION(server_masks_match) +{ + char *masks, *nick, *address; + long maskslen, nicklen, addresslen; + SV_FETCH(); + + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &masks, &maskslen, &nick, &nicklen, &address, &addresslen)) { + return; + } + + RETURN_BOOL(masks_match(server, masks, nick, address)); +} + + function_entry php_irssi_SERVER_funcs[] = { PHP_NAMED_FE(privmsg, PHP_FN(server_privmsg), NULL) PHP_NAMED_FE(send_cmd, PHP_FN(server_send_cmd), NULL) PHP_NAMED_FE(send_cmd_now, PHP_FN(server_send_cmd_now), NULL) PHP_NAMED_FE(channels_join, PHP_FN(server_channels_join), NULL) + PHP_NAMED_FE(mask_match, PHP_FN(server_mask_match), NULL) + PHP_NAMED_FE(masks_match, PHP_FN(server_masks_match), NULL) + PHP_NAMED_FE(mask_match_address, PHP_FN(server_mask_match_address), NULL) {NULL, NULL, NULL} };