X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Ffastq-qualadj.c;h=488fdade28e41dbba7f887f8fd3680d740656563;hb=29c57c81e12aaa9a7a5b5fe2f6e3864c6ada81d3;hp=b14e8c9097264a5dea22afcd85f2ffe6eab1760a;hpb=bcdcb70445c167236311be383233e8dff4c9d54c;p=fastq-tools.git diff --git a/src/fastq-qualadj.c b/src/fastq-qualadj.c index b14e8c9..488fdad 100644 --- a/src/fastq-qualadj.c +++ b/src/fastq-qualadj.c @@ -51,7 +51,7 @@ void fastq_qualadj(FILE* fin, FILE* fout, int offset) while (fastq_next(fqf, seq)) { for (i = 0; i < seq->qual.n; ++i) { - c = (int) seq->qual.s[i] - offset; + c = (int) seq->qual.s[i] + offset; c = c < 0 ? 0 : (c > 126 ? 126: c); seq->qual.s[i] = (char) c; } @@ -81,12 +81,40 @@ int main(int argc, char* argv[]) int opt; int opt_idx; + char* tmp; + size_t tmplen; + while (1) { - opt = getopt_long(argc, argv, "hV", long_options, &opt_idx); + opt = getopt_long(argc, argv, "hV0:1::2::3::4::5::6::7::8::9::", long_options, &opt_idx); if (opt == -1) break; switch(opt) { + + /* this is a bit of a hack to prevent getopt from choking on + * negative numbers. */ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + tmplen = 2; + if (optarg) tmplen += strlen(optarg); + tmp = malloc(tmplen + 1); + + if (optarg) snprintf(tmp, tmplen + 1, "-%c%s", (char) opt, optarg); + else snprintf(tmp, tmplen + 1, "-%c", (char) opt); + + offset = atoi(tmp); + free(tmp); + break; + + case 'h': print_help(); return 0; @@ -103,13 +131,11 @@ int main(int argc, char* argv[]) } } - if (optind >= argc) { + if (offset == 0 && optind >= argc) { fprintf(stderr, "An offset must be specified.\n"); return 1; } - - offset = atoi(argv[optind++]); - + else if (offset == 0) offset = atoi(argv[optind++]); FILE* fin;