4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/lib/encode3/encode3Valid.c src/hg/lib/encode3/encode3Valid.c
index c45c88e..4ca843d 100644
--- src/hg/lib/encode3/encode3Valid.c
+++ src/hg/lib/encode3/encode3Valid.c
@@ -1,162 +1,162 @@
 /* Things to do with ENCODE 3 validation. */
 
 /* Copyright (C) 2013 The Regents of the University of California 
- * See README in this or parent directory for licensing information. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 
 #include "common.h"
 #include "hex.h"
 #include "linefile.h"
 #include "encode3/encode3Valid.h"
 
 
 char *encode3CalcValidationKey(char *md5Hex, long long fileSize)
 /* calculate validation key to discourage faking of validation.  Do freeMem on 
  *result when done. */
 {
 if (strlen(md5Hex) != 32)
     errAbort("Invalid md5Hex string: %s\n", md5Hex);
 long long sum = 0;
 sum += fileSize;
 while (*md5Hex)
     {
     unsigned char n = hexToByte(md5Hex);
     sum += n;
     md5Hex += 2;
     }
 int vNum = sum % 10000;
 char buf[256];
 safef(buf, sizeof buf, "V%d", vNum);
 return cloneString(buf);
 }
 
 static char *fileNameOnly(char *fullName)
 /* Return just the fileName part of the path */
 {
 char *fileName = strrchr(fullName, '/');
 if (!fileName)
     fileName = fullName;
 return fileName;
 }
 
 static void requireStartEndLines(char *fileName, char *startLine, char *endLine)
 /* Make sure first real line in file is startLine, and last is endLine.  Tolerate
  * empty lines and white space. */
 {
 char *reportFileName = fileNameOnly(fileName);
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *line;
 
 /* Get first real line and make sure it is not empty and matches start line. */
 if (!lineFileNextReal(lf, &line))
     errAbort("%s is empty", reportFileName);
 line = trimSpaces(line);
 if (!sameString(line, startLine))
     errAbort("%s doesn't start with %s as expected", reportFileName, startLine);
 
 boolean lastSame = FALSE;
 
 for (;;)
     {
     if (!lineFileNextReal(lf, &line))
         break;
     line = trimSpaces(line);
     lastSame = sameString(line, endLine);
     }
 if (!lastSame)
     errAbort("%s doesn't end with %s as expected", reportFileName, endLine);
 
 lineFileClose(&lf);
 }
 
 void encode3ValidateRcc(char *path)
 /* Validate a nanostring rcc file. */
 {
 requireStartEndLines(path, "<Header>", "</Messages>");
 }
 
 boolean fileStartsWithOneOfPair(char *fileName,  char *one, char *two)
 /* Return TRUE if file starts with either one of two strings. */
 {
 /* Figure out size of one and two strings. */
 int oneLen = strlen(one);
 int twoLen = strlen(two);
 int maxLen = max(oneLen, twoLen);
 assert(maxLen > 0);
 int bufLen = maxLen+1;
 char buf[bufLen];
 
 /* Open up file and try to read enough data */
 FILE *f = fopen(fileName, "r");
 if (f == NULL)
    return FALSE;
 int sizeRead = fread(buf, 1, maxLen, f);
 carefulClose(&f);
 
 /* Return TRUE if we match one or two, otherwise FALSE. */
 if (oneLen >= sizeRead && memcmp(buf, one, oneLen) == 0)
     return TRUE;
 else if (twoLen >= sizeRead && memcmp(buf, two, twoLen) == 0)
     return TRUE;
 return FALSE;
 }
 
 void encode3ValidateIdat(char *path)
 /* Validate illumina idat file. */
 {
 if (!fileStartsWithOneOfPair(path, "IDAT", "DITA"))
     errAbort("%s is not a valid .idat file, it does not start with IDAT or DITA", fileNameOnly(path));
 }
 
 boolean encode3IsGzipped(char *path)
 /* Return TRUE if file at path starts with GZIP signature */
 {
 FILE *f = mustOpen(path, "r");
 int first = fgetc(f);
 int second = fgetc(f);
 carefulClose(&f);
 return first == 0x1F && second == 0x8B;
 }
 
 static char *edwSupportedEnrichedIn[] = {"unknown", "exon", "intron", "promoter", "coding",
     "utr", "utr3", "utr5", "open"};
 static int edwSupportedEnrichedInCount = ArraySize(edwSupportedEnrichedIn);
 
 boolean encode3CheckEnrichedIn(char *enriched)
 /* return TRUE if value is allowed */
 {
 return (stringArrayIx(enriched, edwSupportedEnrichedIn, edwSupportedEnrichedInCount) >= 0);
 }
 
 struct encode3BedType encode3BedTypeTable[] = {
     {"bedLogR", 9, 1},
     {"bedRnaElements", 6, 3},
     {"bedRrbs", 9, 2},
     {"bedMethyl", 9, 2},
     {"narrowPeak", 6, 4},
     {"broadPeak", 6, 3},
 };
 
 int encode3BedTypeCount = ArraySize(encode3BedTypeTable);
 
 struct encode3BedType *encode3BedTypeMayFind(char *name)
 /* Return encode3BedType of given name, just return NULL if not found. */
 {
 int i;
 for (i=0; i<encode3BedTypeCount; ++i)
     {
     if (sameString(name, encode3BedTypeTable[i].name))
         return &encode3BedTypeTable[i];
     }
 return NULL;
 }
 
 struct encode3BedType *encode3BedTypeFind(char *name)
 /* Return encode3BedType of given name.  Abort if not found */
 {
 struct encode3BedType *bedType = encode3BedTypeMayFind(name);
 if (bedType == NULL)
     errAbort("Couldn't find bed format %s", name);
 return bedType;
 }