ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/src/applications/nanoRodBuilder/nanorodBuilderCmd.c
Revision: 2215
Committed: Thu Apr 28 00:24:11 2005 UTC (19 years, 3 months ago) by chuckv
Content type: text/plain
File size: 11642 byte(s)
Log Message:
Fixed issues with nanoRodBuilder....

File Contents

# User Rev Content
1 chuckv 2164 /*
2 chuckv 2215 File autogenerated by gengetopt version 2.13
3 chuckv 2164 generated with the following command:
4     gengetopt -u --file-name=nanorodBuilderCmd
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     /* If we use autoconf. */
12     #ifdef HAVE_CONFIG_H
13     #include "config.h"
14     #endif
15    
16     #include <stdio.h>
17     #include <stdlib.h>
18     #include <string.h>
19    
20     #include "getopt.h"
21    
22     #include "nanorodBuilderCmd.h"
23    
24     static
25     void clear_given (struct gengetopt_args_info *args_info);
26     static
27     void clear_args (struct gengetopt_args_info *args_info);
28    
29     static int
30     cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error);
31    
32 chuckv 2215 static int
33     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error);
34    
35 chuckv 2164 static char *
36     gengetopt_strdup (const char *s);
37    
38     static
39     void clear_given (struct gengetopt_args_info *args_info)
40     {
41     args_info->help_given = 0 ;
42     args_info->version_given = 0 ;
43     args_info->output_given = 0 ;
44     args_info->latticetype_given = 0 ;
45     args_info->length_given = 0 ;
46     args_info->width_given = 0 ;
47     args_info->latticeCnst_given = 0 ;
48     args_info->genGeomview_given = 0 ;
49     }
50    
51     static
52     void clear_args (struct gengetopt_args_info *args_info)
53     {
54     args_info->output_arg = NULL;
55     args_info->latticetype_arg = gengetopt_strdup ("fcc");
56 chuckv 2215 args_info->genGeomview_flag = 0;
57 chuckv 2164 }
58    
59     void
60     cmdline_parser_print_version (void)
61     {
62     printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
63     }
64    
65     void
66     cmdline_parser_print_help (void)
67     {
68     cmdline_parser_print_version ();
69 chuckv 2215 printf("\n%s\n", "Builds penta-hexagonal nanorods and outputs a xyz input file");
70     printf("\nUsage: nanorodBuilder [OPTIONS]... [FILES]...\n\n");
71 chuckv 2164 printf("%s\n"," -h, --help Print help and exit");
72     printf("%s\n"," -V, --version Print version and exit");
73     printf("%s\n"," -o, --output=STRING Output file name");
74     printf("%s\n"," --latticetype=STRING Lattice type string. Valid types are fcc,hcp,bcc. \n (default=`fcc')");
75     printf("%s\n"," --length=DOUBLE length of nanorod in Angstroms");
76     printf("%s\n"," --width=DOUBLE diameter of nanorod in Angstroms");
77     printf("%s\n"," --latticeCnst=DOUBLE lattice spacing in Angstrons for cubic lattice");
78 chuckv 2215 printf("%s\n"," --genGeomview generate a geomview file with the object geometry \n (default=off)");
79    
80 chuckv 2164 }
81    
82     void
83     cmdline_parser_init (struct gengetopt_args_info *args_info)
84     {
85     clear_given (args_info);
86     clear_args (args_info);
87    
88     args_info->inputs = NULL;
89     args_info->inputs_num = 0;
90     }
91    
92     void
93     cmdline_parser_free (struct gengetopt_args_info *args_info)
94     {
95    
96 chuckv 2215 unsigned int i;
97 chuckv 2164 if (args_info->output_arg)
98     {
99     free (args_info->output_arg); /* free previous argument */
100     args_info->output_arg = 0;
101     }
102     if (args_info->latticetype_arg)
103     {
104     free (args_info->latticetype_arg); /* free previous argument */
105     args_info->latticetype_arg = 0;
106     }
107    
108     for (i = 0; i < args_info->inputs_num; ++i)
109     free (args_info->inputs [i]);
110    
111     if (args_info->inputs_num)
112     free (args_info->inputs);
113    
114     clear_given (args_info);
115     }
116    
117     /* gengetopt_strdup() */
118     /* strdup.c replacement of strdup, which is not standard */
119     char *
120     gengetopt_strdup (const char *s)
121     {
122     char *result = NULL;
123     if (!s)
124     return result;
125    
126     result = (char*)malloc(strlen(s) + 1);
127     if (result == (char*)0)
128     return (char*)0;
129     strcpy(result, s);
130     return result;
131     }
132    
133     int
134     cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
135     {
136 chuckv 2215 return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
137 chuckv 2164 }
138    
139     int
140 chuckv 2215 cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
141 chuckv 2164 {
142     int result;
143 chuckv 2215
144     result = cmdline_parser_internal (argc, argv, args_info, override, initialize, check_required, NULL);
145    
146     if (result == EXIT_FAILURE)
147     {
148     cmdline_parser_free (args_info);
149     exit (EXIT_FAILURE);
150     }
151 chuckv 2164
152 chuckv 2215 return result;
153     }
154    
155     int
156     cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
157     {
158     int result = EXIT_SUCCESS;
159    
160     if (cmdline_parser_required2(args_info, prog_name, NULL) > 0)
161     result = EXIT_FAILURE;
162    
163 chuckv 2164 if (result == EXIT_FAILURE)
164     {
165     cmdline_parser_free (args_info);
166     exit (EXIT_FAILURE);
167     }
168    
169     return result;
170     }
171    
172     int
173 chuckv 2215 cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
174     {
175     int error = 0;
176    
177     if (! args_info->length_given)
178     {
179     fprintf (stderr, "%s: '--length' option required%s\n", prog_name, (additional_error ? additional_error : ""));
180     error = 1;
181     }
182     if (! args_info->width_given)
183     {
184     fprintf (stderr, "%s: '--width' option required%s\n", prog_name, (additional_error ? additional_error : ""));
185     error = 1;
186     }
187     if (! args_info->latticeCnst_given)
188     {
189     fprintf (stderr, "%s: '--latticeCnst' option required%s\n", prog_name, (additional_error ? additional_error : ""));
190     error = 1;
191     }
192    
193     return error;
194     }
195    
196     int
197 chuckv 2164 cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error)
198     {
199     int c; /* Character of the parsed option. */
200 chuckv 2215
201 chuckv 2164 int error = 0;
202     struct gengetopt_args_info local_args_info;
203    
204     if (initialize)
205     cmdline_parser_init (args_info);
206    
207     cmdline_parser_init (&local_args_info);
208    
209     optarg = 0;
210     optind = 1;
211     opterr = 1;
212     optopt = '?';
213    
214     while (1)
215     {
216     int option_index = 0;
217     char *stop_char;
218    
219     static struct option long_options[] = {
220     { "help", 0, NULL, 'h' },
221     { "version", 0, NULL, 'V' },
222     { "output", 1, NULL, 'o' },
223     { "latticetype", 1, NULL, 0 },
224     { "length", 1, NULL, 0 },
225     { "width", 1, NULL, 0 },
226     { "latticeCnst", 1, NULL, 0 },
227 chuckv 2215 { "genGeomview", 0, NULL, 0 },
228 chuckv 2164 { NULL, 0, NULL, 0 }
229     };
230    
231     stop_char = 0;
232     c = getopt_long (argc, argv, "hVo:", long_options, &option_index);
233    
234     if (c == -1) break; /* Exit from `while (1)' loop. */
235    
236     switch (c)
237     {
238     case 'h': /* Print help and exit. */
239     cmdline_parser_print_help ();
240     exit (EXIT_SUCCESS);
241    
242     case 'V': /* Print version and exit. */
243     cmdline_parser_print_version ();
244     exit (EXIT_SUCCESS);
245    
246     case 'o': /* Output file name. */
247     if (local_args_info.output_given)
248     {
249 chuckv 2215 fprintf (stderr, "%s: `--output' (`-o') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
250 chuckv 2164 goto failure;
251     }
252     if (args_info->output_given && ! override)
253     continue;
254     local_args_info.output_given = 1;
255     args_info->output_given = 1;
256     if (args_info->output_arg)
257     free (args_info->output_arg); /* free previous string */
258     args_info->output_arg = gengetopt_strdup (optarg);
259     break;
260    
261    
262     case 0: /* Long option with no short option */
263     /* Lattice type string. Valid types are fcc,hcp,bcc.. */
264     if (strcmp (long_options[option_index].name, "latticetype") == 0)
265 chuckv 2215 {
266     if (local_args_info.latticetype_given)
267     {
268     fprintf (stderr, "%s: `--latticetype' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
269     goto failure;
270     }
271     if (args_info->latticetype_given && ! override)
272     continue;
273     local_args_info.latticetype_given = 1;
274     args_info->latticetype_given = 1;
275     if (args_info->latticetype_arg)
276     free (args_info->latticetype_arg); /* free previous string */
277     args_info->latticetype_arg = gengetopt_strdup (optarg);
278     }
279 chuckv 2164 /* length of nanorod in Angstroms. */
280     else if (strcmp (long_options[option_index].name, "length") == 0)
281 chuckv 2215 {
282     if (local_args_info.length_given)
283     {
284     fprintf (stderr, "%s: `--length' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
285     goto failure;
286     }
287     if (args_info->length_given && ! override)
288     continue;
289     local_args_info.length_given = 1;
290     args_info->length_given = 1;
291     args_info->length_arg = strtod (optarg, NULL);
292     }
293 chuckv 2164 /* diameter of nanorod in Angstroms. */
294     else if (strcmp (long_options[option_index].name, "width") == 0)
295 chuckv 2215 {
296     if (local_args_info.width_given)
297     {
298     fprintf (stderr, "%s: `--width' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
299     goto failure;
300     }
301     if (args_info->width_given && ! override)
302     continue;
303     local_args_info.width_given = 1;
304     args_info->width_given = 1;
305     args_info->width_arg = strtod (optarg, NULL);
306     }
307 chuckv 2164 /* lattice spacing in Angstrons for cubic lattice. */
308     else if (strcmp (long_options[option_index].name, "latticeCnst") == 0)
309 chuckv 2215 {
310     if (local_args_info.latticeCnst_given)
311     {
312     fprintf (stderr, "%s: `--latticeCnst' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
313     goto failure;
314     }
315     if (args_info->latticeCnst_given && ! override)
316     continue;
317     local_args_info.latticeCnst_given = 1;
318     args_info->latticeCnst_given = 1;
319     args_info->latticeCnst_arg = strtod (optarg, NULL);
320     }
321 chuckv 2164 /* generate a geomview file with the object geometry. */
322     else if (strcmp (long_options[option_index].name, "genGeomview") == 0)
323 chuckv 2215 {
324     if (local_args_info.genGeomview_given)
325     {
326     fprintf (stderr, "%s: `--genGeomview' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
327     goto failure;
328     }
329     if (args_info->genGeomview_given && ! override)
330     continue;
331     local_args_info.genGeomview_given = 1;
332     args_info->genGeomview_given = 1;
333     args_info->genGeomview_flag = !(args_info->genGeomview_flag);
334     }
335 chuckv 2164
336     break;
337     case '?': /* Invalid option. */
338     /* `getopt_long' already printed an error message. */
339     goto failure;
340    
341     default: /* bug: option not considered. */
342     fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
343     abort ();
344     } /* switch */
345     } /* while */
346    
347    
348    
349     if (check_required)
350     {
351 chuckv 2215 error += cmdline_parser_required2 (args_info, argv[0], additional_error);
352 chuckv 2164 }
353    
354 chuckv 2215 cmdline_parser_free (&local_args_info);
355 chuckv 2164
356     if ( error )
357     return (EXIT_FAILURE);
358    
359     if (optind < argc)
360     {
361     int i = 0 ;
362 chuckv 2215
363 chuckv 2164 args_info->inputs_num = argc - optind ;
364 chuckv 2215 args_info->inputs =
365 chuckv 2164 (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
366     while (optind < argc)
367 chuckv 2215 args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind++]) ;
368 chuckv 2164 }
369 chuckv 2215
370 chuckv 2164 return 0;
371    
372 chuckv 2215 failure:
373    
374 chuckv 2164 cmdline_parser_free (&local_args_info);
375     return (EXIT_FAILURE);
376     }