- valid.c: applied small patch from Gary Pennington, reindented
some part of the code.
Daniel
diff --git a/valid.c b/valid.c
index f6590cc..57f9561 100644
--- a/valid.c
+++ b/valid.c
@@ -1901,11 +1901,11 @@
*/
static void
xmlFreeRef(xmlLinkPtr lk) {
- xmlRefPtr ref = (xmlRefPtr)xmlLinkGetData(lk);
- if (ref == NULL) return;
- if (ref->value != NULL)
- xmlFree((xmlChar *)ref->value);
- xmlFree(ref);
+ xmlRefPtr ref = (xmlRefPtr)xmlLinkGetData(lk);
+ if (ref == NULL) return;
+ if (ref->value != NULL)
+ xmlFree((xmlChar *)ref->value);
+ xmlFree(ref);
}
/**
@@ -1916,8 +1916,8 @@
*/
static void
xmlFreeRefList(xmlListPtr list_ref) {
- if (list_ref == NULL) return;
- xmlListDelete(list_ref);
+ if (list_ref == NULL) return;
+ xmlListDelete(list_ref);
}
/**
@@ -1930,15 +1930,15 @@
static int
xmlWalkRemoveRef(const void *data, const void *user)
{
- xmlAttrPtr attr0 = ((xmlRefPtr)data)->attr;
- xmlAttrPtr attr1 = ((xmlRemoveMemoPtr)user)->ap;
- xmlListPtr ref_list = ((xmlRemoveMemoPtr)user)->l;
+ xmlAttrPtr attr0 = ((xmlRefPtr)data)->attr;
+ xmlAttrPtr attr1 = ((xmlRemoveMemoPtr)user)->ap;
+ xmlListPtr ref_list = ((xmlRemoveMemoPtr)user)->l;
- if (attr0 == attr1) { /* Matched: remove and terminate walk */
- xmlListRemoveFirst(ref_list, (void *)data);
- return 0;
- }
- return 1;
+ if (attr0 == attr1) { /* Matched: remove and terminate walk */
+ xmlListRemoveFirst(ref_list, (void *)data);
+ return 0;
+ }
+ return 1;
}
/**
@@ -1955,73 +1955,73 @@
xmlRefPtr
xmlAddRef(xmlValidCtxtPtr ctxt ATTRIBUTE_UNUSED, xmlDocPtr doc, const xmlChar *value,
xmlAttrPtr attr) {
- xmlRefPtr ret;
- xmlRefTablePtr table;
- xmlListPtr ref_list;
+ xmlRefPtr ret;
+ xmlRefTablePtr table;
+ xmlListPtr ref_list;
- if (doc == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRefDecl: doc == NULL\n");
- return(NULL);
- }
- if (value == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRefDecl: value == NULL\n");
- return(NULL);
- }
- if (attr == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRefDecl: attr == NULL\n");
- return(NULL);
- }
+ if (doc == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRefDecl: doc == NULL\n");
+ return(NULL);
+ }
+ if (value == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRefDecl: value == NULL\n");
+ return(NULL);
+ }
+ if (attr == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRefDecl: attr == NULL\n");
+ return(NULL);
+ }
- /*
+ /*
* Create the Ref table if needed.
*/
- table = (xmlRefTablePtr) doc->refs;
- if (table == NULL)
- doc->refs = table = xmlCreateRefTable();
- if (table == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRef: Table creation failed!\n");
- return(NULL);
- }
+ table = (xmlRefTablePtr) doc->refs;
+ if (table == NULL)
+ doc->refs = table = xmlCreateRefTable();
+ if (table == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRef: Table creation failed!\n");
+ return(NULL);
+ }
- ret = (xmlRefPtr) xmlMalloc(sizeof(xmlRef));
- if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRef: out of memory\n");
- return(NULL);
- }
+ ret = (xmlRefPtr) xmlMalloc(sizeof(xmlRef));
+ if (ret == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRef: out of memory\n");
+ return(NULL);
+ }
- /*
+ /*
* fill the structure.
*/
- ret->value = xmlStrdup(value);
- ret->attr = attr;
+ ret->value = xmlStrdup(value);
+ ret->attr = attr;
- /* To add a reference :-
- * References are maintained as a list of references,
- * Lookup the entry, if no entry create new nodelist
- * Add the owning node to the NodeList
- * Return the ref
- */
+ /* To add a reference :-
+ * References are maintained as a list of references,
+ * Lookup the entry, if no entry create new nodelist
+ * Add the owning node to the NodeList
+ * Return the ref
+ */
- if(NULL == (ref_list = xmlHashLookup(table, value))) {
- if(NULL == (ref_list = xmlListCreate(xmlFreeRef, NULL))) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRef: Reference list creation failed!\n");
- return(NULL);
- }
- if (xmlHashAddEntry(table, value, ref_list) < 0) {
- xmlListDelete(ref_list);
- xmlGenericError(xmlGenericErrorContext,
- "xmlAddRef: Reference list insertion failed!\n");
- return(NULL);
- }
- }
- xmlListInsert(ref_list, ret);
- return(ret);
+ if (NULL == (ref_list = xmlHashLookup(table, value))) {
+ if (NULL == (ref_list = xmlListCreate(xmlFreeRef, NULL))) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRef: Reference list creation failed!\n");
+ return(NULL);
+ }
+ if (xmlHashAddEntry(table, value, ref_list) < 0) {
+ xmlListDelete(ref_list);
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlAddRef: Reference list insertion failed!\n");
+ return(NULL);
+ }
+ }
+ xmlListInsert(ref_list, ret);
+ return(ret);
}
/**
@@ -2032,7 +2032,7 @@
*/
void
xmlFreeRefTable(xmlRefTablePtr table) {
- xmlHashFree(table, (xmlHashDeallocator) xmlFreeRefList);
+ xmlHashFree(table, (xmlHashDeallocator) xmlFreeRefList);
}
/**
@@ -2049,23 +2049,25 @@
*/
int
xmlIsRef(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
- if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) {
- return(0);
- } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
- /* TODO @@@ */
- return(0);
- } else {
- xmlAttributePtr attrDecl;
+ if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) {
+ return(0);
+ } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
+ /* TODO @@@ */
+ return(0);
+ } else {
+ xmlAttributePtr attrDecl;
- attrDecl = xmlGetDtdAttrDesc(doc->intSubset, elem->name, attr->name);
- if ((attrDecl == NULL) && (doc->extSubset != NULL))
- attrDecl = xmlGetDtdAttrDesc(doc->extSubset, elem->name,
- attr->name);
+ attrDecl = xmlGetDtdAttrDesc(doc->intSubset, elem->name, attr->name);
+ if ((attrDecl == NULL) && (doc->extSubset != NULL))
+ attrDecl = xmlGetDtdAttrDesc(doc->extSubset,
+ elem->name, attr->name);
- if ((attrDecl != NULL) && (attrDecl->atype == XML_ATTRIBUTE_IDREF))
- return(1);
- }
- return(0);
+ if ((attrDecl != NULL) &&
+ (attrDecl->atype == XML_ATTRIBUTE_IDREF ||
+ attrDecl->atype == XML_ATTRIBUTE_IDREFS))
+ return(1);
+ }
+ return(0);
}
/**
@@ -2079,50 +2081,50 @@
*/
int
xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr) {
- xmlListPtr ref_list;
- xmlRefTablePtr table;
- xmlChar *ID;
- xmlRemoveMemo target;
+ xmlListPtr ref_list;
+ xmlRefTablePtr table;
+ xmlChar *ID;
+ xmlRemoveMemo target;
- if (doc == NULL) return(-1);
- if (attr == NULL) return(-1);
- table = (xmlRefTablePtr) doc->refs;
- if (table == NULL)
- return(-1);
+ if (doc == NULL) return(-1);
+ if (attr == NULL) return(-1);
+ table = (xmlRefTablePtr) doc->refs;
+ if (table == NULL)
+ return(-1);
- if (attr == NULL)
- return(-1);
- ID = xmlNodeListGetString(doc, attr->children, 1);
- if (ID == NULL)
- return(-1);
- ref_list = xmlHashLookup(table, ID);
+ if (attr == NULL)
+ return(-1);
+ ID = xmlNodeListGetString(doc, attr->children, 1);
+ if (ID == NULL)
+ return(-1);
+ ref_list = xmlHashLookup(table, ID);
- if(ref_list == NULL) {
- xmlFree(ID);
- return (-1);
- }
- /* At this point, ref_list refers to a list of references which
- * have the same key as the supplied attr. Our list of references
- * is ordered by reference address and we don't have that information
- * here to use when removing. We'll have to walk the list and
- * check for a matching attribute, when we find one stop the walk
- * and remove the entry.
- * The list is ordered by reference, so that means we don't have the
- * key. Passing the list and the reference to the walker means we
- * will have enough data to be able to remove the entry.
- */
- target.l = ref_list;
- target.ap = attr;
-
- /* Remove the supplied attr from our list */
- xmlListWalk(ref_list, xmlWalkRemoveRef, &target);
+ if(ref_list == NULL) {
+ xmlFree(ID);
+ return (-1);
+ }
+ /* At this point, ref_list refers to a list of references which
+ * have the same key as the supplied attr. Our list of references
+ * is ordered by reference address and we don't have that information
+ * here to use when removing. We'll have to walk the list and
+ * check for a matching attribute, when we find one stop the walk
+ * and remove the entry.
+ * The list is ordered by reference, so that means we don't have the
+ * key. Passing the list and the reference to the walker means we
+ * will have enough data to be able to remove the entry.
+ */
+ target.l = ref_list;
+ target.ap = attr;
+
+ /* Remove the supplied attr from our list */
+ xmlListWalk(ref_list, xmlWalkRemoveRef, &target);
- /*If the list is empty then remove the list entry in the hash */
- if (xmlListEmpty(ref_list))
- xmlHashUpdateEntry(table, ID, NULL, (xmlHashDeallocator)
- xmlFreeRefList);
- xmlFree(ID);
- return(0);
+ /*If the list is empty then remove the list entry in the hash */
+ if (xmlListEmpty(ref_list))
+ xmlHashUpdateEntry(table, ID, NULL, (xmlHashDeallocator)
+ xmlFreeRefList);
+ xmlFree(ID);
+ return(0);
}
/**
@@ -2136,23 +2138,23 @@
*/
xmlListPtr
xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) {
- xmlRefTablePtr table;
+ xmlRefTablePtr table;
- if (doc == NULL) {
- xmlGenericError(xmlGenericErrorContext, "xmlGetRef: doc == NULL\n");
- return(NULL);
- }
+ if (doc == NULL) {
+ xmlGenericError(xmlGenericErrorContext, "xmlGetRef: doc == NULL\n");
+ return(NULL);
+ }
- if (ID == NULL) {
- xmlGenericError(xmlGenericErrorContext, "xmlGetRef: ID == NULL\n");
- return(NULL);
- }
+ if (ID == NULL) {
+ xmlGenericError(xmlGenericErrorContext, "xmlGetRef: ID == NULL\n");
+ return(NULL);
+ }
- table = (xmlRefTablePtr) doc->refs;
- if (table == NULL)
- return(NULL);
+ table = (xmlRefTablePtr) doc->refs;
+ if (table == NULL)
+ return(NULL);
- return (xmlHashLookup(table, ID));
+ return (xmlHashLookup(table, ID));
}
/************************************************************************