if (fn_list == 0 && fn_ref) fn_list = samfaipath(fn_ref);
// open file handlers
if ((in = samopen(argv[optind], in_mode, fn_list)) == 0) {
- fprintf(stderr, "[main_samview] fail to open file for reading.\n");
+ fprintf(stderr, "[main_samview] fail to open \"%s\" for reading.\n", argv[optind]);
+ ret = 1;
goto view_end;
}
if (in->header == 0) {
- fprintf(stderr, "[main_samview] fail to read the header.\n");
+ fprintf(stderr, "[main_samview] fail to read the header from \"%s\".\n", argv[optind]);
+ ret = 1;
goto view_end;
}
if ((out = samopen(fn_out? fn_out : "-", out_mode, in->header)) == 0) {
- fprintf(stderr, "[main_samview] fail to open file for writing.\n");
+ fprintf(stderr, "[main_samview] fail to open \"%s\" for writing.\n", fn_out? fn_out : "standard output");
+ ret = 1;
goto view_end;
}
if (is_header_only) goto view_end; // no need to print alignments
samwrite(out, b); // write the alignment to `out'
}
}
- if (r < -1) fprintf(stderr, "[main_samview] truncated file.\n");
+ if (r < -1) {
+ fprintf(stderr, "[main_samview] truncated file.\n");
+ ret = 1;
+ }
bam_destroy1(b);
} else { // retrieve alignments in specified regions
int i;
int tid, beg, end;
bam_parse_region(in->header, argv[i], &tid, &beg, &end); // parse a region in the format like `chr2:100-200'
if (tid < 0) { // reference name is not found
- fprintf(stderr, "[main_samview] fail to get the reference name. Continue anyway.\n");
+ fprintf(stderr, "[main_samview] region \"%s\" specifies an unknown reference name. Continue anyway.\n", argv[i]);
continue;
}
// fetch alignments
if (bam_fetch(in->x.bam, idx, tid, beg, end, out, view_func) < 0) {
- fprintf(stderr, "[main_samview] retrieval failed due to truncated file or corrupt BAM index file\n");
+ fprintf(stderr, "[main_samview] retrieval of region \"%s\" failed due to truncated file or corrupt BAM index file\n", argv[i]);
ret = 1;
break;
}