e70152e44cc66cc599ff6b699eb8adc07f3e656a kent Sat May 24 21:09:34 2014 -0700 Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment. diff --git src/utils/wigSetSpanOrStep/wigSetSpanOrStep.c src/utils/wigSetSpanOrStep/wigSetSpanOrStep.c index e62b479..09837e9 100644 --- src/utils/wigSetSpanOrStep/wigSetSpanOrStep.c +++ src/utils/wigSetSpanOrStep/wigSetSpanOrStep.c @@ -1,111 +1,114 @@ /* wigSetSpanOrStep - Set span or step variables in an ascii format wiggle file. */ + +/* Copyright (C) 2011 The Regents of the University of California + * See README in this or parent directory for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" boolean gotStep = FALSE; boolean gotSpan = FALSE; int step = 1; int span = 1; void usage() /* Explain usage and exit. */ { errAbort( "wigSetSpanOrStep - Set span or step variables in an ascii format wiggle file\n" "usage:\n" " wigSetSpanOrStep input.wig output.wig\n" "options:\n" " -span=N set span variable to given value\n" " -step=N set step variable to given value\n" "Either step or span must be used with fixedStep format wigs, only span with variableStep.\n" ); } static struct optionSpec options[] = { {"step", OPTION_INT}, {"span", OPTION_INT}, {NULL, 0}, }; static void handleStepLine(struct lineFile *lf, char *line, int firstWordSize, boolean isVarStep, FILE *f) /* Handle a line that starts with fixedStep or variableStep */ { char *firstPair = skipLeadingSpaces(line + firstWordSize); mustWrite(f, line, firstWordSize); struct slPair *pair, *pairList = slPairFromString(firstPair); boolean seenStep = FALSE, seenSpan = FALSE; for (pair = pairList; pair != NULL; pair = pair->next) { if (gotStep && sameString(pair->name, "step")) { fprintf(f, " step=%d", step); seenStep = TRUE; } else if (gotSpan && sameString(pair->name, "span")) { fprintf(f, " span=%d", span); seenSpan = TRUE; } else { fprintf(f, " %s=%s", pair->name, (char *)pair->val); } } if (gotStep && !seenStep) { if (isVarStep) errAbort("%s isn't fixed step line %d, can't set step", lf->fileName, lf->lineIx); fprintf(f, " step=%d", step); } if (gotSpan && !seenSpan) fprintf(f, " span=%d", span); fprintf(f, "\n"); } void wigSetSpanOrStep(char *input, char *output) /* wigSetSpanOrStep - Set span or step variables in an ascii format wiggle file. */ { struct lineFile *lf = lineFileOpen(input, TRUE); FILE *f = mustOpen(output, "w"); char *line; int lineSize; char *fixedPat = "fixedStep"; int fixedPatSize = strlen(fixedPat); char *varPat = "variableStep"; int varPatSize = strlen(varPat); while (lineFileNext(lf, &line, &lineSize)) { if (startsWithWord(fixedPat, line)) handleStepLine(lf, line, fixedPatSize, FALSE, f); else if (startsWithWord(varPat, line)) handleStepLine(lf, line, varPatSize, TRUE, f); else { mustWrite(f, line, lineSize-1); fputc('\n', f); } } carefulClose(&f); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); step = optionInt("step", 0); span = optionInt("span", 0); if (step != 0) gotStep = TRUE; if (span != 0) gotSpan = TRUE; if (!step && !span) usage(); wigSetSpanOrStep(argv[1], argv[2]); return 0; }