Update of /cvsroot/refdb/refdb/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14476/src
Modified Files:
Tag: Release_0_9_5_stable
xmlhandler.c
Log Message:
concat_elnames(): added check for null pointer to handle missing attributes gracefully
Index: xmlhandler.c
===================================================================
RCS file: /cvsroot/refdb/refdb/src/xmlhandler.c,v
retrieving revision 1.22.2.2
retrieving revision 1.22.2.3
diff -u -U2 -r1.22.2.2 -r1.22.2.3
--- xmlhandler.c 13 Jul 2004 20:34:28 -0000 1.22.2.2
+++ xmlhandler.c 23 Jul 2004 02:03:56 -0000 1.22.2.3
@@ -1116,88 +1116,88 @@
to exceed the column name limit of PostgreSQL */
ptr_attr = get_ancestor_attr(ptr_el, "AUTHORLIST", "ROLE");
- if (strcmp(ptr_attr, "PRIMARY") == 0) {
- strcpy(concat, "Q"); /* AUTHORLIST */
- }
- else if (strcmp(ptr_attr, "SECONDARY") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "SECONDARY") == 0) {
strcpy(concat, "X"); /* EDITORLIST */
}
- else if (strcmp(ptr_attr, "TERTIARY") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "TERTIARY") == 0) {
strcpy(concat, "Y"); /* SEDITORLIST */
}
- else if (strcmp(ptr_attr, "ALL") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "ALL") == 0) {
strcpy(concat, "Z"); /* ALLALIST */
}
+ else {
+ strcpy(concat, "Q"); /* AUTHORLIST */
+ }
}
else if (strcmp(ptr_el->elname, "PUBDATE") == 0) {
ptr_attr = get_ancestor_attr(ptr_el, "PUBDATE", "ROLE");
- if (strcmp(ptr_attr, "PRIMARY") == 0) {
- strcpy(concat, "PUBDATE");
- }
- else if (strcmp(ptr_attr, "SECONDARY") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "SECONDARY") == 0) {
strcpy(concat, "PUBDATESEC");
}
- else if (strcmp(ptr_attr, "ALL") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "ALL") == 0) {
strcpy(concat, "PUBDATEALL");
}
+ else {
+ strcpy(concat, "PUBDATE");
+ }
}
else if (strcmp(ptr_el->elname, "TITLE") == 0) {
ptr_attr = get_ancestor_attr(ptr_el, "TITLE", "ROLE");
- if (strcmp(ptr_attr, "PRIMARY") == 0) {
- strcpy(concat, "TITLE");
- }
- else if (strcmp(ptr_attr, "SECONDARY") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "SECONDARY") == 0) {
strcpy(concat, "BOOKTITLE");
}
- else if (strcmp(ptr_attr, "TERTIARY") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "TERTIARY") == 0) {
strcpy(concat, "SERIESTITLE");
}
- else if (strcmp(ptr_attr, "ALL") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "ALL") == 0) {
strcpy(concat, "ALLTITLE");
}
+ else {
+ strcpy(concat, "TITLE");
+ }
}
else if (strcmp(ptr_el->elname, "USERDEF") == 0) {
ptr_attr = get_ancestor_attr(ptr_el, "USERDEF", "ROLE");
- if (strcmp(ptr_attr, "1") == 0) {
- strcpy(concat, "USERDEF1");
- }
- else if (strcmp(ptr_attr, "2") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "2") == 0) {
strcpy(concat, "USERDEF2");
}
- else if (strcmp(ptr_attr, "3") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "3") == 0) {
strcpy(concat, "USERDEF3");
}
- else if (strcmp(ptr_attr, "4") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "4") == 0) {
strcpy(concat, "USERDEF4");
}
- else if (strcmp(ptr_attr, "5") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "5") == 0) {
strcpy(concat, "USERDEF5");
}
+ else {
+ strcpy(concat, "USERDEF1");
+ }
}
else if (strcmp(ptr_el->elname, "MISC") == 0) {
ptr_attr = get_ancestor_attr(ptr_el, "MISC", "ROLE");
- if (strcmp(ptr_attr, "1") == 0) {
- strcpy(concat, "MISC1");
- }
- else if (strcmp(ptr_attr, "2") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "2") == 0) {
strcpy(concat, "MISC2");
}
- else if (strcmp(ptr_attr, "3") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "3") == 0) {
strcpy(concat, "MISC3");
}
+ else {
+ strcpy(concat, "MISC1");
+ }
}
else if (strcmp(ptr_el->elname, "LINK") == 0) {
ptr_attr = get_ancestor_attr(ptr_el, "LINK", "ROLE");
- if (strcmp(ptr_attr, "1") == 0) {
- strcpy(concat, "LINK1");
- }
- else if (strcmp(ptr_attr, "2") == 0) {
+ if (ptr_attr && strcmp(ptr_attr, "2") == 0) {
strcpy(concat, "LINK2");
}
- else if (strcmp(ptr_attr, "3") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "3") == 0) {
strcpy(concat, "LINK3");
}
- else if (strcmp(ptr_attr, "4") == 0) {
+ else if (ptr_attr && strcmp(ptr_attr, "4") == 0) {
strcpy(concat, "LINK4");
}
+ else {
+ strcpy(concat, "LINK1");
+ }
}
/* in all other cases we can simply use the element name */
|