X-Git-Url: https://git.donarmstrong.com/?p=fastq-tools.git;a=blobdiff_plain;f=src%2Fparse.c;h=9a7774d381a982972a67e4c806ebb46b7066a7d1;hp=bec5ac346093a21cd39baef72b88e8625186728e;hb=281a4b6cc97b42185915491f2f661b33d8ccd461;hpb=40ab4c0cde1bfee1616777995998b0cbc5ffc741 diff --git a/src/parse.c b/src/parse.c index bec5ac3..9a7774d 100644 --- a/src/parse.c +++ b/src/parse.c @@ -176,7 +176,7 @@ int fastq_next(fastq_t* f, seq_t* seq) /* read id1 */ else if (f->state == STATE_ID1) { - if (*f->c == '@') { + if (*f->c == '@' || *f->c == '>') { f->c++; fastq_get_line(f, &seq->id1); if (f->state == STATE_EOF) return 0; @@ -184,7 +184,9 @@ int fastq_next(fastq_t* f, seq_t* seq) f->state = STATE_SEQ; } else { - fprintf(stderr, "Malformed FASTQ file: expecting an '@', saw a '%c'\n", *f->c); + fprintf(stderr, + "Malformed FASTQ file: expecting an '@' or '>', saw a '%c'\n", + *f->c); exit(1); } } @@ -207,8 +209,12 @@ int fastq_next(fastq_t* f, seq_t* seq) f->state = STATE_QUAL; } else { - fprintf(stderr, "Malformed FASTQ file: expecting an '+', saw a '%c'\n", *f->c); - exit(1); + /* fasta style entry */ + seq->id2.s[0] = '\0'; + seq->qual.s[0] = '\0'; + + f->state = STATE_ID1; + break; } } @@ -233,3 +239,23 @@ int fastq_next(fastq_t* f, seq_t* seq) } +void fastq_print(FILE* fout, seq_t* seq) +{ + /* FASTQ */ + if (seq->qual.n > 0) { + fprintf(fout, "@%s\n%s\n+%s\n%s\n", + seq->id1.s, + seq->seq.s, + seq->id2.s, + seq->qual.s ); + } + + /* FASTA */ + else { + fprintf(fout, ">%s\n%s\n", + seq->id1.s, + seq->seq.s ); + } +} + +