eb75e4c4b7d552be8e3dc9e86edd5131e006ca4d
braney
  Mon Aug 4 16:30:46 2014 -0700
add dash to error message about acceptable characters in tags
diff --git src/lib/gff3.c src/lib/gff3.c
index fd6187b..3a10491 100644
--- src/lib/gff3.c
+++ src/lib/gff3.c
@@ -340,31 +340,31 @@
     }
 }
 
 /* check that an attribute tag name is valid. */
 static boolean checkAttrTag(struct gff3Ann *g3a, char *tag)
 {
 // FIXME: spec is not clear on what is a valid tag.
 char *tc = tag;
 boolean isOk = isalpha(*tc);
 for (tc++; isOk && (*tc != '\0'); tc++)
     {
     if (!((*tc == '-') || (*tc == '_') || isalnum(*tc)))
         isOk = FALSE;
     }
 if (!isOk)
-    gff3AnnErr(g3a, "invalid attribute tag, must start with an alphabetic character and be composed of alphanumeric or underscore characters: %s", tag);
+    gff3AnnErr(g3a, "invalid attribute tag, must start with an alphabetic character and be composed of alphanumeric, dash, or underscore characters: %s", tag);
 return isOk;
 }
 
 static struct slName *parseAttrVals(struct gff3Ann *g3a, char *tag, char *valsStr)
 /* parse an attribute into its values */
 {
 int i, numVals = chopString(valsStr, ",", NULL, 0);
 char **vals = needMem((numVals+1)*sizeof(char**)); // +1 allows for no values
 chopString(valsStr, ",", vals, numVals);
 struct slName *unescVals = NULL;
 for (i = 0; i < numVals; i++)
     slAddHead(&unescVals, unescapeSlName(g3a, vals[i]));
 if (unescVals == NULL)
     slAddHead(&unescVals, slNameNew(""));  // empty value
 freeMem(vals);