- run ext sources through conv_proto

- add necessary phpext_*_ptr
This commit is contained in:
Sascha Schumann 1999-05-21 10:06:25 +00:00
parent 4fe8fe715e
commit b57dc27595
66 changed files with 1615 additions and 1317 deletions

View file

@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP HTML Embedded Scripting Language Version 3.0 |
+----------------------------------------------------------------------+
| Copyright (c) 1997,1998 PHP Development Team (See Credits file) |
| Copyright (c) 1997-1999 PHP Development Team (See Credits file) |
+----------------------------------------------------------------------+
| This program is free software; you can redistribute it and/or modify |
| it under the terms of one of the following licenses: |
@ -23,7 +23,7 @@
| If you did not, or have any questions about PHP licensing, please |
| contact core@php.net. |
+----------------------------------------------------------------------+
| Authors: Stig Sæther Bakken <ssb@guardian.no> |
| Authors: Stig Sæther Bakken <ssb@fast.no> |
+----------------------------------------------------------------------+
*/
@ -109,13 +109,15 @@ static void xml_destroy_parser(xml_parser *);
static void xml_set_handler(char **, pval *);
inline static unsigned short xml_encode_iso_8859_1(unsigned char);
inline static char xml_decode_iso_8859_1(unsigned short);
inline static unsigned short xml_encode_us_ascii(char);
inline static unsigned short xml_encode_us_ascii(unsigned char);
inline static char xml_decode_us_ascii(unsigned short);
static XML_Char *xml_utf8_encode(const char *, int, int *, const XML_Char *);
static char *xml_utf8_decode(const XML_Char *, int, int *, const XML_Char *);
static pval *xml_call_handler(xml_parser *, char *, int, pval **);
static pval *php3i_xmlcharpval(const XML_Char *, int, const XML_Char *);
static int php3i_xmlcharlen(const XML_Char *);
static void php3i_add_to_info(xml_parser *parser,char *name);
void php3i_xml_startElementHandler(void *, const char *, const char **);
void php3i_xml_endElementHandler(void *, const char *);
@ -139,6 +141,7 @@ function_entry xml_functions[] = {
PHP_FE(xml_set_notation_decl_handler, NULL)
PHP_FE(xml_set_external_entity_ref_handler, NULL)
PHP_FE(xml_parse, NULL)
PHP_FE(xml_parse_into_struct, NULL)
PHP_FE(xml_get_error_code, NULL)
PHP_FE(xml_error_string, NULL)
PHP_FE(xml_get_current_line_number, NULL)
@ -229,6 +232,9 @@ int php3_minit_xml(INIT_FUNC_ARGS)
REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP3_XML_OPTION_CASE_FOLDING, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP3_XML_OPTION_TARGET_ENCODING, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP3_XML_OPTION_SKIP_TAGSTART, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP3_XML_OPTION_SKIP_WHITE, CONST_CS|CONST_PERSISTENT);
return SUCCESS;
}
@ -311,6 +317,9 @@ xml_destroy_parser(xml_parser *parser)
if (parser->parser) {
XML_ParserFree(parser->parser);
}
if (parser->ltags) {
efree(parser->ltags);
}
if (parser->startElementHandler) {
efree(parser->startElementHandler);
}
@ -403,7 +412,6 @@ xml_call_handler(xml_parser *parser, char *funcName, int argc, pval **argv)
inline static unsigned short
xml_encode_iso_8859_1(unsigned char c)
{
php3_printf("c=%d ", c);
return (unsigned short)c;
}
@ -420,7 +428,7 @@ xml_decode_iso_8859_1(unsigned short c)
/* {{{ xml_encode_us_ascii() */
inline static unsigned short
xml_encode_us_ascii(char c)
xml_encode_us_ascii(unsigned char c)
{
return (unsigned short)c;
}
@ -459,7 +467,7 @@ xml_utf8_encode(const char *s, int len, int *newlen, const XML_Char *encoding)
int pos = len;
char *newbuf;
unsigned short c;
unsigned short (*encoder)(char) = NULL;
unsigned short (*encoder)(unsigned char) = NULL;
xml_encoding *enc = xml_get_encoding(encoding);
*newlen = 0;
@ -511,7 +519,7 @@ static char *
xml_utf8_decode(const XML_Char *s, int len, int *newlen, const XML_Char *encoding)
{
int pos = len;
char *newbuf = emalloc(len);
char *newbuf = emalloc(len + 1);
unsigned short c;
char (*decoder)(unsigned short) = NULL;
xml_encoding *enc = xml_get_encoding(encoding);
@ -526,6 +534,7 @@ xml_utf8_decode(const XML_Char *s, int len, int *newlen, const XML_Char *encodin
*/
memcpy(newbuf, s, len);
*newlen = len;
newbuf[*newlen] = '\0';
return newbuf;
}
while (pos > 0) {
@ -550,8 +559,9 @@ xml_utf8_decode(const XML_Char *s, int len, int *newlen, const XML_Char *encodin
++*newlen;
}
if (*newlen < len) {
newbuf = erealloc(newbuf, *newlen);
newbuf = erealloc(newbuf, *newlen + 1);
}
newbuf[*newlen] = '\0';
return newbuf;
}
/* }}} */
@ -588,40 +598,125 @@ static int php3i_xmlcharlen(const XML_Char *s)
}
/* }}} */
/* {{{ php3i_xml_startElementHandler() */
/* {{{ php3i_add_to_info */
static void php3i_add_to_info(xml_parser *parser,char *name)
{
pval *element, values;
if (! parser->info) {
return;
}
if (_php3_hash_find(parser->info->value.ht,name,strlen(name) + 1,(void **) &element) == FAILURE) {
if (array_init(&values) == FAILURE) {
php3_error(E_ERROR, "Unable to initialize array");
return;
}
_php3_hash_update(parser->info->value.ht, name, strlen(name)+1, (void *) &values, sizeof(pval), (void **) &element);
}
add_next_index_long(element,parser->curtag);
parser->curtag++;
}
/* }}} */
/* {{{ php3i_xml_startElementHandler() */
void php3i_xml_startElementHandler(void *userData, const char *name,
const char **attributes)
{
xml_parser *parser = (xml_parser *)userData;
const char **attrs = attributes;
XML_TLS_VARS;
if (parser && parser->startElementHandler) {
if (parser) {
pval *retval, *args[3];
parser->level++;
if (parser->case_folding) {
name = _php3_strtoupper(estrdup(name));
}
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_string_pval(name);
args[2] = emalloc(sizeof(pval));
array_init(args[2]);
while (attributes && *attributes) {
char *key = (char *)attributes[0];
char *value = (char *)attributes[1];
if (parser->case_folding) {
key = _php3_strtoupper(estrdup(key));
if (parser->startElementHandler) {
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_string_pval(name);
args[2] = emalloc(sizeof(pval));
array_init(args[2]);
while (attributes && *attributes) {
char *key = (char *)attributes[0];
char *value = (char *)attributes[1];
char *decoded_value;
int decoded_len;
if (parser->case_folding) {
key = _php3_strtoupper(estrdup(key));
}
decoded_value = xml_utf8_decode(value, strlen(value),
&decoded_len,
parser->target_encoding);
add_assoc_string(args[2], key, decoded_value, 0);
if (parser->case_folding) {
efree(key);
}
attributes += 2;
}
add_assoc_string(args[2], key, value, 1);
if (parser->case_folding) {
efree(key);
if ((retval = xml_call_handler(parser, parser->startElementHandler, 3, args))) {
php3tls_pval_destructor(retval);
efree(retval);
}
attributes += 2;
}
if ((retval = xml_call_handler(parser, parser->startElementHandler, 3, args))) {
php3tls_pval_destructor(retval);
efree(retval);
}
if (parser->data) {
pval tag, atr;
int atcnt = 0;
array_init(&tag);
array_init(&atr);
php3i_add_to_info(parser,((char *) name) + parser->toffset);
add_assoc_string(&tag,"tag",((char *) name) + parser->toffset,1); /* cast to avoid gcc-warning */
add_assoc_string(&tag,"type","open",1);
add_assoc_long(&tag,"level",parser->level);
parser->ltags[parser->level-1] = estrdup(name);
parser->lastwasopen = 1;
attributes = attrs;
while (attributes && *attributes) {
char *key = (char *)attributes[0];
char *value = (char *)attributes[1];
char *decoded_value;
int decoded_len;
if (parser->case_folding) {
key = _php3_strtoupper(estrdup(key));
}
decoded_value = xml_utf8_decode(value, strlen(value),
&decoded_len,
parser->target_encoding);
add_assoc_stringl(&atr,key,decoded_value,decoded_len,0);
atcnt++;
if (parser->case_folding) {
efree(key);
}
attributes += 2;
}
if (atcnt) {
_php3_hash_add(tag.value.ht,"attributes",sizeof("attributes"),&atr,sizeof(pval),NULL);
} else {
php3tls_pval_destructor(&atr);
}
_php3_hash_next_index_insert(parser->data->value.ht,&tag,sizeof(pval),(void *) &parser->ctag);
}
if (parser->case_folding) {
efree((char *)name);
}
@ -636,21 +731,50 @@ void php3i_xml_endElementHandler(void *userData, const char *name)
xml_parser *parser = (xml_parser *)userData;
XML_TLS_VARS;
if (parser && parser->endElementHandler) {
if (parser) {
pval *retval, *args[2];
if (parser->case_folding) {
name = _php3_strtoupper(estrdup(name));
}
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_string_pval(name);
if ((retval = xml_call_handler(parser, parser->endElementHandler, 2, args))) {
php3tls_pval_destructor(retval);
efree(retval);
if (parser->endElementHandler) {
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_string_pval(name);
if ((retval = xml_call_handler(parser, parser->endElementHandler, 2, args))) {
php3tls_pval_destructor(retval);
efree(retval);
}
}
if (parser->data) {
pval tag;
if (parser->lastwasopen) {
add_assoc_string(parser->ctag,"type","complete",1);
} else {
array_init(&tag);
php3i_add_to_info(parser,((char *) name) + parser->toffset);
add_assoc_string(&tag,"tag",((char *) name) + parser->toffset,1); /* cast to avoid gcc-warning */
add_assoc_string(&tag,"type","close",1);
add_assoc_long(&tag,"level",parser->level);
_php3_hash_next_index_insert(parser->data->value.ht,&tag,sizeof(pval),NULL);
}
parser->lastwasopen = 0;
}
if (parser->case_folding) {
efree((char *)name);
}
if (parser->ltags) {
efree(parser->ltags[parser->level-1]);
}
parser->level--;
}
}
@ -662,14 +786,60 @@ void php3i_xml_characterDataHandler(void *userData, const XML_Char *s, int len)
xml_parser *parser = (xml_parser *)userData;
XML_TLS_VARS;
if (parser && parser->characterDataHandler) {
if (parser) {
pval *retval, *args[2];
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_xmlcharpval(s, len, parser->target_encoding);
if ((retval = xml_call_handler(parser, parser->characterDataHandler, 2, args))) {
php3tls_pval_destructor(retval);
efree(retval);
if (parser->characterDataHandler) {
args[0] = php3i_long_pval(parser->index);
args[1] = php3i_xmlcharpval(s, len, parser->target_encoding);
if ((retval = xml_call_handler(parser, parser->characterDataHandler, 2, args))) {
php3tls_pval_destructor(retval);
efree(retval);
}
}
if (parser->data) {
int i;
int doprint = 0;
char *decoded_value;
int decoded_len;
decoded_value = xml_utf8_decode(s,len,&decoded_len,parser->target_encoding);
for (i = 0; i < decoded_len; i++) {
switch (decoded_value[i]) {
case ' ':
case '\t':
case '\n':
continue;
default:
doprint = 1;
break;
}
if (doprint) {
break;
}
}
if (doprint || (! parser->skipwhite)) {
if (parser->lastwasopen) {
add_assoc_string(parser->ctag,"value",decoded_value,0);
} else {
pval tag;
array_init(&tag);
php3i_add_to_info(parser,parser->ltags[parser->level-1] + parser->toffset);
add_assoc_string(&tag,"tag",parser->ltags[parser->level-1] + parser->toffset,1);
add_assoc_string(&tag,"value",decoded_value,0);
add_assoc_string(&tag,"type","cdata",1);
add_assoc_long(&tag,"level",parser->level);
_php3_hash_next_index_insert(parser->data->value.ht,&tag,sizeof(pval),NULL);
}
} else {
efree(decoded_value);
}
}
}
}
@ -813,8 +983,8 @@ php3i_xml_externalEntityRefHandler(XML_Parser parserPtr,
/************************* EXTENSION FUNCTIONS *************************/
/* {{{ int xml_parser_create() */
/* {{{ proto int xml_parser_create()
Create an XML parser */
PHP_FUNCTION(xml_parser_create)
{
xml_parser *parser;
@ -857,13 +1027,6 @@ PHP_FUNCTION(xml_parser_create)
parser->parser = XML_ParserCreate(encoding);
parser->target_encoding = encoding;
XML_SetUserData(parser->parser, parser);
XML_SetElementHandler(parser->parser, php3i_xml_startElementHandler, php3i_xml_endElementHandler);
XML_SetCharacterDataHandler(parser->parser, php3i_xml_characterDataHandler);
XML_SetProcessingInstructionHandler(parser->parser, php3i_xml_processingInstructionHandler);
XML_SetDefaultHandler(parser->parser, php3i_xml_defaultHandler);
XML_SetUnparsedEntityDeclHandler(parser->parser, php3i_xml_unparsedEntityDeclHandler);
XML_SetNotationDeclHandler(parser->parser, php3i_xml_notationDeclHandler);
XML_SetExternalEntityRefHandler(parser->parser, php3i_xml_externalEntityRefHandler);
id = php3_list_insert(parser, XML_GLOBAL(php3_xml_module).le_xml_parser);
parser = xml_get_parser(id, thisfunc, list);
parser->index = id;
@ -871,10 +1034,10 @@ PHP_FUNCTION(xml_parser_create)
RETVAL_LONG(id);
}
/* }}} */
/* {{{ int xml_set_element_handler(int pind, string shdl, string ehdl) */
/* {{{ proto int xml_set_element_handler(int pind, string shdl, string ehdl)
Set up start and end element handlers */
PHP_FUNCTION(xml_set_element_handler)
{
xml_parser *parser;
@ -894,12 +1057,13 @@ PHP_FUNCTION(xml_set_element_handler)
}
xml_set_handler(&parser->startElementHandler, shdl);
xml_set_handler(&parser->endElementHandler, ehdl);
XML_SetElementHandler(parser->parser, php3i_xml_startElementHandler, php3i_xml_endElementHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_character_data_handler(int pind, string hdl) */
/* {{{ proto int xml_set_character_data_handler(int pind, string hdl)
Set up character data handler */
PHP_FUNCTION(xml_set_character_data_handler)
{
xml_parser *parser;
@ -916,12 +1080,13 @@ PHP_FUNCTION(xml_set_character_data_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->characterDataHandler, hdl);
XML_SetCharacterDataHandler(parser->parser, php3i_xml_characterDataHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_processing_instruction_handler(int pind, string hdl) */
/* {{{ proto int xml_set_processing_instruction_handler(int pind, string hdl)
Set up processing instruction (PI) handler */
PHP_FUNCTION(xml_set_processing_instruction_handler)
{
xml_parser *parser;
@ -938,12 +1103,13 @@ PHP_FUNCTION(xml_set_processing_instruction_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->processingInstructionHandler, hdl);
XML_SetProcessingInstructionHandler(parser->parser, php3i_xml_processingInstructionHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_default_handler(int pind, string hdl) */
/* {{{ proto int xml_set_default_handler(int pind, string hdl)
Set up default handler */
PHP_FUNCTION(xml_set_default_handler)
{
xml_parser *parser;
@ -960,12 +1126,13 @@ PHP_FUNCTION(xml_set_default_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->defaultHandler, hdl);
XML_SetDefaultHandler(parser->parser, php3i_xml_defaultHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_unparsed_entity_decl_handler(int pind, string hdl) */
/* {{{ proto int xml_set_unparsed_entity_decl_handler(int pind, string hdl)
Set up unparsed entity declaration handler */
PHP_FUNCTION(xml_set_unparsed_entity_decl_handler)
{
xml_parser *parser;
@ -982,12 +1149,13 @@ PHP_FUNCTION(xml_set_unparsed_entity_decl_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->unparsedEntityDeclHandler, hdl);
XML_SetUnparsedEntityDeclHandler(parser->parser, php3i_xml_unparsedEntityDeclHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_notation_decl_handler(int pind, string hdl) */
/* {{{ proto int xml_set_notation_decl_handler(int pind, string hdl)
Set up notation declaration handler */
PHP_FUNCTION(xml_set_notation_decl_handler)
{
xml_parser *parser;
@ -1004,12 +1172,13 @@ PHP_FUNCTION(xml_set_notation_decl_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->notationDeclHandler, hdl);
XML_SetNotationDeclHandler(parser->parser, php3i_xml_notationDeclHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_set_external_entity_ref_handler(int pind, string hdl) */
/* {{{ proto int xml_set_external_entity_ref_handler(int pind, string hdl)
Set up external entity reference handler */
PHP_FUNCTION(xml_set_external_entity_ref_handler)
{
xml_parser *parser;
@ -1026,12 +1195,13 @@ PHP_FUNCTION(xml_set_external_entity_ref_handler)
RETURN_FALSE;
}
xml_set_handler(&parser->externalEntityRefHandler, hdl);
XML_SetExternalEntityRefHandler(parser->parser, php3i_xml_externalEntityRefHandler);
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_parse(int pind, string data[, int isFinal]) */
/* {{{ proto int xml_parse(int pind, string data[, int isFinal])
Start parsing an XML document */
PHP_FUNCTION(xml_parse)
{
xml_parser *parser;
@ -1055,14 +1225,64 @@ PHP_FUNCTION(xml_parse)
if (parser == NULL) {
RETURN_FALSE;
}
fflush(stdout);
/* fflush(stdout); uups, that can't be serious?!?!?*/
ret = XML_Parse(parser->parser, data->value.str.val, data->value.str.len, isFinal);
RETVAL_LONG(ret);
}
/* }}} */
/* {{{ int xml_get_error_code(int pind) */
/* {{{ proto int xml_parse_into_struct(int pind, string data,array &struct,array &index)
Parsing a XML document */
PHP_FUNCTION(xml_parse_into_struct)
{
xml_parser *parser;
pval *pind, *data, *xdata,*info = 0;
int argc, ret;
XML_TLS_VARS;
argc = ARG_COUNT(ht);
if (getParameters(ht, 4, &pind, &data, &xdata,&info) == SUCCESS) {
if (!ParameterPassedByReference(ht, 4)) {
php3_error(E_WARNING, "Array to be filled with values must be passed by reference.");
RETURN_FALSE;
}
array_init(info);
} else if (getParameters(ht, 3, &pind, &data, &xdata) == FAILURE) {
WRONG_PARAM_COUNT;
}
if (!ParameterPassedByReference(ht, 3)) {
php3_error(E_WARNING, "Array to be filled with values must be passed by reference.");
RETURN_FALSE;
}
convert_to_long(pind);
convert_to_string(data);
array_init(xdata);
parser = xml_get_parser(pind->value.lval, "XML_Parse_Into_Struct", list);
if (parser == NULL) {
RETURN_FALSE;
}
parser->data = xdata;
parser->info = info;
parser->level = 0;
parser->ltags = emalloc(XML_MAXLEVEL * sizeof(char *));
XML_SetDefaultHandler(parser->parser, php3i_xml_defaultHandler);
XML_SetElementHandler(parser->parser, php3i_xml_startElementHandler, php3i_xml_endElementHandler);
XML_SetCharacterDataHandler(parser->parser, php3i_xml_characterDataHandler);
ret = XML_Parse(parser->parser, data->value.str.val, data->value.str.len, 1);
RETVAL_LONG(ret);
}
/* }}} */
/* {{{ proto int xml_get_error_code(int pind)
Get XML parser error code */
PHP_FUNCTION(xml_get_error_code)
{
xml_parser *parser;
@ -1079,10 +1299,10 @@ PHP_FUNCTION(xml_get_error_code)
}
RETVAL_LONG((long)XML_GetErrorCode(parser->parser));
}
/* }}} */
/* {{{ string xml_error_string(int code) */
/* {{{ proto string xml_error_string(int code)
Get XML parser error string */
PHP_FUNCTION(xml_error_string)
{
pval *code;
@ -1098,10 +1318,10 @@ PHP_FUNCTION(xml_error_string)
RETVAL_STRING(str, 1);
}
}
/* }}} */
/* {{{ int xml_get_current_line_number(int pind) */
/* {{{ proto int xml_get_current_line_number(int pind)
Get current line number for an XML parser */
PHP_FUNCTION(xml_get_current_line_number)
{
xml_parser *parser;
@ -1118,10 +1338,11 @@ PHP_FUNCTION(xml_get_current_line_number)
}
RETVAL_LONG(XML_GetCurrentLineNumber(parser->parser));
}
/* }}} */
/* {{{ int xml_get_current_column_number(int pind) */
/* {{{ proto int xml_get_current_column_number(int pind)
Get current column number for an XML parser
*/
PHP_FUNCTION(xml_get_current_column_number)
{
xml_parser *parser;
@ -1138,10 +1359,10 @@ PHP_FUNCTION(xml_get_current_column_number)
}
RETVAL_LONG(XML_GetCurrentColumnNumber(parser->parser));
}
/* }}} */
/* {{{ int xml_get_current_byte_index(int pind) */
/* {{{ proto int xml_get_current_byte_index(int pind)
Get current byte index for an XML parser */
PHP_FUNCTION(xml_get_current_byte_index)
{
xml_parser *parser;
@ -1158,10 +1379,10 @@ PHP_FUNCTION(xml_get_current_byte_index)
}
RETVAL_LONG(XML_GetCurrentByteIndex(parser->parser));
}
/* }}} */
/* {{{ int xml_parser_free(int pind) */
/* {{{ proto int xml_parser_free(int pind)
Free an XML parser */
PHP_FUNCTION(xml_parser_free)
{
pval *pind;
@ -1176,10 +1397,10 @@ PHP_FUNCTION(xml_parser_free)
}
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_parser_set_option(int pind, int option, mixed value) */
/* {{{ proto int xml_parser_set_option(int pind, int option, mixed value)
Set options in an XML parser */
PHP_FUNCTION(xml_parser_set_option)
{
xml_parser *parser;
@ -1201,6 +1422,14 @@ PHP_FUNCTION(xml_parser_set_option)
convert_to_long(val);
parser->case_folding = val->value.lval;
break;
case PHP3_XML_OPTION_SKIP_TAGSTART:
convert_to_long(val);
parser->toffset = val->value.lval;
break;
case PHP3_XML_OPTION_SKIP_WHITE:
convert_to_long(val);
parser->skipwhite = val->value.lval;
break;
case PHP3_XML_OPTION_TARGET_ENCODING: {
xml_encoding *enc = xml_get_encoding(val->value.str.val);
if (enc == NULL) {
@ -1218,10 +1447,10 @@ PHP_FUNCTION(xml_parser_set_option)
}
RETVAL_TRUE;
}
/* }}} */
/* {{{ int xml_parser_get_option(int pind, int option) */
/* {{{ proto int xml_parser_get_option(int pind, int option)
Get options from an XML parser */
PHP_FUNCTION(xml_parser_get_option)
{
xml_parser *parser;
@ -1252,10 +1481,10 @@ PHP_FUNCTION(xml_parser_get_option)
}
RETVAL_FALSE;
}
/* }}} */
/* {{{ string utf8_encode(string data) */
/* {{{ proto string utf8_encode(string data)
Encodes an ISO-8859-1 string to UTF-8 */
PHP_FUNCTION(utf8_encode)
{
pval *arg;
@ -1273,10 +1502,10 @@ PHP_FUNCTION(utf8_encode)
}
RETVAL_STRINGL(encoded, len, 0);
}
/* }}} */
/* {{{ string utf8_decode(string data) */
/* {{{ proto string utf8_decode(string data)
Converts a UTF-8 encoded string to ISO-8859-1 */
PHP_FUNCTION(utf8_decode)
{
pval *arg;
@ -1294,7 +1523,6 @@ PHP_FUNCTION(utf8_decode)
}
RETVAL_STRINGL(decoded, len, 0);
}
/* }}} */
#endif