cvs: embed /php-irssi channel.c ext-irssi.c php-irssi-obj.c php-irssi.h server.c
[email protected] ("Wez Furlong") Tue, 01 Apr 2003 12:28:05 -0000
| Newsgroups | php.embed.cvs |
|---|---|
| Message-ID | <cvswez1049200085@cvsserver> |
--wez1049200085
Content-Type: text/plain
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!).
--wez1049200085
Content-Type: text/plain
Content-Disposition: attachment; filename="wez-20030401072805.txt"
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 <[email protected]> |
+----------------------------------------------------------------------+
- $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 <[email protected]> |
+----------------------------------------------------------------------+
- $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 <[email protected]> |
+----------------------------------------------------------------------+
- $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 <[email protected]> |
+----------------------------------------------------------------------+
- $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 <[email protected]> |
+----------------------------------------------------------------------+
- $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}
};
--wez1049200085--