ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1979
Committed: Sat Apr 5 20:56:01 2014 UTC (11 years ago) by gezelter
File size: 62939 byte(s)
Log Message:
* Changed the stdDev printouts in RNEMD stats to the 95% confidence intervals
* Added the ability to specify non-bonded constraints in a molecule
* Added the ability to do selection offsets in the pAngle staticProps module

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

Properties

Name Value
svn:keywords Author Id Revision Date