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)