ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-1.0/utils/sysbuilder/simpleBuilderCmd.c
Revision: 1424
Committed: Wed Jul 28 04:59:35 2004 UTC (19 years, 11 months ago) by tim
Content type: text/plain
File size: 11538 byte(s)
Log Message:
add simpleBuilder

File Contents

# Content
1 /*
2 File autogenerated by gengetopt version 2.11
3 generated with the following command:
4 /home/maul/gezelter/tim/program/gengetopt-2.11/src/gengetopt -F simpleBuilderCmd -u
5
6 The developers of gengetopt consider the fixed text that goes in all
7 gengetopt output files to be in the public domain:
8 we make no copyright claims on it.
9 */
10
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15
16 /* If we use autoconf. */
17 #ifdef HAVE_CONFIG_H
18 #include "config.h"
19 #endif
20
21 #include "getopt.h"
22
23 #include "simpleBuilderCmd.h"
24
25 void
26 cmdline_parser_print_version (void)
27 {
28 printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
29 }
30
31 void
32 cmdline_parser_print_help (void)
33 {
34 cmdline_parser_print_version ();
35 printf("\n"
36 "Usage: %s [OPTIONS]... [FILES]...\n", CMDLINE_PARSER_PACKAGE);
37 printf("\n");
38 printf(" -h, --help Print help and exit\n");
39 printf(" -V, --version Print version and exit\n");
40 printf(" -I, --include=STRING File name that should be included at the top of \n the output bass file.\n");
41 printf(" -o, --output=STRING Output file name\n");
42 printf(" --latticetype=STRING Lattice type string. Valid types are fcc,hcp,bcc \n and hcp-water.\n");
43 printf(" --density=DOUBLE density g/cm^3\n");
44 printf(" --ndensity=DOUBLE number density\n");
45 printf(" --nx=INT number of unit cells in x\n");
46 printf(" --ny=INT number of unit cells in y\n");
47 printf(" --nz=INT number of unit cells in z\n");
48 printf(" --a1=DOUBLE lattice spacing in Angstroms h - for cubic \n lattice, specify this parameter\n");
49 printf(" --a2=DOUBLE lattice spacing in Angstroms k\n");
50 printf(" --a3=DOUBLE lattice spacing in Angstroms l\n");
51 }
52
53
54 static char *gengetopt_strdup (const char *s);
55
56 /* gengetopt_strdup() */
57 /* strdup.c replacement of strdup, which is not standard */
58 char *
59 gengetopt_strdup (const char *s)
60 {
61 char *result = (char*)malloc(strlen(s) + 1);
62 if (result == (char*)0)
63 return (char*)0;
64 strcpy(result, s);
65 return result;
66 }
67
68 int
69 cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
70 {
71 int c; /* Character of the parsed option. */
72 int i; /* Counter */
73 struct include_list
74 {
75 char * include_arg;
76 struct include_list * next;
77 };
78 struct include_list * include_list = NULL,* include_new = NULL;
79
80 int missing_required_options = 0;
81
82 args_info->help_given = 0 ;
83 args_info->version_given = 0 ;
84 args_info->include_given = 0 ;
85 args_info->output_given = 0 ;
86 args_info->latticetype_given = 0 ;
87 args_info->density_given = 0 ;
88 args_info->ndensity_given = 0 ;
89 args_info->nx_given = 0 ;
90 args_info->ny_given = 0 ;
91 args_info->nz_given = 0 ;
92 args_info->a1_given = 0 ;
93 args_info->a2_given = 0 ;
94 args_info->a3_given = 0 ;
95 #define clear_args() { \
96 args_info->include_arg = NULL; \
97 args_info->output_arg = NULL; \
98 args_info->latticetype_arg = NULL; \
99 }
100
101 clear_args();
102
103 args_info->inputs = NULL;
104 args_info->inputs_num = 0;
105
106 optarg = 0;
107 optind = 1;
108 opterr = 1;
109 optopt = '?';
110
111 while (1)
112 {
113 int option_index = 0;
114 char *stop_char;
115
116 static struct option long_options[] = {
117 { "help", 0, NULL, 'h' },
118 { "version", 0, NULL, 'V' },
119 { "include", 1, NULL, 'I' },
120 { "output", 1, NULL, 'o' },
121 { "latticetype", 1, NULL, 0 },
122 { "density", 1, NULL, 0 },
123 { "ndensity", 1, NULL, 0 },
124 { "nx", 1, NULL, 0 },
125 { "ny", 1, NULL, 0 },
126 { "nz", 1, NULL, 0 },
127 { "a1", 1, NULL, 0 },
128 { "a2", 1, NULL, 0 },
129 { "a3", 1, NULL, 0 },
130 { NULL, 0, NULL, 0 }
131 };
132
133 stop_char = 0;
134 c = getopt_long (argc, argv, "hVI:o:", long_options, &option_index);
135
136 if (c == -1) break; /* Exit from `while (1)' loop. */
137
138 switch (c)
139 {
140 case 'h': /* Print help and exit. */
141 clear_args ();
142 cmdline_parser_print_help ();
143 exit (EXIT_SUCCESS);
144
145 case 'V': /* Print version and exit. */
146 clear_args ();
147 cmdline_parser_print_version ();
148 exit (EXIT_SUCCESS);
149
150 case 'I': /* File name that should be included at the top of the output bass file.. */
151 args_info->include_given++;
152 include_new = (struct include_list *) malloc (sizeof (struct include_list));
153 include_new->next = include_list;
154 include_list = include_new;
155 include_new->include_arg = gengetopt_strdup (optarg);
156 break;
157
158 case 'o': /* Output file name. */
159 if (args_info->output_given)
160 {
161 fprintf (stderr, "%s: `--output' (`-o') option given more than once\n", CMDLINE_PARSER_PACKAGE);
162 clear_args ();
163 exit (EXIT_FAILURE);
164 }
165 args_info->output_given = 1;
166 args_info->output_arg = gengetopt_strdup (optarg);
167 break;
168
169
170 case 0: /* Long option with no short option */
171 /* Lattice type string. Valid types are fcc,hcp,bcc and hcp-water.. */
172 if (strcmp (long_options[option_index].name, "latticetype") == 0)
173 {
174 if (args_info->latticetype_given)
175 {
176 fprintf (stderr, "%s: `--latticetype' option given more than once\n", CMDLINE_PARSER_PACKAGE);
177 clear_args ();
178 exit (EXIT_FAILURE);
179 }
180 args_info->latticetype_given = 1;
181 args_info->latticetype_arg = gengetopt_strdup (optarg);
182 break;
183 }
184
185 /* density g/cm^3. */
186 else if (strcmp (long_options[option_index].name, "density") == 0)
187 {
188 if (args_info->density_given)
189 {
190 fprintf (stderr, "%s: `--density' option given more than once\n", CMDLINE_PARSER_PACKAGE);
191 clear_args ();
192 exit (EXIT_FAILURE);
193 }
194 args_info->density_given = 1;
195 args_info->density_arg = strtod (optarg, NULL);
196 break;
197 }
198
199 /* number density. */
200 else if (strcmp (long_options[option_index].name, "ndensity") == 0)
201 {
202 if (args_info->ndensity_given)
203 {
204 fprintf (stderr, "%s: `--ndensity' option given more than once\n", CMDLINE_PARSER_PACKAGE);
205 clear_args ();
206 exit (EXIT_FAILURE);
207 }
208 args_info->ndensity_given = 1;
209 args_info->ndensity_arg = strtod (optarg, NULL);
210 break;
211 }
212
213 /* number of unit cells in x. */
214 else if (strcmp (long_options[option_index].name, "nx") == 0)
215 {
216 if (args_info->nx_given)
217 {
218 fprintf (stderr, "%s: `--nx' option given more than once\n", CMDLINE_PARSER_PACKAGE);
219 clear_args ();
220 exit (EXIT_FAILURE);
221 }
222 args_info->nx_given = 1;
223 args_info->nx_arg = strtol (optarg,&stop_char,0);
224 break;
225 }
226
227 /* number of unit cells in y. */
228 else if (strcmp (long_options[option_index].name, "ny") == 0)
229 {
230 if (args_info->ny_given)
231 {
232 fprintf (stderr, "%s: `--ny' option given more than once\n", CMDLINE_PARSER_PACKAGE);
233 clear_args ();
234 exit (EXIT_FAILURE);
235 }
236 args_info->ny_given = 1;
237 args_info->ny_arg = strtol (optarg,&stop_char,0);
238 break;
239 }
240
241 /* number of unit cells in z. */
242 else if (strcmp (long_options[option_index].name, "nz") == 0)
243 {
244 if (args_info->nz_given)
245 {
246 fprintf (stderr, "%s: `--nz' option given more than once\n", CMDLINE_PARSER_PACKAGE);
247 clear_args ();
248 exit (EXIT_FAILURE);
249 }
250 args_info->nz_given = 1;
251 args_info->nz_arg = strtol (optarg,&stop_char,0);
252 break;
253 }
254
255 /* lattice spacing in Angstroms h - for cubic lattice, specify this parameter. */
256 else if (strcmp (long_options[option_index].name, "a1") == 0)
257 {
258 if (args_info->a1_given)
259 {
260 fprintf (stderr, "%s: `--a1' option given more than once\n", CMDLINE_PARSER_PACKAGE);
261 clear_args ();
262 exit (EXIT_FAILURE);
263 }
264 args_info->a1_given = 1;
265 args_info->a1_arg = strtod (optarg, NULL);
266 break;
267 }
268
269 /* lattice spacing in Angstroms k. */
270 else if (strcmp (long_options[option_index].name, "a2") == 0)
271 {
272 if (args_info->a2_given)
273 {
274 fprintf (stderr, "%s: `--a2' option given more than once\n", CMDLINE_PARSER_PACKAGE);
275 clear_args ();
276 exit (EXIT_FAILURE);
277 }
278 args_info->a2_given = 1;
279 args_info->a2_arg = strtod (optarg, NULL);
280 break;
281 }
282
283 /* lattice spacing in Angstroms l. */
284 else if (strcmp (long_options[option_index].name, "a3") == 0)
285 {
286 if (args_info->a3_given)
287 {
288 fprintf (stderr, "%s: `--a3' option given more than once\n", CMDLINE_PARSER_PACKAGE);
289 clear_args ();
290 exit (EXIT_FAILURE);
291 }
292 args_info->a3_given = 1;
293 args_info->a3_arg = strtod (optarg, NULL);
294 break;
295 }
296
297
298 case '?': /* Invalid option. */
299 /* `getopt_long' already printed an error message. */
300 exit (EXIT_FAILURE);
301
302 default: /* bug: option not considered. */
303 fprintf (stderr, "%s: option unknown: %c\n", CMDLINE_PARSER_PACKAGE, c);
304 abort ();
305 } /* switch */
306 } /* while */
307
308
309 if (! args_info->nx_given)
310 {
311 fprintf (stderr, "%s: '--nx' option required\n", CMDLINE_PARSER_PACKAGE);
312 missing_required_options = 1;
313 }
314 if (! args_info->ny_given)
315 {
316 fprintf (stderr, "%s: '--ny' option required\n", CMDLINE_PARSER_PACKAGE);
317 missing_required_options = 1;
318 }
319 if (! args_info->nz_given)
320 {
321 fprintf (stderr, "%s: '--nz' option required\n", CMDLINE_PARSER_PACKAGE);
322 missing_required_options = 1;
323 }
324 if (! args_info->a1_given)
325 {
326 fprintf (stderr, "%s: '--a1' option required\n", CMDLINE_PARSER_PACKAGE);
327 missing_required_options = 1;
328 }
329 if ( missing_required_options )
330 exit (EXIT_FAILURE);
331
332 if (args_info->include_given)
333 {
334 args_info->include_arg = (char * *) malloc (args_info->include_given * sizeof (char *));
335 for (i = 0; i < args_info->include_given; i++)
336 {
337 args_info->include_arg [i] = include_list->include_arg;
338 include_list = include_list->next;
339 }
340 }
341
342 if (optind < argc)
343 {
344 int i = 0 ;
345
346 args_info->inputs_num = argc - optind ;
347 args_info->inputs =
348 (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
349 while (optind < argc)
350 args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind++]) ;
351 }
352
353 return 0;
354 }