13531feb863db3591e2c7e61cf45289d3770bc7c
braney
  Mon Oct 31 11:49:46 2022 -0700
for bigWig and bigBed build utilities, check to make sure the file isn't
a pipe

diff --git src/utils/bedGraphToBigWig/bedGraphToBigWig.c src/utils/bedGraphToBigWig/bedGraphToBigWig.c
index 6e89e40..5452415 100644
--- src/utils/bedGraphToBigWig/bedGraphToBigWig.c
+++ src/utils/bedGraphToBigWig/bedGraphToBigWig.c
@@ -6,30 +6,31 @@
 #include "obscure.h"
 #include "memalloc.h"
 #include "linefile.h"
 #include "localmem.h"
 #include "hash.h"
 #include "options.h"
 #include "sqlNum.h"
 #include "dystring.h"
 #include "cirTree.h"
 #include "sig.h"
 #include "zlibFace.h"
 #include "bPlusTree.h"
 #include "bbiFile.h"
 #include "bwgInternal.h"
 #include "bigWig.h"
+#include "portable.h"
 
 
 char *version = "2.9";   // when changing, change in bedToBigBed, bedGraphToBigWig, and wigToBigWig
 /* Version history from 2.8 on at least -
  * 2.9 - ability to specify chromAlias bigBed as chromSizes file
  * 2.8  sync up version numbers with bedToBigBed 
  */
 
 static int blockSize = 256;
 static int itemsPerSlot = 1024;
 static boolean doCompress = FALSE;
 static int maxGigs = 100;   // Maximum number of gigs to allocate in one block.  
 			    // Undocumented on purpose.
 static boolean sizesIsBb = FALSE;
 
@@ -362,30 +363,32 @@
 /* Write out 1st zoom index. */
 int indexOffset = *retIndexStart = ftell(f);
 assert(boundsPt == boundsEnd);
 cirTreeFileBulkIndexToOpenFile(boundsArray, sizeof(boundsArray[0]), initialReductionCount,
     blockSize, itemsPerSlot, NULL, bbiBoundsArrayFetchKey, bbiBoundsArrayFetchOffset, 
     indexOffset, f);
 
 freez(&boundsArray);
 slReverse(&twiceReducedList);
 return twiceReducedList;
 }
 
 void bedGraphToBigWig(char *inName, char *chromSizes, char *outName)
 /* bedGraphToBigWig - Convert a bedGraph program to bigWig.. */
 {
+mustBeReadableAndRegularFile(inName);
+
 verboseTimeInit();
 struct lineFile *lf = lineFileOpen(inName, TRUE);
 int minDiff = 0, i;
 double aveSize = 0;
 bits64 bedCount = 0;
 bits32 uncompressBufSize = 0;
 struct bbiChromUsage *usageList;
 
 if (sizesIsBb)
     usageList = bbiChromUsageFromBedFileAlias(lf, chromSizes, NULL, &minDiff, &aveSize, &bedCount, FALSE);
 else
     {
     struct hash *chromSizesHash = bbiChromSizesFromFile(chromSizes);
     verbose(2, "%d chroms in %s\n", chromSizesHash->elCount, chromSizes);
     usageList = bbiChromUsageFromBedFile(lf, chromSizesHash, NULL,