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/mouseStuff/afsCombine/afsCombine.c src/hg/mouseStuff/afsCombine/afsCombine.c
index d40ce85..87ab200 100644
--- src/hg/mouseStuff/afsCombine/afsCombine.c
+++ src/hg/mouseStuff/afsCombine/afsCombine.c
@@ -1,92 +1,92 @@
 /* afsCombine - Combine output from multiple runs of aliFragScore. */
 
 /* Copyright (C) 2011 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 "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "portable.h"
 
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "afsCombine - Combine output from multiple runs of aliFragScore\n"
   "usage:\n"
   "   afsCombine inDir outFile\n"
   "options:\n"
   "   -xxx=XXX\n"
   );
 }
 
 static struct optionSpec options[] = {
    {NULL, 0},
 };
 
 struct scoredFrag
 /* A structure that holds scores of a bunch of frags. */
     {
     struct scoredFrag *next;	/* Next in list. */
     int perfectCount;/* Number of perfect matches */
     int posCount;    /* Number of matches with positive total. */
     double total;    /* Total score of all hits to target dna. */
     double posTotal; /* Total score of all positive scoring hits. */
     char frag[1];    /* Sequence associated with fragment, dynamically allocated to right size */
     };
 
 void foldIn(char *fileName, struct hash *hash, struct scoredFrag **pList)
 /* Read file and add contents to hash/list. */
 {
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[5];
 struct scoredFrag *frag;
 
 while (lineFileRow(lf, row))
     {
     char *name = row[0];
     if ((frag = hashFindVal(hash, name)) == NULL)
         {
 	frag = needMem(sizeof(*frag) + strlen(name));
 	strcpy(frag->frag, name);
 	hashAdd(hash, name, frag);
 	slAddHead(pList, frag);
 	}
     frag->perfectCount += lineFileNeedNum(lf, row, 1);
     frag->posCount += lineFileNeedNum(lf, row, 2);
     frag->posTotal += atof(row[3]);
     frag->total += atof(row[4]);
     }
 lineFileClose(&lf);
 }
 
 void afsCombine(char *inDir, char *outFile)
 /* afsCombine - Combine output from multiple runs of aliFragScore. */
 {
 struct hash *hash = newHash(16);
 struct scoredFrag *fragList = NULL, *frag;
 struct fileInfo *fi, *fiList = listDirX(inDir, "*", TRUE);
 FILE *f;
 
 for (fi = fiList; fi != NULL; fi = fi->next)
    foldIn(fi->name, hash, &fragList);
 slReverse(&fragList);
 f = mustOpen(outFile, "w");
 for (frag = fragList; frag != NULL; frag = frag->next)
     {
     fprintf(f, "%s\t%d\t%d\t%f\t%f\n", frag->frag, frag->perfectCount, frag->posCount,
     	frag->posTotal, frag->total);
     }
 carefulClose(&f);
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 3)
     usage();
 afsCombine(argv[1], argv[2]);
 return 0;
 }