PHP_SUBST(SABLOT_SHARED_LIBADD)
AC_ADD_LIBRARY_WITH_PATH(sablot, $SABLOT_DIR/lib, SABLOT_SHARED_LIBADD)
- AC_ADD_LIBRARY(xmlparse)
- AC_ADD_LIBRARY(xmltok)
+
+ if test -f $SABLOT_DIR/lib/libexpat.a -o -f $SABLOT_DIR/lib/libexpat.so ; then
+ AC_ADD_LIBRARY(expat)
+ AC_CHECK_LIB(sablot, SablotSetEncoding,
+ AC_DEFINE(HAVE_SABLOT_SET_ENCODING,1,[ ]))
+ else
+ AC_ADD_LIBRARY(xmlparse)
+ AC_ADD_LIBRARY(xmltok)
+ fi
AC_DEFINE(HAVE_SABLOT,1,[ ])
PHP_FUNCTION(xslt_run);
PHP_FUNCTION(xslt_set_sax_handler);
PHP_FUNCTION(xslt_set_error_handler);
+#ifdef HAVE_SABLOT_SET_ENCODING
+PHP_FUNCTION(xslt_set_encoding);
+#endif
PHP_FUNCTION(xslt_fetch_result);
PHP_FUNCTION(xslt_free);
PHP_FE(xslt_closelog, NULL)
PHP_FE(xslt_set_sax_handler, NULL)
PHP_FE(xslt_set_error_handler, NULL)
+#ifdef HAVE_SABLOT_SET_ENCODING
+ PHP_FE(xslt_set_encoding, NULL)
+#endif
PHP_FE(xslt_free, NULL)
PHP_FE(xslt_error, NULL)
PHP_FE(xslt_errno, NULL)
}
/* }}} */
+#ifdef HAVE_SABLOT_SET_ENCODING
+/* {{{ proto void xslt_set_encoding(resource xh, string encoding)
+ Sets output encoding to be used for Sablotron regardless of the
+ encoding specified by the stylesheet. To unset, call with
+ encoding_ NULL. */
+PHP_FUNCTION(xslt_set_encoding)
+{
+ zval **xh, **encoding;
+ php_sablot *handle;
+ int ret = 0,
+ loglevel = 0,
+ argc = ZEND_NUM_ARGS();
+ SABLOTLS_FETCH();
+
+ if (argc != 2 ||
+ zend_get_parameters_ex(argc, &xh, &encoding) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ ZEND_FETCH_RESOURCE(handle, php_sablot *, xh, -1, "PHP-Sablotron", le_sablot);
+ convert_to_string_ex(encoding);
+
+ SablotSetEncoding(handle->p, (char *)Z_STRVAL_PP(encoding));
+
+}
+/* }}} */
+#endif
+
/* {{{ _php_sablot_call_handler_function()
Call a sablot call handler function, wrapper for call_user_function() */
static void _php_sablot_call_handler_function(zval *handlerName, int argc, zval **args, char *function_name)