src/hg/lib/metaTbl.c 1.12
1.12 2010/04/13 16:05:50 tdreszer
Fixed bug in formatted metadata lines requesting a delete
Index: src/hg/lib/metaTbl.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/metaTbl.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -b -B -U 4 -r1.11 -r1.12
--- src/hg/lib/metaTbl.c 12 Apr 2010 21:56:28 -0000 1.11
+++ src/hg/lib/metaTbl.c 13 Apr 2010 16:05:50 -0000 1.12
@@ -572,27 +572,27 @@
{
char *fromTheTop = line;
char*nibbledWord = cloneNextWordByDelimiter(&line,' ');
if(nibbledWord == NULL || differentWord(nibbledWord,"metadata"))
- errAbort("This is not formatted metadata:\n\t%s\n",fromTheTop);
+ errAbort("This is not a formatted metadata line:\n\t%s\n",fromTheTop);
freeMem(nibbledWord);
struct metaObj *metaObj = NULL;
char*varPairs = line;
nibbledWord = cloneNextWordByDelimiter(&line,' ');;
if(nibbledWord == NULL)
- errAbort("This is not formatted metadata:\n\t%s\n",fromTheTop);
+ errAbort("This is not a formatted metadata line:\n\t%s\n",fromTheTop);
if(strchr(nibbledWord, '=') == NULL) // If this is not a var=val then it should be objName
{
AllocVar(metaObj);
metaObj->obj = nibbledWord;
verbose(3, "metadataLineParse() obj=%s\n",metaObj->obj);
varPairs = line;
- for(;;)
+ while(strlen(line) > 0)
{
nibbledWord = cloneNextWordByDelimiter(&line,' ');;
if(nibbledWord == NULL)
- errAbort("This is not formatted metadata:\n\t%s\n",fromTheTop);
+ errAbort("This is not a formatted metadata line:\n\t%s\n",fromTheTop);
if(strchr(nibbledWord, '=') != NULL) // If this is start of var=val pairs
break;
if(sameWord(nibbledWord,"delete"))
@@ -602,9 +602,12 @@
varPairs = line;
freeMem(nibbledWord);
}
}
-metaObj = metaObjAddVarPairs(metaObj,varPairs);
+if(strlen(varPairs) > 0)
+ metaObj = metaObjAddVarPairs(metaObj,varPairs);
+else if(metaObj->deleteThis == FALSE)
+ errAbort("This is not a formatted metadata line:\n\t%s\n",fromTheTop);
return metaObj;
}
struct metaByVar *metaByVarsLineParse(char *line)