annotate fastx_toolkit-0.0.6/src/libfastx/fastx_args.c @ 3:997f5136985f draft default tip

Uploaded
author xilinxu
date Thu, 14 Aug 2014 04:52:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
997f5136985f Uploaded
xilinxu
parents:
diff changeset
1 /*
997f5136985f Uploaded
xilinxu
parents:
diff changeset
2 FASTX-toolkit - FASTA/FASTQ preprocessing tools.
997f5136985f Uploaded
xilinxu
parents:
diff changeset
3 Copyright (C) 2009 A. Gordon (gordon@cshl.edu)
997f5136985f Uploaded
xilinxu
parents:
diff changeset
4
997f5136985f Uploaded
xilinxu
parents:
diff changeset
5 This program is free software: you can redistribute it and/or modify
997f5136985f Uploaded
xilinxu
parents:
diff changeset
6 it under the terms of the GNU Affero General Public License as
997f5136985f Uploaded
xilinxu
parents:
diff changeset
7 published by the Free Software Foundation, either version 3 of the
997f5136985f Uploaded
xilinxu
parents:
diff changeset
8 License, or (at your option) any later version.
997f5136985f Uploaded
xilinxu
parents:
diff changeset
9
997f5136985f Uploaded
xilinxu
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
997f5136985f Uploaded
xilinxu
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
997f5136985f Uploaded
xilinxu
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
997f5136985f Uploaded
xilinxu
parents:
diff changeset
13 GNU Affero General Public License for more details.
997f5136985f Uploaded
xilinxu
parents:
diff changeset
14
997f5136985f Uploaded
xilinxu
parents:
diff changeset
15 You should have received a copy of the GNU Affero General Public License
997f5136985f Uploaded
xilinxu
parents:
diff changeset
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
997f5136985f Uploaded
xilinxu
parents:
diff changeset
17 */
997f5136985f Uploaded
xilinxu
parents:
diff changeset
18 #include <err.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
19 #include <stdio.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
20 #include <stdlib.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
21 #include <unistd.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
22 #include <sys/types.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
23 #include <string.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
24 #include <getopt.h>
997f5136985f Uploaded
xilinxu
parents:
diff changeset
25
997f5136985f Uploaded
xilinxu
parents:
diff changeset
26 #include "fastx_args.h"
997f5136985f Uploaded
xilinxu
parents:
diff changeset
27
997f5136985f Uploaded
xilinxu
parents:
diff changeset
28 /*
997f5136985f Uploaded
xilinxu
parents:
diff changeset
29 * Each program should specify its own usage string
997f5136985f Uploaded
xilinxu
parents:
diff changeset
30 */
997f5136985f Uploaded
xilinxu
parents:
diff changeset
31 extern char* usage;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
32
997f5136985f Uploaded
xilinxu
parents:
diff changeset
33
997f5136985f Uploaded
xilinxu
parents:
diff changeset
34 /*
997f5136985f Uploaded
xilinxu
parents:
diff changeset
35 * globals.. yuck
997f5136985f Uploaded
xilinxu
parents:
diff changeset
36 *
997f5136985f Uploaded
xilinxu
parents:
diff changeset
37 * some day this will be a stand alone class
997f5136985f Uploaded
xilinxu
parents:
diff changeset
38 */
997f5136985f Uploaded
xilinxu
parents:
diff changeset
39 const char* input_filename = "-";
997f5136985f Uploaded
xilinxu
parents:
diff changeset
40 const char* output_filename = "-";
997f5136985f Uploaded
xilinxu
parents:
diff changeset
41 int verbose = 0;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
42 int compress_output = 0 ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
43 FILE* report_file;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
44
997f5136985f Uploaded
xilinxu
parents:
diff changeset
45 const char* get_input_filename()
997f5136985f Uploaded
xilinxu
parents:
diff changeset
46 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
47 return input_filename;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
48 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
49
997f5136985f Uploaded
xilinxu
parents:
diff changeset
50 const char* get_output_filename()
997f5136985f Uploaded
xilinxu
parents:
diff changeset
51 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
52 return output_filename;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
53 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
54
997f5136985f Uploaded
xilinxu
parents:
diff changeset
55 int verbose_flag()
997f5136985f Uploaded
xilinxu
parents:
diff changeset
56 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
57 return verbose;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
58 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
59
997f5136985f Uploaded
xilinxu
parents:
diff changeset
60 int compress_output_flag()
997f5136985f Uploaded
xilinxu
parents:
diff changeset
61 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
62 return compress_output ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
63 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
64
997f5136985f Uploaded
xilinxu
parents:
diff changeset
65 FILE* get_report_file()
997f5136985f Uploaded
xilinxu
parents:
diff changeset
66 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
67 return report_file;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
68 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
69
997f5136985f Uploaded
xilinxu
parents:
diff changeset
70 int fastx_parse_cmdline( int argc, char* argv[],
997f5136985f Uploaded
xilinxu
parents:
diff changeset
71 const char* program_options,
997f5136985f Uploaded
xilinxu
parents:
diff changeset
72 parse_argument_func program_parse_args )
997f5136985f Uploaded
xilinxu
parents:
diff changeset
73 {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
74 int opt;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
75
997f5136985f Uploaded
xilinxu
parents:
diff changeset
76 char combined_options_string[100];
997f5136985f Uploaded
xilinxu
parents:
diff changeset
77
997f5136985f Uploaded
xilinxu
parents:
diff changeset
78 strcpy(combined_options_string, "zhvi:o:");
997f5136985f Uploaded
xilinxu
parents:
diff changeset
79 strcat(combined_options_string, program_options);
997f5136985f Uploaded
xilinxu
parents:
diff changeset
80
997f5136985f Uploaded
xilinxu
parents:
diff changeset
81 report_file = stderr ; //since the default output is STDOUT, the report goes by default to STDERR
997f5136985f Uploaded
xilinxu
parents:
diff changeset
82
997f5136985f Uploaded
xilinxu
parents:
diff changeset
83 while ( (opt = getopt(argc, argv, combined_options_string) ) != -1 ) {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
84
997f5136985f Uploaded
xilinxu
parents:
diff changeset
85 // Parse the program's custom options
997f5136985f Uploaded
xilinxu
parents:
diff changeset
86 if ( strchr(program_options, opt) != NULL ) {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
87 if (!program_parse_args(optind, opt, optarg))
997f5136985f Uploaded
xilinxu
parents:
diff changeset
88 return 0;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
89 continue;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
90 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
91
997f5136985f Uploaded
xilinxu
parents:
diff changeset
92 //Parse the default options
997f5136985f Uploaded
xilinxu
parents:
diff changeset
93 switch(opt) {
997f5136985f Uploaded
xilinxu
parents:
diff changeset
94 case 'h':
997f5136985f Uploaded
xilinxu
parents:
diff changeset
95 printf("%s", usage);
997f5136985f Uploaded
xilinxu
parents:
diff changeset
96 exit(1);
997f5136985f Uploaded
xilinxu
parents:
diff changeset
97
997f5136985f Uploaded
xilinxu
parents:
diff changeset
98 case 'v':
997f5136985f Uploaded
xilinxu
parents:
diff changeset
99 verbose = 1 ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
100 break ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
101
997f5136985f Uploaded
xilinxu
parents:
diff changeset
102 case 'z':
997f5136985f Uploaded
xilinxu
parents:
diff changeset
103 compress_output = 1 ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
104 break ;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
105
997f5136985f Uploaded
xilinxu
parents:
diff changeset
106
997f5136985f Uploaded
xilinxu
parents:
diff changeset
107 case 'i':
997f5136985f Uploaded
xilinxu
parents:
diff changeset
108 if (optarg==NULL)
997f5136985f Uploaded
xilinxu
parents:
diff changeset
109 errx(1,"[-i] option requires FILENAME argument");
997f5136985f Uploaded
xilinxu
parents:
diff changeset
110 input_filename = optarg;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
111 break;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
112
997f5136985f Uploaded
xilinxu
parents:
diff changeset
113 case 'o':
997f5136985f Uploaded
xilinxu
parents:
diff changeset
114 if (optarg==NULL)
997f5136985f Uploaded
xilinxu
parents:
diff changeset
115 errx(1,"[-o] option requires FILENAME argument");
997f5136985f Uploaded
xilinxu
parents:
diff changeset
116 output_filename = optarg;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
117
997f5136985f Uploaded
xilinxu
parents:
diff changeset
118 //The user specified a specific output file, so the report can go to STDOUT
997f5136985f Uploaded
xilinxu
parents:
diff changeset
119 report_file = stdout;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
120 break;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
121
997f5136985f Uploaded
xilinxu
parents:
diff changeset
122 default:
997f5136985f Uploaded
xilinxu
parents:
diff changeset
123 printf("use '-h' for usage information.\n");
997f5136985f Uploaded
xilinxu
parents:
diff changeset
124 exit(1);
997f5136985f Uploaded
xilinxu
parents:
diff changeset
125 break;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
126
997f5136985f Uploaded
xilinxu
parents:
diff changeset
127 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
128 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
129
997f5136985f Uploaded
xilinxu
parents:
diff changeset
130 return 1;
997f5136985f Uploaded
xilinxu
parents:
diff changeset
131 }
997f5136985f Uploaded
xilinxu
parents:
diff changeset
132