Skip to content

Commit 06f448c

Browse files
committed
Export expat compat functions.
"Implement" XML_GetCurrentByteCount(); probably not 100% correct, but the only usage of it is by xmlrpc extension when reporting an error; it should be safe.
1 parent 9ecd238 commit 06f448c

File tree

2 files changed

+55
-45
lines changed

2 files changed

+55
-45
lines changed

ext/xml/compat.c

+32-23
Original file line numberDiff line numberDiff line change
@@ -377,13 +377,13 @@ php_xml_compat_handlers = {
377377
1
378378
};
379379

380-
XML_Parser
380+
PHPAPI XML_Parser
381381
XML_ParserCreate(const XML_Char *encoding)
382382
{
383383
return XML_ParserCreate_MM(encoding, NULL, NULL);
384384
}
385385

386-
XML_Parser
386+
PHPAPI XML_Parser
387387
XML_ParserCreateNS(const XML_Char *encoding, const XML_Char sep)
388388
{
389389
XML_Char tmp[2];
@@ -392,7 +392,7 @@ XML_ParserCreateNS(const XML_Char *encoding, const XML_Char sep)
392392
return XML_ParserCreate_MM(encoding, NULL, tmp);
393393
}
394394

395-
XML_Parser
395+
PHPAPI XML_Parser
396396
XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *sep)
397397
{
398398
XML_Parser parser;
@@ -422,86 +422,86 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m
422422
return parser;
423423
}
424424

425-
void
425+
PHPAPI void
426426
XML_SetUserData(XML_Parser parser, void *user)
427427
{
428428
parser->user = user;
429429
}
430430

431-
void *
431+
PHPAPI void *
432432
XML_GetUserData(XML_Parser parser)
433433
{
434434
return parser->user;
435435
}
436436

437-
void
437+
PHPAPI void
438438
XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)
439439
{
440440
parser->h_start_element = start;
441441
parser->h_end_element = end;
442442
}
443443

444-
void
444+
PHPAPI void
445445
XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler cdata)
446446
{
447447
parser->h_cdata = cdata;
448448
}
449449

450-
void
450+
PHPAPI void
451451
XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler pi)
452452
{
453453
parser->h_pi = pi;
454454
}
455455

456-
void
456+
PHPAPI void
457457
XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler comment)
458458
{
459459
parser->h_comment = comment;
460460
}
461461

462-
void
462+
PHPAPI void
463463
XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler d)
464464
{
465465
parser->h_default = d;
466466
}
467467

468-
void
468+
PHPAPI void
469469
XML_SetUnparsedEntityDeclHandler(XML_Parser parser, XML_UnparsedEntityDeclHandler unparsed_decl)
470470
{
471471
parser->h_unparsed_entity_decl = unparsed_decl;
472472
}
473473

474-
void
474+
PHPAPI void
475475
XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler notation_decl)
476476
{
477477
parser->h_notation_decl = notation_decl;
478478
}
479479

480-
void
480+
PHPAPI void
481481
XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler ext_entity)
482482
{
483483
parser->h_external_entity_ref = ext_entity;
484484
}
485485

486-
void
486+
PHPAPI void
487487
XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start_ns)
488488
{
489489
parser->h_start_ns = start_ns;
490490
}
491491

492-
void
492+
PHPAPI void
493493
XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler end_ns)
494494
{
495495
parser->h_end_ns = end_ns;
496496
}
497497

498-
int
498+
PHPAPI int
499499
XML_Parse(XML_Parser parser, const XML_Char *data, int data_len, int is_final)
500500
{
501501
return !xmlParseChunk(parser->parser, data, data_len, is_final);
502502
}
503503

504-
int
504+
PHPAPI int
505505
XML_GetErrorCode(XML_Parser parser)
506506
{
507507
return parser->parser->errNo;
@@ -606,7 +606,7 @@ const XML_Char *error_mapping[] = {
606606
"XML_ERR_NO_DTD"
607607
};
608608

609-
const XML_Char *
609+
PHPAPI const XML_Char *
610610
XML_ErrorString(int code)
611611
{
612612
if (code < 0 || code >= (int)sizeof(error_mapping)) {
@@ -615,26 +615,35 @@ XML_ErrorString(int code)
615615
return error_mapping[code];
616616
}
617617

618-
int
618+
PHPAPI int
619619
XML_GetCurrentLineNumber(XML_Parser parser)
620620
{
621621
return parser->parser->input->line;
622622
}
623623

624-
int
624+
PHPAPI int
625625
XML_GetCurrentColumnNumber(XML_Parser parser)
626626
{
627627
return parser->parser->input->col;
628628
}
629629

630-
int
630+
PHPAPI int
631631
XML_GetCurrentByteIndex(XML_Parser parser)
632632
{
633633
return parser->parser->input->consumed +
634634
(parser->parser->input->cur - parser->parser->input->base);
635635
}
636636

637-
const XML_Char *XML_ExpatVersion(void)
637+
PHPAPI int
638+
XML_GetCurrentByteCount(XML_Parser parser)
639+
{
640+
/* WARNING: this is identical to ByteIndex; it should probably
641+
* be different */
642+
return parser->parser->input->consumed +
643+
(parser->parser->input->cur - parser->parser->input->base);
644+
}
645+
646+
PHPAPI const XML_Char *XML_ExpatVersion(void)
638647
{
639648
return "1.0";
640649
}
@@ -662,7 +671,7 @@ _free_ns_pointer(void *ptr, xmlChar *name)
662671
efree(ptr);
663672
}
664673

665-
void
674+
PHPAPI void
666675
XML_ParserFree(XML_Parser parser)
667676
{
668677
if (parser->use_namespace) {

ext/xml/expat_compat.h

+23-22
Original file line numberDiff line numberDiff line change
@@ -113,28 +113,29 @@ enum XML_Content_Type {
113113
XML_CTYPE_SEQ
114114
};
115115

116-
XML_Parser XML_ParserCreate(const XML_Char *);
117-
XML_Parser XML_ParserCreateNS(const XML_Char *, const XML_Char);
118-
XML_Parser XML_ParserCreate_MM(const XML_Char *, const XML_Memory_Handling_Suite *, const XML_Char *);
119-
void XML_SetUserData(XML_Parser, void *);
120-
void *XML_GetUserData(XML_Parser);
121-
void XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler);
122-
void XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler);
123-
void XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler);
124-
void XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler);
125-
void XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler);
126-
void XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler);
127-
void XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler);
128-
void XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler);
129-
void XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler);
130-
int XML_Parse(XML_Parser, const XML_Char *, int data_len, int is_final);
131-
int XML_GetErrorCode(XML_Parser);
132-
const XML_Char *XML_ErrorString(int);
133-
int XML_GetCurrentLineNumber(XML_Parser);
134-
int XML_GetCurrentColumnNumber(XML_Parser);
135-
int XML_GetCurrentByteIndex(XML_Parser);
136-
const XML_Char *XML_ExpatVersion(void);
137-
void XML_ParserFree(XML_Parser);
116+
PHPAPI XML_Parser XML_ParserCreate(const XML_Char *);
117+
PHPAPI XML_Parser XML_ParserCreateNS(const XML_Char *, const XML_Char);
118+
PHPAPI XML_Parser XML_ParserCreate_MM(const XML_Char *, const XML_Memory_Handling_Suite *, const XML_Char *);
119+
PHPAPI void XML_SetUserData(XML_Parser, void *);
120+
PHPAPI void *XML_GetUserData(XML_Parser);
121+
PHPAPI void XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler);
122+
PHPAPI void XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler);
123+
PHPAPI void XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler);
124+
PHPAPI void XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler);
125+
PHPAPI void XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler);
126+
PHPAPI void XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler);
127+
PHPAPI void XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler);
128+
PHPAPI void XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler);
129+
PHPAPI void XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler);
130+
PHPAPI int XML_Parse(XML_Parser, const XML_Char *, int data_len, int is_final);
131+
PHPAPI int XML_GetErrorCode(XML_Parser);
132+
PHPAPI const XML_Char *XML_ErrorString(int);
133+
PHPAPI int XML_GetCurrentLineNumber(XML_Parser);
134+
PHPAPI int XML_GetCurrentColumnNumber(XML_Parser);
135+
PHPAPI int XML_GetCurrentByteIndex(XML_Parser);
136+
PHPAPI int XML_GetCurrentByteCount(XML_Parser);
137+
PHPAPI const XML_Char *XML_ExpatVersion(void);
138+
PHPAPI void XML_ParserFree(XML_Parser);
138139

139140
#elif defined(HAVE_LIBEXPAT)
140141
#include <expat.h>

0 commit comments

Comments
 (0)