msopacua Sun Nov 10 07:18:02 2002 EDT
Added files:
/php4/ext/xslt/tests xslt_backend_info.phpt
Modified files:
/php4/ext/xslt config.m4 php_sablot.h sablot.c
Log:
- implement xslt_backend_info
- add test for it
- fix some prototypes
Index: php4/ext/xslt/config.m4
diff -u php4/ext/xslt/config.m4:1.29 php4/ext/xslt/config.m4:1.30
--- php4/ext/xslt/config.m4:1.29 Thu Oct 31 16:21:00 2002
+++ php4/ext/xslt/config.m4 Sun Nov 10 07:18:02 2002
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.29 2002/10/31 21:21:00 msopacua Exp $
+dnl $Id: config.m4,v 1.30 2002/11/10 12:18:02 msopacua Exp $
dnl
dnl +------------------------------------------------------------------------------+
dnl | This is where the magic of the extension reallly is. Depending on what |
@@ -58,6 +58,19 @@
fi
if test "$PHP_XSLT_SABLOT" != "no"; then
+ AC_MSG_CHECKING([for sablot-config])
+ if test -x $XSLT_DIR/bin/sablot-config ; then
+ AC_MSG_RESULT(found)
+ AC_DEFINE(HAVE_SABLOT_CONFIG, 1, [Whether the Sablotron config file is found])
+ dnl Use this script to register this information in phpinfo()
+ SABINF_CFLAGS=`$XSLT_DIR/bin/sablot-config --cflags`
+ SABINF_LIBS=`$XSLT_DIR/bin/sablot-config --libs`
+ SABINF_PREFIX=`$XSLT_DIR/bin/sablot-config --prefix`
+ SABINF_ALL="\"Cflags: $SABINF_CFLAGS\nLibs: $SABINF_LIBS\nPrefix:
+$SABINF_PREFIX\""
+ PHP_DEFINE(SAB_INFO, "$SABINF_ALL")
+ else
+ AC_MSG_RESULT(not found)
+ fi
AC_MSG_CHECKING([for Sablotron version])
old_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$XSLT_DIR/include"
Index: php4/ext/xslt/php_sablot.h
diff -u php4/ext/xslt/php_sablot.h:1.16 php4/ext/xslt/php_sablot.h:1.17
--- php4/ext/xslt/php_sablot.h:1.16 Thu Oct 31 16:21:00 2002
+++ php4/ext/xslt/php_sablot.h Sun Nov 10 07:18:02 2002
@@ -50,6 +50,7 @@
#define XSLT_FUNCH_FREE(__var) if (__var) zval_ptr_dtor(&(__var));
#define XSLT_REG_ERRMSG(msg, handle) if (XSLT_ERRSTR(handle))
efree(XSLT_ERRSTR(handle)); \
XSLT_ERRSTR(handle) = estrdup(msg);
+#define XSLT_NO_INFO "No information available."
PHP_MINIT_FUNCTION(xslt);
PHP_MINFO_FUNCTION(xslt);
@@ -72,7 +73,7 @@
#endif
PHP_FUNCTION(xslt_backend_version);
PHP_FUNCTION(xslt_backend_name);
-
+PHP_FUNCTION(xslt_backend_info);
struct scheme_handlers {
zval *sh_get_all;
Index: php4/ext/xslt/sablot.c
diff -u php4/ext/xslt/sablot.c:1.67 php4/ext/xslt/sablot.c:1.68
--- php4/ext/xslt/sablot.c:1.67 Sat Nov 2 10:01:42 2002
+++ php4/ext/xslt/sablot.c Sun Nov 10 07:18:02 2002
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sablot.c,v 1.67 2002/11/02 15:01:42 msopacua Exp $ */
+/* $Id: sablot.c,v 1.68 2002/11/10 12:18:02 msopacua Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -32,6 +32,9 @@
#if HAVE_SABLOT_BACKEND
+#ifdef HAVE_SABLOT_CONFIG
+#include "php_sab_info.h"
+#endif
#include <sablot.h>
#include <string.h>
@@ -99,6 +102,7 @@
#endif
PHP_FE(xslt_backend_version, NULL)
PHP_FE(xslt_backend_name, NULL)
+ PHP_FE(xslt_backend_info, NULL)
{NULL, NULL, NULL}
};
/* }}} */
@@ -193,6 +197,9 @@
#ifdef SAB_VERSION
php_info_print_table_row(2, "Sablotron Version", SAB_VERSION);
#endif
+#ifdef HAVE_SABLOT_CONFIG
+ php_info_print_table_row(2, "Sablotron Information", SAB_INFO);
+#endif
php_info_print_table_end();
}
/* }}} */
@@ -758,7 +765,7 @@
/* }}} */
#endif
-/* {{{ proto void xslt_backend_version()
+/* {{{ proto string xslt_backend_version()
Returns the version number of Sablotron (if available) */
PHP_FUNCTION(xslt_backend_version)
{
@@ -770,7 +777,7 @@
}
/* }}} */
-/* {{{ proto void xslt_backend_name()
+/* {{{ proto string xslt_backend_name()
Returns the name of the Backend (here "Sablotron")*/
PHP_FUNCTION(xslt_backend_name)
{
@@ -778,6 +785,17 @@
}
/* }}} */
+/* {{{ proto string xslt_backend_info()
+ Returns the information on the compilation settings of the backend */
+PHP_FUNCTION(xslt_backend_info)
+{
+#ifdef HAVE_SABLOT_CONFIG
+ RETURN_STRING(SAB_INFO, strlen(SAB_INFO));
+#else
+ RETURN_STRING(XSLT_NO_INFO, strlen(XSLT_NO_INFO));
+#endif
+}
+/* }}} */
/* {{{ free_processor()
Free an XSLT processor */
static void free_processor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
Index: php4/ext/xslt/tests/xslt_backend_info.phpt
+++ php4/ext/xslt/tests/xslt_backend_info.phpt
--TEST--
xslt_backend_info: examples for detection of backend features
--SKIPIF--
<?php // vim600: noet sw=4 ts=4 syn=php ai si tw=78
include("skipif.inc");
if(!function_exists('xslt_backend_info')) {
die("skip\n");
}
// Yeah-right-but-still
if(xslt_backend_name() != "Sablotron") {
die("skip This test currently only supports Sablotron");
}
if("No information available" == xslt_backend_info()) {
die("skip Information could not be detected.");
}
?>
--FILE--
<?php
/*
* Test xslt_backend_info: basically this test is provided as a how-to for
* x-platform packages, which rely on certain features which may or may
* not be available depending on what has been linked into the backend.
*/
$tmp = explode("\n", xslt_backend_info());
$info = array();
foreach($tmp AS $line) {
list($key, $value) = explode(": ", $line, 2);
$info[strtolower($key)] = $value;
}
if(FALSE === strstr($info['libs'], " -lexpat")) {
die("You're configuration is missing expat, which conflicts with sanity.");
}
if(FALSE === strstr($info['libs'], " -liconv")) {
echo("You don't have iconv support\n");
} else {
echo("You have iconv support\n");
}
if(FALSE === strstr($info['libs'], " -ljs")) {
echo("You don't have JavaScript support\n");
} else {
echo("You have JavaScript support\n");
}
?>
--EXPECTREGEX--
You (don't )?have iconv support
You (don't )?have JavaScript support
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php