4c1592ae46d1272a7d1ed5785e9df07e6dbb59e2
galt
  Tue Jul 10 14:41:42 2012 -0700
fixing subtle problem with tabs and empty strings in b2bb input parsing
diff --git src/utils/bedToBigBed/bedToBigBed.c src/utils/bedToBigBed/bedToBigBed.c
index a894868..dc68d8f 100644
--- src/utils/bedToBigBed/bedToBigBed.c
+++ src/utils/bedToBigBed/bedToBigBed.c
@@ -1,31 +1,31 @@
 /* bedToBigBed - Convert bed to bigBed.. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "dystring.h"
 #include "obscure.h"
 #include "asParse.h"
 #include "basicBed.h"
 #include "sig.h"
 #include "rangeTree.h"
 #include "zlibFace.h"
 #include "sqlNum.h"
 #include "bigBed.h"
 
-char *version = "2.1";
+char *version = "2.2";
 
 int blockSize = 256;
 int itemsPerSlot = 512;
 int bedN = 0;   /* number of standard bed fields */
 int bedP = 0;   /* number of bed plus fields */
 char *as = NULL;
 static boolean doCompress = FALSE;
 static boolean tabSep = FALSE;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "bedToBigBed v. %s - Convert bed file to bigBed. (BigBed version: %d)\n"
   "usage:\n"
@@ -96,31 +96,31 @@
 char *chrom = NULL;
 struct bed *bed;
 AllocVar(bed);
 
 for (;;)
     {
     /* Get next line of input if any. */
     if (lineFileNextReal(lf, &line))
 	{
 	/* First time through figure out the field count and if not set, the bedN. */
 	if (fieldCount == 0)
 	    {
 	    if (as == NULL)
 		{
 		if (tabSep)
-		    fieldCount = chopString(line, "\t", NULL, 0);
+		    fieldCount = chopByChar(line, '\t', NULL, 256); // Do not use chopString, see GOTCHA
 		else
 		    fieldCount = chopByWhite(line, NULL, 0);
 		if (bedN == 0)
 		    bedN = fieldCount;
 		if (bedN > 15)
 		    {
 		    bedN = 15;
 		    bedP = fieldCount - bedN;
 		    }
 		char *asText = bedAsDef(bedN, fieldCount);
 		as = asParseText(asText);
 		allocedAs = TRUE;
 		freeMem(asText);
 		}
 	    else