[Refdb-cvs] CVS: refdb/src xmlhandler.c,1.22.2.2,1.22.2.3
Status: Beta
Brought to you by:
mhoenicka
From: Markus H. <mho...@us...> - 2004-07-23 02:04:05
|
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 */ |