cvs: embed /php-irssi TODO ext-irssi.c
[email protected] ("Wez Furlong") Mon, 31 Mar 2003 21:00:23 -0000
| Newsgroups | php.embed.cvs |
|---|---|
| Message-ID | <cvswez1049144423@cvsserver> |
wez Mon Mar 31 16:00:23 2003 EDT
Modified files:
/embed/php-irssi TODO ext-irssi.c
Log:
Add settings functions so that scripts can store their state in the users irssi
configuration file.
Index: embed/php-irssi/TODO
diff -u embed/php-irssi/TODO:1.8 embed/php-irssi/TODO:1.9
--- embed/php-irssi/TODO:1.8 Mon Mar 31 12:00:48 2003
+++ embed/php-irssi/TODO Mon Mar 31 16:00:22 2003
@@ -1,6 +1,6 @@
TODO:
====================================
-$Id: TODO,v 1.8 2003/03/31 17:00:48 wez Exp $
+$Id: TODO,v 1.9 2003/03/31 21:00:22 wez Exp $
o Improve genobjdefs.php so that it can find a structure definition in a
header file with more junk (when compared with the *-rec.h headers).
@@ -34,8 +34,8 @@
stuff there (eg: fopen($URL) and put the output in the scroll buffer of a
spare window).
-o Expose the settings API so that scripts can keep their state saved when the
-user does a /save
+o Expose the theme API (kind of like templates). See the perl usercount.pl
+script in the irssi distro for an example
o Expose even more stuff!
Index: embed/php-irssi/ext-irssi.c
diff -u embed/php-irssi/ext-irssi.c:1.20 embed/php-irssi/ext-irssi.c:1.21
--- embed/php-irssi/ext-irssi.c:1.20 Mon Mar 31 15:16:50 2003
+++ embed/php-irssi/ext-irssi.c Mon Mar 31 16:00:22 2003
@@ -14,7 +14,7 @@
+----------------------------------------------------------------------+
| Author: Wez Furlong <[email protected]> |
+----------------------------------------------------------------------+
- $Id: ext-irssi.c,v 1.20 2003/03/31 20:16:50 wez Exp $
+ $Id: ext-irssi.c,v 1.21 2003/03/31 21:00:22 wez Exp $
*/
#include "php-irssi.h"
#include "php-signals-list.h" /* generated by php during make */
@@ -734,6 +734,196 @@
RETURN_TRUE;
}
+/* Settings API */
+
+/* proto void irssi_settings_add_bool(string section, string key, bool default)
+ Registers a boolean setting */
+PHP_FUNCTION(irssi_settings_add_bool)
+{
+ char *section, *key;
+ long section_len, key_len;
+ zend_bool defval;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssb",
+ §ion, §ion_len, &key, &key_len, &defval)) {
+ return;
+ }
+
+ settings_add_bool(section, key, defval);
+}
+
+/* proto void irssi_settings_add_int(string section, string key, long default)
+ Registers an integer setting */
+PHP_FUNCTION(irssi_settings_add_int)
+{
+ char *section, *key;
+ long section_len, key_len;
+ long defval;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl",
+ §ion, §ion_len, &key, &key_len, &defval)) {
+ return;
+ }
+
+ settings_add_int(section, key, defval);
+}
+
+/* proto void irssi_settings_add_str(string section, string key, string default)
+ Registers a string setting */
+PHP_FUNCTION(irssi_settings_add_str)
+{
+ char *section, *key, *defval;
+ long section_len, key_len, defval_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+ §ion, §ion_len, &key, &key_len, &defval, &defval_len)) {
+ return;
+ }
+
+ settings_add_str(section, key, defval);
+}
+
+/* proto void irssi_settings_add_time(string section, string key, string default)
+ Registers a time setting */
+PHP_FUNCTION(irssi_settings_add_time)
+{
+ char *section, *key, *defval;
+ long section_len, key_len, defval_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+ §ion, §ion_len, &key, &key_len, &defval, &defval_len)) {
+ return;
+ }
+
+ settings_add_time(section, key, defval);
+}
+
+/* proto void irssi_settings_add_level(string section, string key, string default)
+ Registers a level setting */
+PHP_FUNCTION(irssi_settings_add_level)
+{
+ char *section, *key, *defval;
+ long section_len, key_len, defval_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+ §ion, §ion_len, &key, &key_len, &defval, &defval_len)) {
+ return;
+ }
+
+ settings_add_level(section, key, defval);
+}
+
+/* proto void irssi_settings_add_size(string section, string key, string default)
+ Registers a size setting */
+PHP_FUNCTION(irssi_settings_add_size)
+{
+ char *section, *key, *defval;
+ long section_len, key_len, defval_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+ §ion, §ion_len, &key, &key_len, &defval, &defval_len)) {
+ return;
+ }
+
+ settings_add_size(section, key, defval);
+}
+
+/* proto string irssi_settings_get_str(string key)
+ Returns a string setting value */
+PHP_FUNCTION(irssi_settings_get_str)
+{
+ char *key, *val;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ val = (char *)settings_get_str(key);
+
+ if (val) {
+ RETURN_STRING(val, 1);
+ } else {
+ RETURN_NULL();
+ }
+}
+
+/* proto long irssi_settings_get_int(string key)
+ Returns an int setting value */
+PHP_FUNCTION(irssi_settings_get_int)
+{
+ char *key;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ RETURN_LONG(settings_get_int(key));
+}
+
+/* proto bool irssi_settings_get_bool(string key)
+ Returns a bool setting value */
+PHP_FUNCTION(irssi_settings_get_bool)
+{
+ char *key;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ RETURN_BOOL(settings_get_bool(key));
+}
+
+/* proto long irssi_settings_get_time(string key)
+ Returns a time setting value */
+PHP_FUNCTION(irssi_settings_get_time)
+{
+ char *key;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ RETURN_LONG(settings_get_bool(key));
+}
+
+/* proto long irssi_settings_get_level(string key)
+ Returns a level setting value */
+PHP_FUNCTION(irssi_settings_get_level)
+{
+ char *key;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ RETURN_LONG(settings_get_level(key));
+}
+
+/* proto long irssi_settings_get_size(string key)
+ Returns a size setting value */
+PHP_FUNCTION(irssi_settings_get_size)
+{
+ char *key;
+ long key_len;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+ &key, &key_len)) {
+ return;
+ }
+
+ RETURN_LONG(settings_get_size(key));
+}
+
@@ -843,6 +1033,18 @@
PHP_FE(irssi_window_find_name, NULL)
PHP_FE(irssi_command_bind, NULL)
PHP_FE(irssi_command_unbind, NULL)
+ PHP_FE(irssi_settings_add_bool, NULL)
+ PHP_FE(irssi_settings_add_int, NULL)
+ PHP_FE(irssi_settings_add_str, NULL)
+ PHP_FE(irssi_settings_add_time, NULL)
+ PHP_FE(irssi_settings_add_level, NULL)
+ PHP_FE(irssi_settings_add_size, NULL)
+ PHP_FE(irssi_settings_get_str, NULL)
+ PHP_FE(irssi_settings_get_int, NULL)
+ PHP_FE(irssi_settings_get_bool, NULL)
+ PHP_FE(irssi_settings_get_time, NULL)
+ PHP_FE(irssi_settings_get_level, NULL)
+ PHP_FE(irssi_settings_get_size, NULL)
{NULL, NULL, NULL}
};