cvs: embed /php-irssi ext-irssi.c

[email protected] ("Wez Furlong") Sun, 02 Feb 2003 14:20:46 -0000
Newsgroups php.embed.cvs
Message-ID <cvswez1044195646@cvsserver>
wez		Sun Feb  2 09:20:46 2003 EDT

  Modified files:              
    /embed/php-irssi	ext-irssi.c 
  Log:
  Added: irssi_window_get_active() and irssi_window_find_name() which return
  the currently active window or a specific named window, respectively.
  
  
Index: embed/php-irssi/ext-irssi.c
diff -u embed/php-irssi/ext-irssi.c:1.9 embed/php-irssi/ext-irssi.c:1.10
--- embed/php-irssi/ext-irssi.c:1.9	Sat Feb  1 22:27:16 2003
+++ embed/php-irssi/ext-irssi.c	Sun Feb  2 09:20:46 2003
@@ -14,7 +14,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[email protected]>                                    |
   +----------------------------------------------------------------------+
-  $Id: ext-irssi.c,v 1.9 2003/02/02 03:27:16 wez Exp $
+  $Id: ext-irssi.c,v 1.10 2003/02/02 14:20:46 wez Exp $
 */
 #include "php-irssi.h"
 #include "php-signals-list.h" /* generated by php during make */
@@ -235,30 +235,49 @@
 
 PHP_FUNCTION(irssi_server_list)
 {
-	GSList *tmp;
-	zval *obj;
-
-	array_init(return_value);
-	for (tmp = servers; tmp != NULL; tmp = tmp->next) {
-		MAKE_STD_ZVAL(obj);
-		php_irssi_export_SERVER(obj, (SERVER_REC*)tmp->data);
-		add_next_index_zval(return_value, obj);
+	if (ZEND_NUM_ARGS() != 0) {
+		WRONG_PARAM_COUNT;
 	}
+	php_irssi_export_GList(return_value, servers, PIAT_SERVER);
 }
 
 PHP_FUNCTION(irssi_channel_list)
 {
-	GSList *tmp;
-	zval *obj;
+	if (ZEND_NUM_ARGS() != 0) {
+		WRONG_PARAM_COUNT;
+	}
+	php_irssi_export_GList(return_value, channels, PIAT_CHANNEL);
+}
+
+PHP_FUNCTION(irssi_window_get_active)
+{
+	if (ZEND_NUM_ARGS() != 0) {
+		WRONG_PARAM_COUNT;
+	}
+	php_irssi_C_to_PHP(return_value, PIAT_WINDOW, active_win TSRMLS_CC);
+}
+
+PHP_FUNCTION(irssi_window_find_name)
+{
+	char *name;
+	long name_len;
+	WINDOW_REC *window;
 
-	array_init(return_value);
-	for (tmp = channels; tmp != NULL; tmp = tmp->next) {
-		MAKE_STD_ZVAL(obj);
-		php_irssi_export_CHANNEL(obj, (CHANNEL_REC*)tmp->data);
-		add_next_index_zval(return_value, obj);
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS TSRMLS_CC, "s", &name, &name_len)) {
+		return;
+	}
+	
+	window = window_find_name(name);
+
+	if (window) {
+		php_irssi_C_to_PHP(return_value, PIAT_WINDOW, window TSRMLS_CC);
+	} else {
+		RETVAL_NULL();
 	}
 }
 
+
+/* event source for timeout events */
 static int php_source_event(struct sig_record *rec)
 {
 	zval **zargs[1] = { NULL };
@@ -625,6 +644,8 @@
 	PHP_FE(irssi_signal_get_arg, NULL)
 	PHP_FE(irssi_timeout_add, NULL)
 	PHP_FE(irssi_timeout_remove, NULL)
+	PHP_FE(irssi_window_get_active, NULL)
+	PHP_FE(irssi_window_find_name, NULL)
 	NULL, NULL, NULL
 };