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/oneShot/addUcscCopyright/addUcscCopyright.c src/hg/oneShot/addUcscCopyright/addUcscCopyright.c
index 51a795f..f78916a 100644
--- src/hg/oneShot/addUcscCopyright/addUcscCopyright.c
+++ src/hg/oneShot/addUcscCopyright/addUcscCopyright.c
@@ -1,165 +1,165 @@
 /* addUcscCopyright - Add a UCSC type copyright to files without copyright. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "obscure.h"
 #include "sqlNum.h"
 
 boolean dry = FALSE;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "addUcscCopyright - Add a UCSC type copyright to files without copyright.\n"
   "usage:\n"
   "   addUcscCopyright fileList\n"
   "options:\n"
   "   -dry - if set will just list files and years, but not add copyright\n"
   );
 }
 
 /* Command line validation table. */
 static struct optionSpec options[] = {
    {"dry", OPTION_BOOLEAN},
    {NULL, 0},
 };
 
 boolean lowerCaseAndTest(char *s)
 /* Convert s to lower case, and then return TRUE if it has 
  * copyright info in it. */
 {
 strLower(s);
 return stringIn("copyright", s) || stringIn("(c)", s);
 }
 
 boolean containsCopyright(char *fileName, int maxLines)
 /* Look for the string 'copyright' or '(C)' regardless of case in up
  * to maxLines of file.  Return TRUE if it is found, FALSE otherwise. */
 {
 boolean result = FALSE;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 int i;
 for (i=0; i<maxLines; ++i)
     {
     char *line;
     if (!lineFileNext(lf, &line, NULL))
         break;
     if (lowerCaseAndTest(line))
         {
 	result = TRUE;
 	break;
 	}
     }
 lineFileClose(&lf);
 return result;
 }
 
 void addCopyright(char *fileName, int date, char *copyrightHolder, char *license)
 /* Open file, load it into memory, and write it back out (replacing current file)
  * with copyright and license comments somewhere near top. */
 {
 verbose(1, "%s: Adding copyright %d %s\n", fileName, date, copyrightHolder);
 if (fileSize(fileName) > 10000000)  /* This is a genomics file or something, not text */
     errAbort("Deciding not to add copyright to %s, which is over 10M characters long", fileName);
 struct slName *line, *lineList = readAllLines(fileName);
 verbose(2, "%d lines in %s\n", slCount(lineList), fileName);
 if (dry)
     return;
 
 /* Try to figure out where to put copyright.  We try to respect up to
  * 10 lines of opening comments, and will put it after opening comments
  * if possible.  However if opening comments go on too long, we put it at
  * very top. */
 int maxInitialVerbage = 10, i;
 struct slName *insertPoint = NULL;
 boolean inBlockComment = FALSE;
 for (line = lineList, i=0; line != NULL && i<maxInitialVerbage; line = line->next, ++i)
     {
     char c;
     char *s = skipLeadingSpaces(line->name);
     boolean inLineComment = (s[0] == '/' && s[1] == '/');
     boolean gotBlockComment = FALSE;
     if (inBlockComment || !inLineComment)
 	{
 	while ((c = *s++) != 0)
 	    {
 	    if (inBlockComment)
 		{
 		if ( c == '*' && *s == '/')
 		    {
 		    s += 1;
 		    inBlockComment = FALSE;
 		    gotBlockComment = TRUE;
 		    }
 		}
 	    else
 		{
 		if ( c == '/' && *s == '*')
 		    {
 		    s += 1;
 		    inBlockComment = TRUE;
 		    gotBlockComment = TRUE;
 		    }
 		}
 	    }
 	}
     if (!inLineComment && !inBlockComment && !gotBlockComment)
         {
 	insertPoint = line;
 	break;
 	}
     }
 if (insertPoint == NULL)
     insertPoint = lineList;
 
 FILE *f = mustOpen(fileName, "w");
 for (line = lineList; line != NULL; line = line->next)
     {
     if (line == insertPoint)
         {
 	if (insertPoint != lineList)
 	    fprintf(f, "\n");
 	fprintf(f, "/* Copyright (C) %d %s \n", date, copyrightHolder);
 	fprintf(f, " * %s */\n", license);
 	if (insertPoint == lineList)
 	    fprintf(f, "\n");
 	}
     fprintf(f, "%s\n", line->name);
     }
 carefulClose(&f);
 }
 
 void addUcscCopyright(char *fileList)
 /* addUcscCopyright - Add a UCSC type copyright to files. */
 {
 struct lineFile *lf = lineFileOpen(fileList, TRUE);
 char *line;
 int size;
 while (lineFileNext(lf, &line, &size))
     {
     verbose(2, "%d %s\n", lf->lineIx, line);
     char *fileName = nextWordRespectingQuotes(&line);
     char *date = nextWord(&line);
     if (date != NULL)
         {
 	if (!containsCopyright(fileName, 10))
 	    {
 	    addCopyright(fileName, sqlUnsigned(date), "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.");
 	    }
 	}
     }
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 2)
     usage();
 dry = optionExists("dry");
 addUcscCopyright(argv[1]);
 return 0;
 }