a44421a79fb36cc2036fe116b97ea3bc9590cd0c
braney
  Fri Dec 2 09:34:39 2011 -0800
removed rcsid (#295)
diff --git src/hg/gbOneAcc/gbOneAcc.c src/hg/gbOneAcc/gbOneAcc.c
index 65409a9..e745c2e 100644
--- src/hg/gbOneAcc/gbOneAcc.c
+++ src/hg/gbOneAcc/gbOneAcc.c
@@ -1,110 +1,109 @@
 /* This program retrieves one (or actually a few) records from a GenBank
  * file. */
 #include "common.h"
 #include "linefile.h"
 
-static char const rcsid[] = "$Id: gbOneAcc.c,v 1.2 2003/05/06 07:22:17 kate Exp $";
 
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
 "gbOneAcc - retrieve one or a few records from a GenBank flat file.\n"
 "usage:\n"
 "  gbOneAcc gbFile acc(s)\n"
 "The output will be printed to standard out");
 }
 
 void unexpectedEof(struct lineFile *lf)
 /* Complain about unexpected EOF and die. */
 {
 errAbort("Unexpected end of file line %d of %s", lf->lineIx, lf->fileName);
 }
 
 void extractAccFromGb( char *gbName, char **accNames, int accCount)
 /* Parse records of genBank file and print ones that match accession names. */
 {
 struct lineFile *lf = lineFileOpen(gbName, TRUE);
 FILE *out = stdout;
 enum {maxHeadLines=200, headLineSize=256 };
 char *headLines[maxHeadLines];	/* Store stuff between locus and accession. */
 char *line;
 int lineSize;
 int i;
 
 for (i=0; i<maxHeadLines; ++i)
     headLines[i] = needMem(headLineSize);
 
 for (;;)
     {
     boolean gotAcc = FALSE;
     boolean gotMyAcc = FALSE;
     int headLineCount = 0;
     /* Seek to LOCUS */
     for (;;)
 	{
 	if (!lineFileNext(lf, &line, &lineSize))
 	    return;
 	if (startsWith("LOCUS", line))
 	    break;
 	}
     for (i=0; i<maxHeadLines; ++i)
 	{
 	++headLineCount;
 	if (lineSize >= headLineSize)
 	    errAbort("Line too long (%d chars) line %d of %s", lineSize, lf->lineIx, lf->fileName);
 	strcpy(headLines[i], line);
 	if (!lineFileNext(lf, &line, &lineSize))
 	    unexpectedEof(lf);
 	if (startsWith("ACCESSION", line))
 	    {
 	    gotAcc = TRUE;
 	    break;
 	    }
 	}
     if (!gotAcc)
 	{
 	errAbort("LOCUS without ACCESSION in %d lines at line %d of %s",
 	    maxHeadLines, lf->lineIx, lf->fileName);
 	}
     for (i=0; i<accCount; ++i)
 	{
 	if (strstr(line, accNames[i]))
 	    {
 	    gotMyAcc = TRUE;
 	    break;
 	    }
 	}
     if (gotMyAcc)
 	{
 	for (i=0; i<headLineCount; ++i)
 	    {
 	    fputs(headLines[i], out);
 	    fputc('\n', out);
 	    }
 	fputs(line, out);
 	fputc('\n', out);
 	}
     for (;;)
 	{
 	if (!lineFileNext(lf, &line, &lineSize))
 	    unexpectedEof(lf);
 	if (gotMyAcc)
 	    {
 	    fputs(line, out);
 	    fputc('\n', out);
 	    }
 	if (startsWith("//", line))
 	    break;
 	}
     }
 }
 
 int main(int argc, char *argv[])
 {
 if (argc < 3)
     usage();
 extractAccFromGb(argv[1], argv+2, argc-2);
 return 0;
 }