ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1879
Committed: Sun Jun 16 15:15:42 2013 UTC (11 years, 10 months ago) by gezelter
File size: 61703 byte(s)
Log Message:
MERGE OpenMD development 1783:1878 into trunk

File Contents

# User Rev Content
1 tim 310 /*
2 gezelter 1629 File autogenerated by gengetopt version 2.22.4
3 tim 310 generated with the following command:
4 gezelter 1819 gengetopt --file-name=StaticPropsCmd --unamed-opts
5 tim 310
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 gezelter 929 /* If we use autoconf. */
12     #ifdef HAVE_CONFIG_H
13     #include "config.h"
14     #endif
15 tim 310
16     #include <stdio.h>
17     #include <stdlib.h>
18     #include <string.h>
19    
20 gezelter 1629 #ifndef FIX_UNUSED
21     #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
22     #endif
23 tim 310
24 gezelter 1879 #ifdef WIN32
25     #include "utils/wingetopt.h"
26     #else
27 gezelter 1629 #include <getopt.h>
28 gezelter 1879 #endif
29 gezelter 1629
30 tim 311 #include "StaticPropsCmd.h"
31 tim 310
32 chuckv 1128 const char *gengetopt_args_info_purpose = "";
33    
34 gezelter 1454 const char *gengetopt_args_info_usage = "Usage: StaticProps [OPTIONS]... [FILES]...";
35 chuckv 1128
36     const char *gengetopt_args_info_description = "";
37    
38     const char *gengetopt_args_info_help[] = {
39     " -h, --help Print help and exit",
40     " -V, --version Print version and exit",
41     " -i, --input=filename input dump file",
42     " -o, --output=filename output file name",
43     " -n, --step=INT process every n frame (default=`1')",
44     " -b, --nbins=INT number of bins (general purpose) \n (default=`100')",
45     " -x, --nbins_x=INT number of bins in x axis (default=`100')",
46     " -y, --nbins_y=INT number of bins in y axis (default=`100')",
47 gezelter 1440 " --nbins_z=INT number of bins in z axis (default=`100')",
48 chuckv 1128 " -a, --nanglebins=INT number of bins for cos(angle) (default=`50')",
49 chuckv 1445 " -c, --rcut=DOUBLE cutoff radius (rcut)",
50 gezelter 1454 " --dz=DOUBLE slab width (dz)",
51 chuckv 1128 " --length=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
52 chuckv 1445 " --zlength=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
53 chuckv 1128 " -z, --zoffset=DOUBLE Where to set the zero for the slab_density \n calculation (default=`0')",
54     " --sele1=selection script select the first stuntdouble set",
55     " --sele2=selection script select the second stuntdouble set",
56     " --sele3=selection script select the third stuntdouble set",
57     " --refsele=selection script\n select reference (use and only use with --gxyz)",
58 gezelter 1390 " --comsele=selection script\n select stunt doubles for center-of-mass \n reference point",
59 gezelter 1819 " --seleoffset=INT global index offset for a second object (used \n to define a vector between sites in molecule)",
60 chuckv 1128 " --molname=STRING molecule name",
61     " --begin=INT begin internal index",
62     " --end=INT end internal index",
63     " --radius=DOUBLE nanoparticle radius",
64     "\n Group: staticProps\n an option of this group is required",
65     " --bo bond order parameter (--rcut must be specified)",
66     " --bor bond order parameter as a function of radius \n (--rcut must be specified)",
67 chuckv 1180 " --bad N(theta) bond angle density within (--rcut must \n be specified)",
68 gezelter 1629 " --count count of molecules matching selection criteria \n (and associated statistics)",
69 chuckv 1128 " -g, --gofr g(r)",
70 xsun 1213 " --gofz g(z)",
71 chuckv 1128 " --r_theta g(r, cos(theta))",
72     " --r_omega g(r, cos(omega))",
73 gezelter 1440 " --r_z g(r, z)",
74 chuckv 1128 " --theta_omega g(cos(theta), cos(omega))",
75     " --gxyz g(x, y, z)",
76 gezelter 1454 " --twodgofr 2D g(r) (Slab width --dz must be specified)",
77 gezelter 1629 " -p, --p2 p2 order parameter (--sele1 must be specified, \n --sele2 is optional)",
78 chuckv 1128 " --rp2 rp2 order parameter (--sele1 and --sele2 must \n be specified)",
79     " -s, --scd scd order parameter (either --sele1, --sele2, \n --sele3 are specified or --molname, --begin, \n --end are specified)",
80     " -d, --density density plot",
81     " --slab_density slab density",
82 gezelter 1413 " --p_angle p(cos(theta))",
83 chuckv 1128 " --hxy hxy",
84     " --rho_r rho of R",
85 gezelter 1629 " --angle_r angle of R",
86 chuckv 1180 " --hullvol hull volume of nanoparticle",
87 gezelter 1629 " --rodlength length of nanorod",
88 gezelter 1843 " -Q, --tet_param tetrahedrality order parameter (Qk)",
89     " --tet_param_z spatially-resolved tetrahedrality order \n parameter Qk(z)",
90 gezelter 1879 " --rnemdz slab-resolved RNEMD statistics (temperature, \n density, velocity)",
91     " --rnemdr shell-resolved RNEMD statistics (temperature, \n density, angular velocity)",
92 chuckv 1128 0
93     };
94    
95 gezelter 1390 typedef enum {ARG_NO
96     , ARG_STRING
97     , ARG_INT
98     , ARG_DOUBLE
99     } cmdline_parser_arg_type;
100    
101 gezelter 929 static
102     void clear_given (struct gengetopt_args_info *args_info);
103     static
104     void clear_args (struct gengetopt_args_info *args_info);
105    
106     static int
107 gezelter 1629 cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info,
108 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error);
109 gezelter 929
110     static int
111     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error);
112    
113     static char *
114     gengetopt_strdup (const char *s);
115    
116     static
117     void clear_given (struct gengetopt_args_info *args_info)
118     {
119     args_info->help_given = 0 ;
120     args_info->version_given = 0 ;
121     args_info->input_given = 0 ;
122     args_info->output_given = 0 ;
123     args_info->step_given = 0 ;
124 gezelter 1041 args_info->nbins_given = 0 ;
125 xsun 955 args_info->nbins_x_given = 0 ;
126     args_info->nbins_y_given = 0 ;
127 gezelter 1440 args_info->nbins_z_given = 0 ;
128 gezelter 929 args_info->nanglebins_given = 0 ;
129 chuckv 1445 args_info->rcut_given = 0 ;
130 gezelter 1454 args_info->dz_given = 0 ;
131 gezelter 929 args_info->length_given = 0 ;
132 chuckv 1445 args_info->zlength_given = 0 ;
133 gezelter 929 args_info->zoffset_given = 0 ;
134     args_info->sele1_given = 0 ;
135     args_info->sele2_given = 0 ;
136     args_info->sele3_given = 0 ;
137     args_info->refsele_given = 0 ;
138 gezelter 1390 args_info->comsele_given = 0 ;
139 gezelter 1819 args_info->seleoffset_given = 0 ;
140 gezelter 929 args_info->molname_given = 0 ;
141     args_info->begin_given = 0 ;
142     args_info->end_given = 0 ;
143 chuckv 1091 args_info->radius_given = 0 ;
144 gezelter 1039 args_info->bo_given = 0 ;
145 chuckv 1128 args_info->bor_given = 0 ;
146 chuckv 1180 args_info->bad_given = 0 ;
147 gezelter 1629 args_info->count_given = 0 ;
148 gezelter 929 args_info->gofr_given = 0 ;
149 xsun 1213 args_info->gofz_given = 0 ;
150 gezelter 929 args_info->r_theta_given = 0 ;
151     args_info->r_omega_given = 0 ;
152 gezelter 1440 args_info->r_z_given = 0 ;
153 gezelter 929 args_info->theta_omega_given = 0 ;
154     args_info->gxyz_given = 0 ;
155 gezelter 1454 args_info->twodgofr_given = 0 ;
156 gezelter 929 args_info->p2_given = 0 ;
157 xsun 980 args_info->rp2_given = 0 ;
158 gezelter 929 args_info->scd_given = 0 ;
159     args_info->density_given = 0 ;
160     args_info->slab_density_given = 0 ;
161 gezelter 1413 args_info->p_angle_given = 0 ;
162 xsun 955 args_info->hxy_given = 0 ;
163 chuckv 1091 args_info->rho_r_given = 0 ;
164 gezelter 1629 args_info->angle_r_given = 0 ;
165 chuckv 1180 args_info->hullvol_given = 0 ;
166 gezelter 1629 args_info->rodlength_given = 0 ;
167     args_info->tet_param_given = 0 ;
168 plouden 1762 args_info->tet_param_z_given = 0 ;
169 gezelter 1879 args_info->rnemdz_given = 0 ;
170     args_info->rnemdr_given = 0 ;
171 gezelter 929 args_info->staticProps_group_counter = 0 ;
172     }
173    
174     static
175     void clear_args (struct gengetopt_args_info *args_info)
176     {
177 gezelter 1629 FIX_UNUSED (args_info);
178 gezelter 929 args_info->input_arg = NULL;
179     args_info->input_orig = NULL;
180     args_info->output_arg = NULL;
181     args_info->output_orig = NULL;
182     args_info->step_arg = 1;
183     args_info->step_orig = NULL;
184 gezelter 1041 args_info->nbins_arg = 100;
185     args_info->nbins_orig = NULL;
186 xsun 955 args_info->nbins_x_arg = 100;
187     args_info->nbins_x_orig = NULL;
188     args_info->nbins_y_arg = 100;
189     args_info->nbins_y_orig = NULL;
190 gezelter 1440 args_info->nbins_z_arg = 100;
191     args_info->nbins_z_orig = NULL;
192 gezelter 929 args_info->nanglebins_arg = 50;
193     args_info->nanglebins_orig = NULL;
194 chuckv 1445 args_info->rcut_orig = NULL;
195 gezelter 1454 args_info->dz_orig = NULL;
196 gezelter 929 args_info->length_orig = NULL;
197 chuckv 1445 args_info->zlength_orig = NULL;
198 gezelter 929 args_info->zoffset_arg = 0;
199     args_info->zoffset_orig = NULL;
200     args_info->sele1_arg = NULL;
201     args_info->sele1_orig = NULL;
202     args_info->sele2_arg = NULL;
203     args_info->sele2_orig = NULL;
204     args_info->sele3_arg = NULL;
205     args_info->sele3_orig = NULL;
206     args_info->refsele_arg = NULL;
207     args_info->refsele_orig = NULL;
208 gezelter 1390 args_info->comsele_arg = NULL;
209     args_info->comsele_orig = NULL;
210 gezelter 1819 args_info->seleoffset_orig = NULL;
211 gezelter 929 args_info->molname_arg = NULL;
212     args_info->molname_orig = NULL;
213     args_info->begin_orig = NULL;
214     args_info->end_orig = NULL;
215 chuckv 1091 args_info->radius_orig = NULL;
216 gezelter 929
217     }
218    
219 chuckv 1128 static
220     void init_args_info(struct gengetopt_args_info *args_info)
221     {
222 gezelter 1390
223    
224 chuckv 1128 args_info->help_help = gengetopt_args_info_help[0] ;
225     args_info->version_help = gengetopt_args_info_help[1] ;
226     args_info->input_help = gengetopt_args_info_help[2] ;
227     args_info->output_help = gengetopt_args_info_help[3] ;
228     args_info->step_help = gengetopt_args_info_help[4] ;
229     args_info->nbins_help = gengetopt_args_info_help[5] ;
230     args_info->nbins_x_help = gengetopt_args_info_help[6] ;
231     args_info->nbins_y_help = gengetopt_args_info_help[7] ;
232 gezelter 1440 args_info->nbins_z_help = gengetopt_args_info_help[8] ;
233     args_info->nanglebins_help = gengetopt_args_info_help[9] ;
234 chuckv 1445 args_info->rcut_help = gengetopt_args_info_help[10] ;
235 gezelter 1454 args_info->dz_help = gengetopt_args_info_help[11] ;
236     args_info->length_help = gengetopt_args_info_help[12] ;
237     args_info->zlength_help = gengetopt_args_info_help[13] ;
238     args_info->zoffset_help = gengetopt_args_info_help[14] ;
239     args_info->sele1_help = gengetopt_args_info_help[15] ;
240     args_info->sele2_help = gengetopt_args_info_help[16] ;
241     args_info->sele3_help = gengetopt_args_info_help[17] ;
242     args_info->refsele_help = gengetopt_args_info_help[18] ;
243     args_info->comsele_help = gengetopt_args_info_help[19] ;
244 gezelter 1819 args_info->seleoffset_help = gengetopt_args_info_help[20] ;
245     args_info->molname_help = gengetopt_args_info_help[21] ;
246     args_info->begin_help = gengetopt_args_info_help[22] ;
247     args_info->end_help = gengetopt_args_info_help[23] ;
248     args_info->radius_help = gengetopt_args_info_help[24] ;
249     args_info->bo_help = gengetopt_args_info_help[26] ;
250     args_info->bor_help = gengetopt_args_info_help[27] ;
251     args_info->bad_help = gengetopt_args_info_help[28] ;
252     args_info->count_help = gengetopt_args_info_help[29] ;
253     args_info->gofr_help = gengetopt_args_info_help[30] ;
254     args_info->gofz_help = gengetopt_args_info_help[31] ;
255     args_info->r_theta_help = gengetopt_args_info_help[32] ;
256     args_info->r_omega_help = gengetopt_args_info_help[33] ;
257     args_info->r_z_help = gengetopt_args_info_help[34] ;
258     args_info->theta_omega_help = gengetopt_args_info_help[35] ;
259     args_info->gxyz_help = gengetopt_args_info_help[36] ;
260     args_info->twodgofr_help = gengetopt_args_info_help[37] ;
261     args_info->p2_help = gengetopt_args_info_help[38] ;
262     args_info->rp2_help = gengetopt_args_info_help[39] ;
263     args_info->scd_help = gengetopt_args_info_help[40] ;
264     args_info->density_help = gengetopt_args_info_help[41] ;
265     args_info->slab_density_help = gengetopt_args_info_help[42] ;
266     args_info->p_angle_help = gengetopt_args_info_help[43] ;
267     args_info->hxy_help = gengetopt_args_info_help[44] ;
268     args_info->rho_r_help = gengetopt_args_info_help[45] ;
269     args_info->angle_r_help = gengetopt_args_info_help[46] ;
270     args_info->hullvol_help = gengetopt_args_info_help[47] ;
271     args_info->rodlength_help = gengetopt_args_info_help[48] ;
272     args_info->tet_param_help = gengetopt_args_info_help[49] ;
273     args_info->tet_param_z_help = gengetopt_args_info_help[50] ;
274 gezelter 1879 args_info->rnemdz_help = gengetopt_args_info_help[51] ;
275     args_info->rnemdr_help = gengetopt_args_info_help[52] ;
276 chuckv 1128
277     }
278    
279 tim 310 void
280     cmdline_parser_print_version (void)
281     {
282 gezelter 1629 printf ("%s %s\n",
283     (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE),
284     CMDLINE_PARSER_VERSION);
285 tim 310 }
286    
287 gezelter 1390 static void print_help_common(void) {
288 tim 310 cmdline_parser_print_version ();
289 chuckv 1128
290     if (strlen(gengetopt_args_info_purpose) > 0)
291     printf("\n%s\n", gengetopt_args_info_purpose);
292    
293 gezelter 1390 if (strlen(gengetopt_args_info_usage) > 0)
294     printf("\n%s\n", gengetopt_args_info_usage);
295 chuckv 1128
296 gezelter 1390 printf("\n");
297    
298 chuckv 1128 if (strlen(gengetopt_args_info_description) > 0)
299 gezelter 1629 printf("%s\n\n", gengetopt_args_info_description);
300 gezelter 1390 }
301 chuckv 1128
302 gezelter 1390 void
303     cmdline_parser_print_help (void)
304     {
305     int i = 0;
306     print_help_common();
307 chuckv 1128 while (gengetopt_args_info_help[i])
308     printf("%s\n", gengetopt_args_info_help[i++]);
309 tim 310 }
310    
311 gezelter 929 void
312     cmdline_parser_init (struct gengetopt_args_info *args_info)
313     {
314     clear_given (args_info);
315     clear_args (args_info);
316 chuckv 1128 init_args_info (args_info);
317 gezelter 1454
318 gezelter 1629 args_info->inputs = 0;
319 gezelter 1454 args_info->inputs_num = 0;
320 gezelter 1390 }
321 chuckv 1128
322 gezelter 1390 void
323     cmdline_parser_params_init(struct cmdline_parser_params *params)
324     {
325     if (params)
326     {
327     params->override = 0;
328     params->initialize = 1;
329     params->check_required = 1;
330     params->check_ambiguity = 0;
331     params->print_errors = 1;
332     }
333 gezelter 929 }
334 tim 310
335 gezelter 1390 struct cmdline_parser_params *
336     cmdline_parser_params_create(void)
337     {
338     struct cmdline_parser_params *params =
339     (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
340     cmdline_parser_params_init(params);
341     return params;
342     }
343    
344 gezelter 929 static void
345 gezelter 1390 free_string_field (char **s)
346 gezelter 929 {
347 gezelter 1390 if (*s)
348 gezelter 929 {
349 gezelter 1390 free (*s);
350     *s = 0;
351 gezelter 929 }
352 gezelter 1390 }
353    
354    
355     static void
356     cmdline_parser_release (struct gengetopt_args_info *args_info)
357     {
358 gezelter 1454 unsigned int i;
359 gezelter 1390 free_string_field (&(args_info->input_arg));
360     free_string_field (&(args_info->input_orig));
361     free_string_field (&(args_info->output_arg));
362     free_string_field (&(args_info->output_orig));
363     free_string_field (&(args_info->step_orig));
364     free_string_field (&(args_info->nbins_orig));
365     free_string_field (&(args_info->nbins_x_orig));
366     free_string_field (&(args_info->nbins_y_orig));
367 gezelter 1440 free_string_field (&(args_info->nbins_z_orig));
368 gezelter 1390 free_string_field (&(args_info->nanglebins_orig));
369 chuckv 1445 free_string_field (&(args_info->rcut_orig));
370 gezelter 1454 free_string_field (&(args_info->dz_orig));
371 gezelter 1390 free_string_field (&(args_info->length_orig));
372 chuckv 1445 free_string_field (&(args_info->zlength_orig));
373 gezelter 1390 free_string_field (&(args_info->zoffset_orig));
374     free_string_field (&(args_info->sele1_arg));
375     free_string_field (&(args_info->sele1_orig));
376     free_string_field (&(args_info->sele2_arg));
377     free_string_field (&(args_info->sele2_orig));
378     free_string_field (&(args_info->sele3_arg));
379     free_string_field (&(args_info->sele3_orig));
380     free_string_field (&(args_info->refsele_arg));
381     free_string_field (&(args_info->refsele_orig));
382     free_string_field (&(args_info->comsele_arg));
383     free_string_field (&(args_info->comsele_orig));
384 gezelter 1819 free_string_field (&(args_info->seleoffset_orig));
385 gezelter 1390 free_string_field (&(args_info->molname_arg));
386     free_string_field (&(args_info->molname_orig));
387     free_string_field (&(args_info->begin_orig));
388     free_string_field (&(args_info->end_orig));
389     free_string_field (&(args_info->radius_orig));
390 gezelter 929
391 chuckv 1128
392 gezelter 1454 for (i = 0; i < args_info->inputs_num; ++i)
393     free (args_info->inputs [i]);
394 gezelter 1390
395 gezelter 1454 if (args_info->inputs_num)
396     free (args_info->inputs);
397    
398 gezelter 929 clear_given (args_info);
399     }
400 tim 310
401 gezelter 1390
402     static void
403 gezelter 1629 write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])
404 gezelter 1390 {
405 gezelter 1629 FIX_UNUSED (values);
406 gezelter 1390 if (arg) {
407     fprintf(outfile, "%s=\"%s\"\n", opt, arg);
408     } else {
409     fprintf(outfile, "%s\n", opt);
410     }
411     }
412    
413    
414 gezelter 929 int
415 gezelter 1390 cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
416     {
417     int i = 0;
418    
419     if (!outfile)
420     {
421     fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
422     return EXIT_FAILURE;
423     }
424    
425     if (args_info->help_given)
426     write_into_file(outfile, "help", 0, 0 );
427     if (args_info->version_given)
428     write_into_file(outfile, "version", 0, 0 );
429     if (args_info->input_given)
430     write_into_file(outfile, "input", args_info->input_orig, 0);
431     if (args_info->output_given)
432     write_into_file(outfile, "output", args_info->output_orig, 0);
433     if (args_info->step_given)
434     write_into_file(outfile, "step", args_info->step_orig, 0);
435     if (args_info->nbins_given)
436     write_into_file(outfile, "nbins", args_info->nbins_orig, 0);
437     if (args_info->nbins_x_given)
438     write_into_file(outfile, "nbins_x", args_info->nbins_x_orig, 0);
439     if (args_info->nbins_y_given)
440     write_into_file(outfile, "nbins_y", args_info->nbins_y_orig, 0);
441 gezelter 1440 if (args_info->nbins_z_given)
442     write_into_file(outfile, "nbins_z", args_info->nbins_z_orig, 0);
443 gezelter 1390 if (args_info->nanglebins_given)
444     write_into_file(outfile, "nanglebins", args_info->nanglebins_orig, 0);
445 chuckv 1445 if (args_info->rcut_given)
446     write_into_file(outfile, "rcut", args_info->rcut_orig, 0);
447 gezelter 1454 if (args_info->dz_given)
448     write_into_file(outfile, "dz", args_info->dz_orig, 0);
449 gezelter 1390 if (args_info->length_given)
450     write_into_file(outfile, "length", args_info->length_orig, 0);
451 chuckv 1445 if (args_info->zlength_given)
452     write_into_file(outfile, "zlength", args_info->zlength_orig, 0);
453 gezelter 1390 if (args_info->zoffset_given)
454     write_into_file(outfile, "zoffset", args_info->zoffset_orig, 0);
455     if (args_info->sele1_given)
456     write_into_file(outfile, "sele1", args_info->sele1_orig, 0);
457     if (args_info->sele2_given)
458     write_into_file(outfile, "sele2", args_info->sele2_orig, 0);
459     if (args_info->sele3_given)
460     write_into_file(outfile, "sele3", args_info->sele3_orig, 0);
461     if (args_info->refsele_given)
462     write_into_file(outfile, "refsele", args_info->refsele_orig, 0);
463     if (args_info->comsele_given)
464     write_into_file(outfile, "comsele", args_info->comsele_orig, 0);
465 gezelter 1819 if (args_info->seleoffset_given)
466     write_into_file(outfile, "seleoffset", args_info->seleoffset_orig, 0);
467 gezelter 1390 if (args_info->molname_given)
468     write_into_file(outfile, "molname", args_info->molname_orig, 0);
469     if (args_info->begin_given)
470     write_into_file(outfile, "begin", args_info->begin_orig, 0);
471     if (args_info->end_given)
472     write_into_file(outfile, "end", args_info->end_orig, 0);
473     if (args_info->radius_given)
474     write_into_file(outfile, "radius", args_info->radius_orig, 0);
475     if (args_info->bo_given)
476     write_into_file(outfile, "bo", 0, 0 );
477     if (args_info->bor_given)
478     write_into_file(outfile, "bor", 0, 0 );
479     if (args_info->bad_given)
480     write_into_file(outfile, "bad", 0, 0 );
481 gezelter 1629 if (args_info->count_given)
482     write_into_file(outfile, "count", 0, 0 );
483 gezelter 1390 if (args_info->gofr_given)
484     write_into_file(outfile, "gofr", 0, 0 );
485     if (args_info->gofz_given)
486     write_into_file(outfile, "gofz", 0, 0 );
487     if (args_info->r_theta_given)
488     write_into_file(outfile, "r_theta", 0, 0 );
489     if (args_info->r_omega_given)
490     write_into_file(outfile, "r_omega", 0, 0 );
491 gezelter 1440 if (args_info->r_z_given)
492     write_into_file(outfile, "r_z", 0, 0 );
493 gezelter 1390 if (args_info->theta_omega_given)
494     write_into_file(outfile, "theta_omega", 0, 0 );
495     if (args_info->gxyz_given)
496     write_into_file(outfile, "gxyz", 0, 0 );
497 gezelter 1454 if (args_info->twodgofr_given)
498     write_into_file(outfile, "twodgofr", 0, 0 );
499 gezelter 1390 if (args_info->p2_given)
500     write_into_file(outfile, "p2", 0, 0 );
501     if (args_info->rp2_given)
502     write_into_file(outfile, "rp2", 0, 0 );
503     if (args_info->scd_given)
504     write_into_file(outfile, "scd", 0, 0 );
505     if (args_info->density_given)
506     write_into_file(outfile, "density", 0, 0 );
507     if (args_info->slab_density_given)
508     write_into_file(outfile, "slab_density", 0, 0 );
509 gezelter 1413 if (args_info->p_angle_given)
510     write_into_file(outfile, "p_angle", 0, 0 );
511 gezelter 1390 if (args_info->hxy_given)
512     write_into_file(outfile, "hxy", 0, 0 );
513     if (args_info->rho_r_given)
514     write_into_file(outfile, "rho_r", 0, 0 );
515 gezelter 1629 if (args_info->angle_r_given)
516     write_into_file(outfile, "angle_r", 0, 0 );
517 gezelter 1390 if (args_info->hullvol_given)
518     write_into_file(outfile, "hullvol", 0, 0 );
519 gezelter 1629 if (args_info->rodlength_given)
520     write_into_file(outfile, "rodlength", 0, 0 );
521     if (args_info->tet_param_given)
522     write_into_file(outfile, "tet_param", 0, 0 );
523 plouden 1762 if (args_info->tet_param_z_given)
524     write_into_file(outfile, "tet_param_z", 0, 0 );
525 gezelter 1879 if (args_info->rnemdz_given)
526     write_into_file(outfile, "rnemdz", 0, 0 );
527     if (args_info->rnemdr_given)
528     write_into_file(outfile, "rnemdr", 0, 0 );
529 gezelter 1390
530    
531     i = EXIT_SUCCESS;
532     return i;
533     }
534    
535     int
536 gezelter 929 cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
537     {
538     FILE *outfile;
539     int i = 0;
540    
541     outfile = fopen(filename, "w");
542    
543     if (!outfile)
544     {
545     fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
546     return EXIT_FAILURE;
547     }
548    
549 gezelter 1390 i = cmdline_parser_dump(outfile, args_info);
550 gezelter 929 fclose (outfile);
551    
552     return i;
553     }
554    
555     void
556     cmdline_parser_free (struct gengetopt_args_info *args_info)
557     {
558     cmdline_parser_release (args_info);
559     }
560    
561 gezelter 1390 /** @brief replacement of strdup, which is not standard */
562 tim 310 char *
563     gengetopt_strdup (const char *s)
564     {
565 gezelter 1629 char *result = 0;
566 gezelter 929 if (!s)
567     return result;
568    
569     result = (char*)malloc(strlen(s) + 1);
570 tim 310 if (result == (char*)0)
571     return (char*)0;
572     strcpy(result, s);
573     return result;
574     }
575    
576 gezelter 929 static void
577     reset_group_staticProps(struct gengetopt_args_info *args_info)
578 tim 310 {
579 gezelter 929 if (! args_info->staticProps_group_counter)
580     return;
581 tim 310
582 gezelter 1039 args_info->bo_given = 0 ;
583 chuckv 1128 args_info->bor_given = 0 ;
584 chuckv 1180 args_info->bad_given = 0 ;
585 gezelter 1629 args_info->count_given = 0 ;
586 tim 310 args_info->gofr_given = 0 ;
587 xsun 1213 args_info->gofz_given = 0 ;
588 tim 310 args_info->r_theta_given = 0 ;
589     args_info->r_omega_given = 0 ;
590 gezelter 1440 args_info->r_z_given = 0 ;
591 tim 310 args_info->theta_omega_given = 0 ;
592 tim 369 args_info->gxyz_given = 0 ;
593 gezelter 1454 args_info->twodgofr_given = 0 ;
594 tim 543 args_info->p2_given = 0 ;
595 xsun 980 args_info->rp2_given = 0 ;
596 tim 544 args_info->scd_given = 0 ;
597 tim 545 args_info->density_given = 0 ;
598 tim 840 args_info->slab_density_given = 0 ;
599 gezelter 1413 args_info->p_angle_given = 0 ;
600 xsun 967 args_info->hxy_given = 0 ;
601 chuckv 1091 args_info->rho_r_given = 0 ;
602 gezelter 1629 args_info->angle_r_given = 0 ;
603 chuckv 1180 args_info->hullvol_given = 0 ;
604 gezelter 1629 args_info->rodlength_given = 0 ;
605     args_info->tet_param_given = 0 ;
606 plouden 1762 args_info->tet_param_z_given = 0 ;
607 gezelter 1879 args_info->rnemdz_given = 0 ;
608     args_info->rnemdr_given = 0 ;
609 gezelter 929
610     args_info->staticProps_group_counter = 0;
611 tim 543 }
612 tim 310
613 gezelter 929 int
614 gezelter 1629 cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info)
615 gezelter 929 {
616     return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
617     }
618 tim 310
619 gezelter 929 int
620 gezelter 1629 cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info,
621 gezelter 1390 struct cmdline_parser_params *params)
622     {
623     int result;
624 gezelter 1629 result = cmdline_parser_internal (argc, argv, args_info, params, 0);
625 gezelter 1390
626     if (result == EXIT_FAILURE)
627     {
628     cmdline_parser_free (args_info);
629     exit (EXIT_FAILURE);
630     }
631    
632     return result;
633     }
634    
635     int
636 gezelter 1629 cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
637 gezelter 929 {
638     int result;
639 gezelter 1390 struct cmdline_parser_params params;
640    
641     params.override = override;
642     params.initialize = initialize;
643     params.check_required = check_required;
644     params.check_ambiguity = 0;
645     params.print_errors = 1;
646 gezelter 929
647 gezelter 1629 result = cmdline_parser_internal (argc, argv, args_info, &params, 0);
648 gezelter 929
649     if (result == EXIT_FAILURE)
650     {
651     cmdline_parser_free (args_info);
652     exit (EXIT_FAILURE);
653     }
654    
655     return result;
656     }
657    
658     int
659     cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
660     {
661     int result = EXIT_SUCCESS;
662    
663 gezelter 1629 if (cmdline_parser_required2(args_info, prog_name, 0) > 0)
664 gezelter 929 result = EXIT_FAILURE;
665    
666     if (result == EXIT_FAILURE)
667     {
668     cmdline_parser_free (args_info);
669     exit (EXIT_FAILURE);
670     }
671    
672     return result;
673     }
674    
675     int
676     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
677     {
678     int error = 0;
679 gezelter 1629 FIX_UNUSED (additional_error);
680 gezelter 929
681 chuckv 1128 /* checks for required options */
682 gezelter 929 if (! args_info->input_given)
683     {
684     fprintf (stderr, "%s: '--input' ('-i') option required%s\n", prog_name, (additional_error ? additional_error : ""));
685     error = 1;
686     }
687 chuckv 1128
688 gezelter 929 if (args_info->staticProps_group_counter == 0)
689     {
690 gezelter 1629 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", prog_name, args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
691 gezelter 929 error = 1;
692     }
693    
694    
695 chuckv 1128 /* checks for dependences among options */
696    
697 gezelter 929 return error;
698     }
699    
700 gezelter 1390
701     static char *package_name = 0;
702    
703     /**
704     * @brief updates an option
705     * @param field the generic pointer to the field to update
706     * @param orig_field the pointer to the orig field
707     * @param field_given the pointer to the number of occurrence of this option
708     * @param prev_given the pointer to the number of occurrence already seen
709     * @param value the argument for this option (if null no arg was specified)
710     * @param possible_values the possible values for this option (if specified)
711     * @param default_value the default value (in case the option only accepts fixed values)
712     * @param arg_type the type of this option
713     * @param check_ambiguity @see cmdline_parser_params.check_ambiguity
714     * @param override @see cmdline_parser_params.override
715     * @param no_free whether to free a possible previous value
716     * @param multiple_option whether this is a multiple option
717     * @param long_opt the corresponding long option
718     * @param short_opt the corresponding short option (or '-' if none)
719     * @param additional_error possible further error specification
720     */
721     static
722     int update_arg(void *field, char **orig_field,
723     unsigned int *field_given, unsigned int *prev_given,
724 gezelter 1629 char *value, const char *possible_values[],
725     const char *default_value,
726 gezelter 1390 cmdline_parser_arg_type arg_type,
727     int check_ambiguity, int override,
728     int no_free, int multiple_option,
729     const char *long_opt, char short_opt,
730     const char *additional_error)
731     {
732     char *stop_char = 0;
733     const char *val = value;
734     int found;
735     char **string_field;
736 gezelter 1629 FIX_UNUSED (field);
737 gezelter 1390
738     stop_char = 0;
739     found = 0;
740    
741     if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
742     {
743     if (short_opt != '-')
744     fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n",
745     package_name, long_opt, short_opt,
746     (additional_error ? additional_error : ""));
747     else
748     fprintf (stderr, "%s: `--%s' option given more than once%s\n",
749     package_name, long_opt,
750     (additional_error ? additional_error : ""));
751     return 1; /* failure */
752     }
753    
754 gezelter 1629 FIX_UNUSED (default_value);
755 gezelter 1390
756     if (field_given && *field_given && ! override)
757     return 0;
758     if (prev_given)
759     (*prev_given)++;
760     if (field_given)
761     (*field_given)++;
762     if (possible_values)
763     val = possible_values[found];
764    
765     switch(arg_type) {
766     case ARG_INT:
767     if (val) *((int *)field) = strtol (val, &stop_char, 0);
768     break;
769     case ARG_DOUBLE:
770     if (val) *((double *)field) = strtod (val, &stop_char);
771     break;
772     case ARG_STRING:
773     if (val) {
774     string_field = (char **)field;
775     if (!no_free && *string_field)
776     free (*string_field); /* free previous string */
777     *string_field = gengetopt_strdup (val);
778     }
779     break;
780     default:
781     break;
782     };
783    
784     /* check numeric conversion */
785     switch(arg_type) {
786     case ARG_INT:
787     case ARG_DOUBLE:
788     if (val && !(stop_char && *stop_char == '\0')) {
789     fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val);
790     return 1; /* failure */
791     }
792     break;
793     default:
794     ;
795     };
796    
797     /* store the original value */
798     switch(arg_type) {
799     case ARG_NO:
800     break;
801     default:
802     if (value && orig_field) {
803     if (no_free) {
804     *orig_field = value;
805     } else {
806     if (*orig_field)
807     free (*orig_field); /* free previous string */
808     *orig_field = gengetopt_strdup (value);
809     }
810     }
811     };
812    
813     return 0; /* OK */
814     }
815    
816    
817 gezelter 929 int
818 gezelter 1629 cmdline_parser_internal (
819     int argc, char **argv, struct gengetopt_args_info *args_info,
820 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error)
821 gezelter 929 {
822     int c; /* Character of the parsed option. */
823    
824     int error = 0;
825     struct gengetopt_args_info local_args_info;
826 gezelter 1390
827     int override;
828     int initialize;
829     int check_required;
830     int check_ambiguity;
831    
832     package_name = argv[0];
833    
834     override = params->override;
835     initialize = params->initialize;
836     check_required = params->check_required;
837     check_ambiguity = params->check_ambiguity;
838 gezelter 929
839     if (initialize)
840     cmdline_parser_init (args_info);
841    
842     cmdline_parser_init (&local_args_info);
843    
844 tim 310 optarg = 0;
845 chuckv 1128 optind = 0;
846 gezelter 1390 opterr = params->print_errors;
847 tim 310 optopt = '?';
848    
849     while (1)
850     {
851     int option_index = 0;
852    
853     static struct option long_options[] = {
854     { "help", 0, NULL, 'h' },
855     { "version", 0, NULL, 'V' },
856     { "input", 1, NULL, 'i' },
857     { "output", 1, NULL, 'o' },
858 tim 311 { "step", 1, NULL, 'n' },
859 gezelter 1041 { "nbins", 1, NULL, 'b' },
860 xsun 967 { "nbins_x", 1, NULL, 'x' },
861     { "nbins_y", 1, NULL, 'y' },
862 gezelter 1440 { "nbins_z", 1, NULL, 0 },
863 tim 310 { "nanglebins", 1, NULL, 'a' },
864 chuckv 1445 { "rcut", 1, NULL, 'c' },
865 gezelter 1454 { "dz", 1, NULL, 0 },
866 gezelter 1039 { "length", 1, NULL, 0 },
867 chuckv 1445 { "zlength", 1, NULL, 0 },
868 gezelter 929 { "zoffset", 1, NULL, 'z' },
869 tim 310 { "sele1", 1, NULL, 0 },
870     { "sele2", 1, NULL, 0 },
871 tim 544 { "sele3", 1, NULL, 0 },
872 tim 369 { "refsele", 1, NULL, 0 },
873 gezelter 1390 { "comsele", 1, NULL, 0 },
874 gezelter 1819 { "seleoffset", 1, NULL, 0 },
875 tim 544 { "molname", 1, NULL, 0 },
876     { "begin", 1, NULL, 0 },
877     { "end", 1, NULL, 0 },
878 chuckv 1091 { "radius", 1, NULL, 0 },
879 gezelter 1041 { "bo", 0, NULL, 0 },
880 chuckv 1128 { "bor", 0, NULL, 0 },
881 chuckv 1180 { "bad", 0, NULL, 0 },
882 gezelter 1629 { "count", 0, NULL, 0 },
883 gezelter 1039 { "gofr", 0, NULL, 'g' },
884 xsun 1213 { "gofz", 0, NULL, 0 },
885 tim 310 { "r_theta", 0, NULL, 0 },
886     { "r_omega", 0, NULL, 0 },
887 gezelter 1440 { "r_z", 0, NULL, 0 },
888 tim 310 { "theta_omega", 0, NULL, 0 },
889 tim 369 { "gxyz", 0, NULL, 0 },
890 gezelter 1454 { "twodgofr", 0, NULL, 0 },
891 gezelter 1039 { "p2", 0, NULL, 'p' },
892 xsun 980 { "rp2", 0, NULL, 0 },
893 gezelter 1039 { "scd", 0, NULL, 's' },
894     { "density", 0, NULL, 'd' },
895 tim 840 { "slab_density", 0, NULL, 0 },
896 gezelter 1413 { "p_angle", 0, NULL, 0 },
897 xsun 955 { "hxy", 0, NULL, 0 },
898 chuckv 1091 { "rho_r", 0, NULL, 0 },
899 gezelter 1629 { "angle_r", 0, NULL, 0 },
900 chuckv 1180 { "hullvol", 0, NULL, 0 },
901 gezelter 1629 { "rodlength", 0, NULL, 0 },
902     { "tet_param", 0, NULL, 'Q' },
903 plouden 1762 { "tet_param_z", 0, NULL, 0 },
904 gezelter 1879 { "rnemdz", 0, NULL, 0 },
905     { "rnemdr", 0, NULL, 0 },
906 gezelter 1629 { 0, 0, 0, 0 }
907 tim 310 };
908    
909 gezelter 1629 c = getopt_long (argc, argv, "hVi:o:n:b:x:y:a:c:z:gpsdQ", long_options, &option_index);
910 tim 310
911     if (c == -1) break; /* Exit from `while (1)' loop. */
912    
913     switch (c)
914     {
915     case 'h': /* Print help and exit. */
916     cmdline_parser_print_help ();
917 gezelter 929 cmdline_parser_free (&local_args_info);
918 tim 310 exit (EXIT_SUCCESS);
919    
920     case 'V': /* Print version and exit. */
921     cmdline_parser_print_version ();
922 gezelter 929 cmdline_parser_free (&local_args_info);
923 tim 310 exit (EXIT_SUCCESS);
924    
925     case 'i': /* input dump file. */
926 gezelter 1390
927    
928     if (update_arg( (void *)&(args_info->input_arg),
929     &(args_info->input_orig), &(args_info->input_given),
930     &(local_args_info.input_given), optarg, 0, 0, ARG_STRING,
931     check_ambiguity, override, 0, 0,
932     "input", 'i',
933     additional_error))
934     goto failure;
935    
936 tim 310 break;
937     case 'o': /* output file name. */
938 gezelter 1390
939    
940     if (update_arg( (void *)&(args_info->output_arg),
941     &(args_info->output_orig), &(args_info->output_given),
942     &(local_args_info.output_given), optarg, 0, 0, ARG_STRING,
943     check_ambiguity, override, 0, 0,
944     "output", 'o',
945     additional_error))
946     goto failure;
947    
948 tim 310 break;
949 tim 311 case 'n': /* process every n frame. */
950 gezelter 1390
951    
952     if (update_arg( (void *)&(args_info->step_arg),
953     &(args_info->step_orig), &(args_info->step_given),
954     &(local_args_info.step_given), optarg, 0, "1", ARG_INT,
955     check_ambiguity, override, 0, 0,
956     "step", 'n',
957     additional_error))
958 gezelter 929 goto failure;
959 gezelter 1390
960 tim 310 break;
961 gezelter 1041 case 'b': /* number of bins (general purpose). */
962 gezelter 1390
963    
964     if (update_arg( (void *)&(args_info->nbins_arg),
965     &(args_info->nbins_orig), &(args_info->nbins_given),
966     &(local_args_info.nbins_given), optarg, 0, "100", ARG_INT,
967     check_ambiguity, override, 0, 0,
968     "nbins", 'b',
969     additional_error))
970 gezelter 929 goto failure;
971 gezelter 1390
972 tim 310 break;
973 xsun 955 case 'x': /* number of bins in x axis. */
974 gezelter 1390
975    
976     if (update_arg( (void *)&(args_info->nbins_x_arg),
977     &(args_info->nbins_x_orig), &(args_info->nbins_x_given),
978     &(local_args_info.nbins_x_given), optarg, 0, "100", ARG_INT,
979     check_ambiguity, override, 0, 0,
980     "nbins_x", 'x',
981     additional_error))
982 xsun 955 goto failure;
983 gezelter 1390
984 xsun 955 break;
985     case 'y': /* number of bins in y axis. */
986 gezelter 1390
987    
988     if (update_arg( (void *)&(args_info->nbins_y_arg),
989     &(args_info->nbins_y_orig), &(args_info->nbins_y_given),
990     &(local_args_info.nbins_y_given), optarg, 0, "100", ARG_INT,
991     check_ambiguity, override, 0, 0,
992     "nbins_y", 'y',
993     additional_error))
994 xsun 955 goto failure;
995 gezelter 1390
996 xsun 955 break;
997 tim 310 case 'a': /* number of bins for cos(angle). */
998 gezelter 1390
999    
1000     if (update_arg( (void *)&(args_info->nanglebins_arg),
1001     &(args_info->nanglebins_orig), &(args_info->nanglebins_given),
1002     &(local_args_info.nanglebins_given), optarg, 0, "50", ARG_INT,
1003     check_ambiguity, override, 0, 0,
1004     "nanglebins", 'a',
1005     additional_error))
1006 gezelter 929 goto failure;
1007 gezelter 1390
1008 tim 310 break;
1009 gezelter 1039 case 'c': /* cutoff radius (rcut). */
1010 gezelter 1390
1011    
1012     if (update_arg( (void *)&(args_info->rcut_arg),
1013     &(args_info->rcut_orig), &(args_info->rcut_given),
1014     &(local_args_info.rcut_given), optarg, 0, 0, ARG_DOUBLE,
1015     check_ambiguity, override, 0, 0,
1016     "rcut", 'c',
1017     additional_error))
1018 gezelter 1039 goto failure;
1019 gezelter 1390
1020 gezelter 1039 break;
1021 gezelter 929 case 'z': /* Where to set the zero for the slab_density calculation. */
1022 gezelter 1390
1023    
1024     if (update_arg( (void *)&(args_info->zoffset_arg),
1025     &(args_info->zoffset_orig), &(args_info->zoffset_given),
1026     &(local_args_info.zoffset_given), optarg, 0, "0", ARG_DOUBLE,
1027     check_ambiguity, override, 0, 0,
1028     "zoffset", 'z',
1029     additional_error))
1030 gezelter 929 goto failure;
1031 gezelter 1390
1032 gezelter 929 break;
1033 gezelter 1039 case 'g': /* g(r). */
1034 gezelter 1390
1035 gezelter 1039 if (args_info->staticProps_group_counter && override)
1036     reset_group_staticProps (args_info);
1037     args_info->staticProps_group_counter += 1;
1038 gezelter 1390
1039     if (update_arg( 0 ,
1040     0 , &(args_info->gofr_given),
1041     &(local_args_info.gofr_given), optarg, 0, 0, ARG_NO,
1042     check_ambiguity, override, 0, 0,
1043     "gofr", 'g',
1044     additional_error))
1045     goto failure;
1046    
1047 gezelter 1039 break;
1048 gezelter 1629 case 'p': /* p2 order parameter (--sele1 must be specified, --sele2 is optional). */
1049 gezelter 1390
1050 gezelter 1039 if (args_info->staticProps_group_counter && override)
1051     reset_group_staticProps (args_info);
1052     args_info->staticProps_group_counter += 1;
1053 gezelter 1390
1054     if (update_arg( 0 ,
1055     0 , &(args_info->p2_given),
1056     &(local_args_info.p2_given), optarg, 0, 0, ARG_NO,
1057     check_ambiguity, override, 0, 0,
1058     "p2", 'p',
1059     additional_error))
1060     goto failure;
1061    
1062 gezelter 1039 break;
1063     case 's': /* scd order parameter (either --sele1, --sele2, --sele3 are specified or --molname, --begin, --end are specified). */
1064 gezelter 1390
1065 gezelter 1039 if (args_info->staticProps_group_counter && override)
1066     reset_group_staticProps (args_info);
1067     args_info->staticProps_group_counter += 1;
1068 gezelter 1390
1069     if (update_arg( 0 ,
1070     0 , &(args_info->scd_given),
1071     &(local_args_info.scd_given), optarg, 0, 0, ARG_NO,
1072     check_ambiguity, override, 0, 0,
1073     "scd", 's',
1074     additional_error))
1075     goto failure;
1076    
1077 gezelter 1039 break;
1078     case 'd': /* density plot. */
1079 gezelter 1390
1080 gezelter 1039 if (args_info->staticProps_group_counter && override)
1081     reset_group_staticProps (args_info);
1082     args_info->staticProps_group_counter += 1;
1083 gezelter 1390
1084     if (update_arg( 0 ,
1085     0 , &(args_info->density_given),
1086     &(local_args_info.density_given), optarg, 0, 0, ARG_NO,
1087     check_ambiguity, override, 0, 0,
1088     "density", 'd',
1089     additional_error))
1090     goto failure;
1091    
1092 gezelter 1039 break;
1093 gezelter 1843 case 'Q': /* tetrahedrality order parameter (Qk). */
1094 gezelter 1629
1095     if (args_info->staticProps_group_counter && override)
1096     reset_group_staticProps (args_info);
1097     args_info->staticProps_group_counter += 1;
1098    
1099     if (update_arg( 0 ,
1100     0 , &(args_info->tet_param_given),
1101     &(local_args_info.tet_param_given), optarg, 0, 0, ARG_NO,
1102     check_ambiguity, override, 0, 0,
1103     "tet_param", 'Q',
1104     additional_error))
1105     goto failure;
1106    
1107     break;
1108 gezelter 1039
1109 tim 310 case 0: /* Long option with no short option */
1110 gezelter 1440 /* number of bins in z axis. */
1111     if (strcmp (long_options[option_index].name, "nbins_z") == 0)
1112     {
1113    
1114    
1115     if (update_arg( (void *)&(args_info->nbins_z_arg),
1116     &(args_info->nbins_z_orig), &(args_info->nbins_z_given),
1117     &(local_args_info.nbins_z_given), optarg, 0, "100", ARG_INT,
1118     check_ambiguity, override, 0, 0,
1119     "nbins_z", '-',
1120     additional_error))
1121     goto failure;
1122    
1123     }
1124 gezelter 1454 /* slab width (dz). */
1125     else if (strcmp (long_options[option_index].name, "dz") == 0)
1126     {
1127    
1128    
1129     if (update_arg( (void *)&(args_info->dz_arg),
1130     &(args_info->dz_orig), &(args_info->dz_given),
1131     &(local_args_info.dz_given), optarg, 0, 0, ARG_DOUBLE,
1132     check_ambiguity, override, 0, 0,
1133     "dz", '-',
1134     additional_error))
1135     goto failure;
1136    
1137     }
1138 gezelter 1039 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1139 gezelter 1440 else if (strcmp (long_options[option_index].name, "length") == 0)
1140 gezelter 1039 {
1141 gezelter 1390
1142    
1143     if (update_arg( (void *)&(args_info->length_arg),
1144     &(args_info->length_orig), &(args_info->length_given),
1145     &(local_args_info.length_given), optarg, 0, 0, ARG_DOUBLE,
1146     check_ambiguity, override, 0, 0,
1147     "length", '-',
1148     additional_error))
1149 gezelter 1039 goto failure;
1150 gezelter 1390
1151 gezelter 1039 }
1152 chuckv 1445 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1153     else if (strcmp (long_options[option_index].name, "zlength") == 0)
1154     {
1155    
1156    
1157     if (update_arg( (void *)&(args_info->zlength_arg),
1158     &(args_info->zlength_orig), &(args_info->zlength_given),
1159     &(local_args_info.zlength_given), optarg, 0, 0, ARG_DOUBLE,
1160     check_ambiguity, override, 0, 0,
1161     "zlength", '-',
1162     additional_error))
1163     goto failure;
1164    
1165     }
1166 tim 544 /* select the first stuntdouble set. */
1167 gezelter 1039 else if (strcmp (long_options[option_index].name, "sele1") == 0)
1168 tim 543 {
1169 gezelter 1390
1170    
1171     if (update_arg( (void *)&(args_info->sele1_arg),
1172     &(args_info->sele1_orig), &(args_info->sele1_given),
1173     &(local_args_info.sele1_given), optarg, 0, 0, ARG_STRING,
1174     check_ambiguity, override, 0, 0,
1175     "sele1", '-',
1176     additional_error))
1177     goto failure;
1178    
1179 tim 543 }
1180 tim 544 /* select the second stuntdouble set. */
1181 tim 310 else if (strcmp (long_options[option_index].name, "sele2") == 0)
1182 tim 543 {
1183 gezelter 1390
1184    
1185     if (update_arg( (void *)&(args_info->sele2_arg),
1186     &(args_info->sele2_orig), &(args_info->sele2_given),
1187     &(local_args_info.sele2_given), optarg, 0, 0, ARG_STRING,
1188     check_ambiguity, override, 0, 0,
1189     "sele2", '-',
1190     additional_error))
1191     goto failure;
1192    
1193 tim 543 }
1194 tim 544 /* select the third stuntdouble set. */
1195     else if (strcmp (long_options[option_index].name, "sele3") == 0)
1196     {
1197 gezelter 1390
1198    
1199     if (update_arg( (void *)&(args_info->sele3_arg),
1200     &(args_info->sele3_orig), &(args_info->sele3_given),
1201     &(local_args_info.sele3_given), optarg, 0, 0, ARG_STRING,
1202     check_ambiguity, override, 0, 0,
1203     "sele3", '-',
1204     additional_error))
1205     goto failure;
1206    
1207 tim 544 }
1208 tim 369 /* select reference (use and only use with --gxyz). */
1209     else if (strcmp (long_options[option_index].name, "refsele") == 0)
1210 tim 543 {
1211 gezelter 1390
1212    
1213     if (update_arg( (void *)&(args_info->refsele_arg),
1214     &(args_info->refsele_orig), &(args_info->refsele_given),
1215     &(local_args_info.refsele_given), optarg, 0, 0, ARG_STRING,
1216     check_ambiguity, override, 0, 0,
1217     "refsele", '-',
1218     additional_error))
1219     goto failure;
1220    
1221 tim 543 }
1222 gezelter 1390 /* select stunt doubles for center-of-mass reference point. */
1223     else if (strcmp (long_options[option_index].name, "comsele") == 0)
1224     {
1225    
1226    
1227     if (update_arg( (void *)&(args_info->comsele_arg),
1228     &(args_info->comsele_orig), &(args_info->comsele_given),
1229     &(local_args_info.comsele_given), optarg, 0, 0, ARG_STRING,
1230     check_ambiguity, override, 0, 0,
1231     "comsele", '-',
1232     additional_error))
1233     goto failure;
1234    
1235     }
1236 gezelter 1819 /* global index offset for a second object (used to define a vector between sites in molecule). */
1237     else if (strcmp (long_options[option_index].name, "seleoffset") == 0)
1238     {
1239    
1240    
1241     if (update_arg( (void *)&(args_info->seleoffset_arg),
1242     &(args_info->seleoffset_orig), &(args_info->seleoffset_given),
1243     &(local_args_info.seleoffset_given), optarg, 0, 0, ARG_INT,
1244     check_ambiguity, override, 0, 0,
1245     "seleoffset", '-',
1246     additional_error))
1247     goto failure;
1248    
1249     }
1250 tim 544 /* molecule name. */
1251     else if (strcmp (long_options[option_index].name, "molname") == 0)
1252     {
1253 gezelter 1390
1254    
1255     if (update_arg( (void *)&(args_info->molname_arg),
1256     &(args_info->molname_orig), &(args_info->molname_given),
1257     &(local_args_info.molname_given), optarg, 0, 0, ARG_STRING,
1258     check_ambiguity, override, 0, 0,
1259     "molname", '-',
1260     additional_error))
1261     goto failure;
1262    
1263 tim 544 }
1264 gezelter 1039 /* begin internal index. */
1265 tim 544 else if (strcmp (long_options[option_index].name, "begin") == 0)
1266     {
1267 gezelter 1390
1268    
1269     if (update_arg( (void *)&(args_info->begin_arg),
1270     &(args_info->begin_orig), &(args_info->begin_given),
1271     &(local_args_info.begin_given), optarg, 0, 0, ARG_INT,
1272     check_ambiguity, override, 0, 0,
1273     "begin", '-',
1274     additional_error))
1275 gezelter 929 goto failure;
1276 gezelter 1390
1277 tim 544 }
1278     /* end internal index. */
1279     else if (strcmp (long_options[option_index].name, "end") == 0)
1280     {
1281 gezelter 1390
1282    
1283     if (update_arg( (void *)&(args_info->end_arg),
1284     &(args_info->end_orig), &(args_info->end_given),
1285     &(local_args_info.end_given), optarg, 0, 0, ARG_INT,
1286     check_ambiguity, override, 0, 0,
1287     "end", '-',
1288     additional_error))
1289 gezelter 929 goto failure;
1290 gezelter 1390
1291 tim 544 }
1292 chuckv 1091 /* nanoparticle radius. */
1293     else if (strcmp (long_options[option_index].name, "radius") == 0)
1294     {
1295 gezelter 1390
1296    
1297     if (update_arg( (void *)&(args_info->radius_arg),
1298     &(args_info->radius_orig), &(args_info->radius_given),
1299     &(local_args_info.radius_given), optarg, 0, 0, ARG_DOUBLE,
1300     check_ambiguity, override, 0, 0,
1301     "radius", '-',
1302     additional_error))
1303 chuckv 1091 goto failure;
1304 gezelter 1390
1305 chuckv 1091 }
1306 chuckv 1128 /* bond order parameter (--rcut must be specified). */
1307 gezelter 1041 else if (strcmp (long_options[option_index].name, "bo") == 0)
1308     {
1309 gezelter 1390
1310 gezelter 1041 if (args_info->staticProps_group_counter && override)
1311     reset_group_staticProps (args_info);
1312     args_info->staticProps_group_counter += 1;
1313 gezelter 1390
1314     if (update_arg( 0 ,
1315     0 , &(args_info->bo_given),
1316     &(local_args_info.bo_given), optarg, 0, 0, ARG_NO,
1317     check_ambiguity, override, 0, 0,
1318     "bo", '-',
1319     additional_error))
1320     goto failure;
1321    
1322 gezelter 1041 }
1323 chuckv 1128 /* bond order parameter as a function of radius (--rcut must be specified). */
1324     else if (strcmp (long_options[option_index].name, "bor") == 0)
1325     {
1326 gezelter 1390
1327 chuckv 1128 if (args_info->staticProps_group_counter && override)
1328     reset_group_staticProps (args_info);
1329     args_info->staticProps_group_counter += 1;
1330 gezelter 1390
1331     if (update_arg( 0 ,
1332     0 , &(args_info->bor_given),
1333     &(local_args_info.bor_given), optarg, 0, 0, ARG_NO,
1334     check_ambiguity, override, 0, 0,
1335     "bor", '-',
1336     additional_error))
1337     goto failure;
1338    
1339 chuckv 1128 }
1340 chuckv 1180 /* N(theta) bond angle density within (--rcut must be specified). */
1341     else if (strcmp (long_options[option_index].name, "bad") == 0)
1342     {
1343 gezelter 1390
1344 chuckv 1180 if (args_info->staticProps_group_counter && override)
1345     reset_group_staticProps (args_info);
1346     args_info->staticProps_group_counter += 1;
1347 gezelter 1390
1348     if (update_arg( 0 ,
1349     0 , &(args_info->bad_given),
1350     &(local_args_info.bad_given), optarg, 0, 0, ARG_NO,
1351     check_ambiguity, override, 0, 0,
1352     "bad", '-',
1353     additional_error))
1354     goto failure;
1355    
1356 chuckv 1180 }
1357 gezelter 1629 /* count of molecules matching selection criteria (and associated statistics). */
1358     else if (strcmp (long_options[option_index].name, "count") == 0)
1359     {
1360    
1361     if (args_info->staticProps_group_counter && override)
1362     reset_group_staticProps (args_info);
1363     args_info->staticProps_group_counter += 1;
1364    
1365     if (update_arg( 0 ,
1366     0 , &(args_info->count_given),
1367     &(local_args_info.count_given), optarg, 0, 0, ARG_NO,
1368     check_ambiguity, override, 0, 0,
1369     "count", '-',
1370     additional_error))
1371     goto failure;
1372    
1373     }
1374 xsun 1213 /* g(z). */
1375     else if (strcmp (long_options[option_index].name, "gofz") == 0)
1376     {
1377 gezelter 1390
1378 xsun 1213 if (args_info->staticProps_group_counter && override)
1379     reset_group_staticProps (args_info);
1380     args_info->staticProps_group_counter += 1;
1381 gezelter 1390
1382     if (update_arg( 0 ,
1383     0 , &(args_info->gofz_given),
1384     &(local_args_info.gofz_given), optarg, 0, 0, ARG_NO,
1385     check_ambiguity, override, 0, 0,
1386     "gofz", '-',
1387     additional_error))
1388     goto failure;
1389    
1390 xsun 1213 }
1391 tim 310 /* g(r, cos(theta)). */
1392     else if (strcmp (long_options[option_index].name, "r_theta") == 0)
1393 tim 543 {
1394 gezelter 1390
1395 gezelter 929 if (args_info->staticProps_group_counter && override)
1396     reset_group_staticProps (args_info);
1397     args_info->staticProps_group_counter += 1;
1398 gezelter 1390
1399     if (update_arg( 0 ,
1400     0 , &(args_info->r_theta_given),
1401     &(local_args_info.r_theta_given), optarg, 0, 0, ARG_NO,
1402     check_ambiguity, override, 0, 0,
1403     "r_theta", '-',
1404     additional_error))
1405     goto failure;
1406    
1407 tim 543 }
1408 tim 310 /* g(r, cos(omega)). */
1409     else if (strcmp (long_options[option_index].name, "r_omega") == 0)
1410 tim 543 {
1411 gezelter 1390
1412 gezelter 929 if (args_info->staticProps_group_counter && override)
1413     reset_group_staticProps (args_info);
1414     args_info->staticProps_group_counter += 1;
1415 gezelter 1390
1416     if (update_arg( 0 ,
1417     0 , &(args_info->r_omega_given),
1418     &(local_args_info.r_omega_given), optarg, 0, 0, ARG_NO,
1419     check_ambiguity, override, 0, 0,
1420     "r_omega", '-',
1421     additional_error))
1422     goto failure;
1423    
1424 tim 543 }
1425 gezelter 1440 /* g(r, z). */
1426     else if (strcmp (long_options[option_index].name, "r_z") == 0)
1427     {
1428    
1429     if (args_info->staticProps_group_counter && override)
1430     reset_group_staticProps (args_info);
1431     args_info->staticProps_group_counter += 1;
1432    
1433     if (update_arg( 0 ,
1434     0 , &(args_info->r_z_given),
1435     &(local_args_info.r_z_given), optarg, 0, 0, ARG_NO,
1436     check_ambiguity, override, 0, 0,
1437     "r_z", '-',
1438     additional_error))
1439     goto failure;
1440    
1441     }
1442 tim 310 /* g(cos(theta), cos(omega)). */
1443     else if (strcmp (long_options[option_index].name, "theta_omega") == 0)
1444 tim 543 {
1445 gezelter 1390
1446 gezelter 929 if (args_info->staticProps_group_counter && override)
1447     reset_group_staticProps (args_info);
1448     args_info->staticProps_group_counter += 1;
1449 gezelter 1390
1450     if (update_arg( 0 ,
1451     0 , &(args_info->theta_omega_given),
1452     &(local_args_info.theta_omega_given), optarg, 0, 0, ARG_NO,
1453     check_ambiguity, override, 0, 0,
1454     "theta_omega", '-',
1455     additional_error))
1456     goto failure;
1457    
1458 tim 543 }
1459 tim 310 /* g(x, y, z). */
1460 tim 369 else if (strcmp (long_options[option_index].name, "gxyz") == 0)
1461 tim 543 {
1462 gezelter 1390
1463 gezelter 929 if (args_info->staticProps_group_counter && override)
1464     reset_group_staticProps (args_info);
1465     args_info->staticProps_group_counter += 1;
1466 gezelter 1390
1467     if (update_arg( 0 ,
1468     0 , &(args_info->gxyz_given),
1469     &(local_args_info.gxyz_given), optarg, 0, 0, ARG_NO,
1470     check_ambiguity, override, 0, 0,
1471     "gxyz", '-',
1472     additional_error))
1473     goto failure;
1474    
1475 tim 543 }
1476 gezelter 1454 /* 2D g(r) (Slab width --dz must be specified). */
1477     else if (strcmp (long_options[option_index].name, "twodgofr") == 0)
1478     {
1479    
1480     if (args_info->staticProps_group_counter && override)
1481     reset_group_staticProps (args_info);
1482     args_info->staticProps_group_counter += 1;
1483    
1484     if (update_arg( 0 ,
1485     0 , &(args_info->twodgofr_given),
1486     &(local_args_info.twodgofr_given), optarg, 0, 0, ARG_NO,
1487     check_ambiguity, override, 0, 0,
1488     "twodgofr", '-',
1489     additional_error))
1490     goto failure;
1491    
1492     }
1493 xsun 980 /* rp2 order parameter (--sele1 and --sele2 must be specified). */
1494     else if (strcmp (long_options[option_index].name, "rp2") == 0)
1495     {
1496 gezelter 1390
1497 xsun 980 if (args_info->staticProps_group_counter && override)
1498     reset_group_staticProps (args_info);
1499     args_info->staticProps_group_counter += 1;
1500 gezelter 1390
1501     if (update_arg( 0 ,
1502     0 , &(args_info->rp2_given),
1503     &(local_args_info.rp2_given), optarg, 0, 0, ARG_NO,
1504     check_ambiguity, override, 0, 0,
1505     "rp2", '-',
1506     additional_error))
1507     goto failure;
1508    
1509 xsun 980 }
1510 gezelter 1039 /* slab density. */
1511 tim 840 else if (strcmp (long_options[option_index].name, "slab_density") == 0)
1512     {
1513 gezelter 1390
1514 gezelter 929 if (args_info->staticProps_group_counter && override)
1515     reset_group_staticProps (args_info);
1516     args_info->staticProps_group_counter += 1;
1517 gezelter 1390
1518     if (update_arg( 0 ,
1519     0 , &(args_info->slab_density_given),
1520     &(local_args_info.slab_density_given), optarg, 0, 0, ARG_NO,
1521     check_ambiguity, override, 0, 0,
1522     "slab_density", '-',
1523     additional_error))
1524     goto failure;
1525    
1526 tim 840 }
1527 gezelter 1413 /* p(cos(theta)). */
1528     else if (strcmp (long_options[option_index].name, "p_angle") == 0)
1529     {
1530    
1531     if (args_info->staticProps_group_counter && override)
1532     reset_group_staticProps (args_info);
1533     args_info->staticProps_group_counter += 1;
1534    
1535     if (update_arg( 0 ,
1536     0 , &(args_info->p_angle_given),
1537     &(local_args_info.p_angle_given), optarg, 0, 0, ARG_NO,
1538     check_ambiguity, override, 0, 0,
1539     "p_angle", '-',
1540     additional_error))
1541     goto failure;
1542    
1543     }
1544 gezelter 1039 /* hxy. */
1545 xsun 955 else if (strcmp (long_options[option_index].name, "hxy") == 0)
1546     {
1547 gezelter 1390
1548 xsun 955 if (args_info->staticProps_group_counter && override)
1549     reset_group_staticProps (args_info);
1550     args_info->staticProps_group_counter += 1;
1551 gezelter 1390
1552     if (update_arg( 0 ,
1553     0 , &(args_info->hxy_given),
1554     &(local_args_info.hxy_given), optarg, 0, 0, ARG_NO,
1555     check_ambiguity, override, 0, 0,
1556     "hxy", '-',
1557     additional_error))
1558     goto failure;
1559    
1560 xsun 955 }
1561 chuckv 1091 /* rho of R. */
1562     else if (strcmp (long_options[option_index].name, "rho_r") == 0)
1563     {
1564 gezelter 1390
1565 chuckv 1091 if (args_info->staticProps_group_counter && override)
1566     reset_group_staticProps (args_info);
1567     args_info->staticProps_group_counter += 1;
1568 gezelter 1390
1569     if (update_arg( 0 ,
1570     0 , &(args_info->rho_r_given),
1571     &(local_args_info.rho_r_given), optarg, 0, 0, ARG_NO,
1572     check_ambiguity, override, 0, 0,
1573     "rho_r", '-',
1574     additional_error))
1575     goto failure;
1576    
1577 chuckv 1091 }
1578 gezelter 1629 /* angle of R. */
1579     else if (strcmp (long_options[option_index].name, "angle_r") == 0)
1580     {
1581    
1582     if (args_info->staticProps_group_counter && override)
1583     reset_group_staticProps (args_info);
1584     args_info->staticProps_group_counter += 1;
1585    
1586     if (update_arg( 0 ,
1587     0 , &(args_info->angle_r_given),
1588     &(local_args_info.angle_r_given), optarg, 0, 0, ARG_NO,
1589     check_ambiguity, override, 0, 0,
1590     "angle_r", '-',
1591     additional_error))
1592     goto failure;
1593    
1594     }
1595 chuckv 1180 /* hull volume of nanoparticle. */
1596     else if (strcmp (long_options[option_index].name, "hullvol") == 0)
1597     {
1598 gezelter 1390
1599 chuckv 1180 if (args_info->staticProps_group_counter && override)
1600     reset_group_staticProps (args_info);
1601     args_info->staticProps_group_counter += 1;
1602 gezelter 1390
1603     if (update_arg( 0 ,
1604     0 , &(args_info->hullvol_given),
1605     &(local_args_info.hullvol_given), optarg, 0, 0, ARG_NO,
1606     check_ambiguity, override, 0, 0,
1607     "hullvol", '-',
1608     additional_error))
1609     goto failure;
1610    
1611 chuckv 1180 }
1612 gezelter 1629 /* length of nanorod. */
1613     else if (strcmp (long_options[option_index].name, "rodlength") == 0)
1614     {
1615 tim 840
1616 gezelter 1629 if (args_info->staticProps_group_counter && override)
1617     reset_group_staticProps (args_info);
1618     args_info->staticProps_group_counter += 1;
1619    
1620     if (update_arg( 0 ,
1621     0 , &(args_info->rodlength_given),
1622     &(local_args_info.rodlength_given), optarg, 0, 0, ARG_NO,
1623     check_ambiguity, override, 0, 0,
1624     "rodlength", '-',
1625     additional_error))
1626     goto failure;
1627    
1628     }
1629 gezelter 1843 /* spatially-resolved tetrahedrality order parameter Qk(z). */
1630 plouden 1762 else if (strcmp (long_options[option_index].name, "tet_param_z") == 0)
1631     {
1632 gezelter 1629
1633 plouden 1762 if (args_info->staticProps_group_counter && override)
1634     reset_group_staticProps (args_info);
1635     args_info->staticProps_group_counter += 1;
1636    
1637     if (update_arg( 0 ,
1638     0 , &(args_info->tet_param_z_given),
1639     &(local_args_info.tet_param_z_given), optarg, 0, 0, ARG_NO,
1640     check_ambiguity, override, 0, 0,
1641     "tet_param_z", '-',
1642     additional_error))
1643     goto failure;
1644    
1645     }
1646 gezelter 1879 /* slab-resolved RNEMD statistics (temperature, density, velocity). */
1647     else if (strcmp (long_options[option_index].name, "rnemdz") == 0)
1648     {
1649 plouden 1762
1650 gezelter 1879 if (args_info->staticProps_group_counter && override)
1651     reset_group_staticProps (args_info);
1652     args_info->staticProps_group_counter += 1;
1653    
1654     if (update_arg( 0 ,
1655     0 , &(args_info->rnemdz_given),
1656     &(local_args_info.rnemdz_given), optarg, 0, 0, ARG_NO,
1657     check_ambiguity, override, 0, 0,
1658     "rnemdz", '-',
1659     additional_error))
1660     goto failure;
1661    
1662     }
1663     /* shell-resolved RNEMD statistics (temperature, density, angular velocity). */
1664     else if (strcmp (long_options[option_index].name, "rnemdr") == 0)
1665     {
1666    
1667     if (args_info->staticProps_group_counter && override)
1668     reset_group_staticProps (args_info);
1669     args_info->staticProps_group_counter += 1;
1670    
1671     if (update_arg( 0 ,
1672     0 , &(args_info->rnemdr_given),
1673     &(local_args_info.rnemdr_given), optarg, 0, 0, ARG_NO,
1674     check_ambiguity, override, 0, 0,
1675     "rnemdr", '-',
1676     additional_error))
1677     goto failure;
1678    
1679     }
1680    
1681 gezelter 929 break;
1682 tim 310 case '?': /* Invalid option. */
1683     /* `getopt_long' already printed an error message. */
1684 gezelter 929 goto failure;
1685 tim 310
1686     default: /* bug: option not considered. */
1687 gezelter 929 fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
1688 tim 310 abort ();
1689     } /* switch */
1690     } /* while */
1691    
1692 gezelter 929 if (args_info->staticProps_group_counter > 1)
1693 tim 310 {
1694 gezelter 1629 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", argv[0], args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
1695 gezelter 929 error = 1;
1696 tim 310 }
1697    
1698    
1699 gezelter 929
1700     if (check_required)
1701 tim 310 {
1702 gezelter 929 error += cmdline_parser_required2 (args_info, argv[0], additional_error);
1703 tim 310 }
1704    
1705 gezelter 929 cmdline_parser_release (&local_args_info);
1706    
1707     if ( error )
1708     return (EXIT_FAILURE);
1709    
1710 gezelter 1454 if (optind < argc)
1711     {
1712     int i = 0 ;
1713     int found_prog_name = 0;
1714     /* whether program name, i.e., argv[0], is in the remaining args
1715     (this may happen with some implementations of getopt,
1716     but surely not with the one included by gengetopt) */
1717    
1718     i = optind;
1719     while (i < argc)
1720     if (argv[i++] == argv[0]) {
1721     found_prog_name = 1;
1722     break;
1723     }
1724     i = 0;
1725    
1726     args_info->inputs_num = argc - optind - found_prog_name;
1727     args_info->inputs =
1728     (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
1729     while (optind < argc)
1730     if (argv[optind++] != argv[0])
1731     args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
1732     }
1733    
1734 tim 310 return 0;
1735 gezelter 929
1736     failure:
1737    
1738     cmdline_parser_release (&local_args_info);
1739     return (EXIT_FAILURE);
1740 tim 310 }

Properties

Name Value
svn:keywords Author Id Revision Date