/* rnaFoldBig - Run RNAfold repeatedly. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "dnaseq.h" #include "fa.h" #include "portable.h" void usage() /* Explain usage and exit. */ { errAbort( "rnaFoldBig - Run RNAfold repeatedly\n" "usage:\n" " rnaFoldBig in.fa foldDir \n" "The output goes into foldDir\n" ); } static struct optionSpec options[] = { {NULL, 0}, }; void rnaFoldBig(char *inFa, char *outDir) /* rnaFoldBig - Run RNAfold repeatedly. */ { char outFile[PATH_LEN]; char command[2*PATH_LEN]; struct lineFile *lf = lineFileOpen(inFa, TRUE); struct dnaSeq seq; FILE *f; makeDir(outDir); while (faSpeedReadNext(lf, &seq.dna, &seq.size, &seq.name)) { safef(outFile, sizeof(outFile), "%s/%s", outDir, seq.name); safef(command, sizeof(command), "RNAfold > %s", outFile); f = popen(command, "w"); if (f == NULL) errnoAbort("Couldn't %s", command); mustWrite(f, seq.dna, seq.size); if (pclose(f) == -1) errnoAbort("Couldn't close pipe to %s", command); } } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); rnaFoldBig(argv[1], argv[2]); return 0; }