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/lib/annoRow.c src/lib/annoRow.c
index e052263..eb0a1fa 100644
--- src/lib/annoRow.c
+++ src/lib/annoRow.c
@@ -1,87 +1,87 @@
 /* annoRow -- basic data interchange unit of annoGratorQuery framework. */
 
 /* 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 "annoRow.h"
 
 struct annoRow *annoRowFromStringArray(char *chrom, uint start, uint end, boolean rightJoinFail,
 				       char **wordsIn, int numCols, struct lm *lm)
 /* Allocate & return an annoRow (type arWords) with data cloned from wordsIn. */
 {
 struct annoRow *aRow;
 lmAllocVar(lm, aRow);
 aRow->chrom = lmCloneString(lm, chrom);
 aRow->start = start;
 aRow->end = end;
 aRow->rightJoinFail = rightJoinFail;
 aRow->data = lmCloneRow(lm, wordsIn, numCols);
 return aRow;
 }
 
 struct annoRow *annoRowWigVecNew(char *chrom, uint start, uint end, boolean rightJoinFail,
                                  float *values, struct lm *lm)
 /* Allocate & return an annoRow (type arWigVec), with cloned per-base values;
  * length of values is (end-start). */
 {
 struct annoRow *row;
 lmAllocVar(lm, row);
 row->chrom = lmCloneString(lm, chrom);
 row->start = start;
 row->end = end;
 row->data = lmCloneMem(lm, values, (end - start) * sizeof(values[0]));
 row->rightJoinFail = rightJoinFail;
 return row;
 }
 
 struct annoRow *annoRowWigSingleNew(char *chrom, uint start, uint end, boolean rightJoinFail,
                                  double value, struct lm *lm)
 /* Allocate & return an annoRow (type arWigSingle), which contains a single value for
  * all bases from start to end. */
 {
 struct annoRow *row;
 lmAllocVar(lm, row);
 row->chrom = lmCloneString(lm, chrom);
 row->start = start;
 row->end = end;
 row->data = lmCloneMem(lm, &value, sizeof(value));
 row->rightJoinFail = rightJoinFail;
 return row;
 }
 
 struct annoRow *annoRowClone(struct annoRow *rowIn, enum annoRowType rowType, int numCols,
 			     struct lm *lm)
 /* Allocate & return a single annoRow cloned from rowIn.  If rowIn is NULL, return NULL.
  * If type is arWig*, numCols is ignored. */
 {
 if (rowIn == NULL)
     return NULL;
 if (rowType == arWords)
     return annoRowFromStringArray(rowIn->chrom, rowIn->start, rowIn->end, rowIn->rightJoinFail,
 				  rowIn->data, numCols, lm);
 else if (rowType == arWigVec)
     return annoRowWigVecNew(rowIn->chrom, rowIn->start, rowIn->end, rowIn->rightJoinFail,
 			 (float *)rowIn->data, lm);
 else if (rowType == arWigSingle)
     return annoRowWigSingleNew(rowIn->chrom, rowIn->start, rowIn->end, rowIn->rightJoinFail,
                                ((double *)rowIn->data)[0], lm);
 else
     errAbort("annoRowClone: unrecognized type %d", rowType);
 return NULL;
 }
 
 int annoRowCmp(const void *va, const void *vb)
 /* Compare two annoRows' {chrom, start, end}. */
 {
 struct annoRow *rowA = *((struct annoRow **)va);
 struct annoRow *rowB = *((struct annoRow **)vb);
 int dif = strcmp(rowA->chrom, rowB->chrom);
 if (dif == 0)
     {
     dif = rowA->start - rowB->start;
     if (dif == 0)
 	dif = rowA->end - rowB->end;
     }
 return dif;
 }