ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/staticProps/StaticPropsCmd.c
(Generate patch)

Comparing trunk/OOPSE-4/src/applications/staticProps/StaticPropsCmd.c (file contents):
Revision 2020 by tim, Mon Feb 14 18:51:48 2005 UTC vs.
Revision 3007 by gezelter, Tue Sep 19 21:14:11 2006 UTC

# Line 1 | Line 1
1   /*
2 <  File autogenerated by gengetopt version 2.11
2 >  File autogenerated by gengetopt version 2.16
3    generated with the following command:
4 <  /home/maul/gezelter/tim/bin/gengetopt -F StaticPropsCmd
4 >  gengetopt -F StaticPropsCmd
5  
6    The developers of gengetopt consider the fixed text that goes in all
7    gengetopt output files to be in the public domain:
8    we make no copyright claims on it.
9   */
10  
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15
11   /* If we use autoconf.  */
12   #ifdef HAVE_CONFIG_H
13   #include "config.h"
14   #endif
15  
16 + #include <stdio.h>
17 + #include <stdlib.h>
18 + #include <string.h>
19 +
20   #include "getopt.h"
21  
22   #include "StaticPropsCmd.h"
23  
24 + static
25 + void clear_given (struct gengetopt_args_info *args_info);
26 + static
27 + void clear_args (struct gengetopt_args_info *args_info);
28 +
29 + static int
30 + cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error);
31 +
32 + static int
33 + cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error);
34 +
35 + static char *
36 + gengetopt_strdup (const char *s);
37 +
38 + static
39 + void clear_given (struct gengetopt_args_info *args_info)
40 + {
41 +  args_info->help_given = 0 ;
42 +  args_info->version_given = 0 ;
43 +  args_info->input_given = 0 ;
44 +  args_info->output_given = 0 ;
45 +  args_info->step_given = 0 ;
46 +  args_info->nrbins_given = 0 ;
47 +  args_info->nbins_x_given = 0 ;
48 +  args_info->nbins_y_given = 0 ;
49 +  args_info->nanglebins_given = 0 ;
50 +  args_info->length_given = 0 ;
51 +  args_info->LegendreL_given = 0 ;
52 +  args_info->rcut_given = 0 ;
53 +  args_info->zoffset_given = 0 ;
54 +  args_info->sele1_given = 0 ;
55 +  args_info->sele2_given = 0 ;
56 +  args_info->sele3_given = 0 ;
57 +  args_info->refsele_given = 0 ;
58 +  args_info->molname_given = 0 ;
59 +  args_info->begin_given = 0 ;
60 +  args_info->end_given = 0 ;
61 +  args_info->bo_given = 0 ;
62 +  args_info->gofr_given = 0 ;
63 +  args_info->r_theta_given = 0 ;
64 +  args_info->r_omega_given = 0 ;
65 +  args_info->theta_omega_given = 0 ;
66 +  args_info->gxyz_given = 0 ;
67 +  args_info->p2_given = 0 ;
68 +  args_info->rp2_given = 0 ;
69 +  args_info->scd_given = 0 ;
70 +  args_info->density_given = 0 ;
71 +  args_info->slab_density_given = 0 ;
72 +  args_info->hxy_given = 0 ;
73 +  args_info->staticProps_group_counter = 0 ;
74 + }
75 +
76 + static
77 + void clear_args (struct gengetopt_args_info *args_info)
78 + {
79 +  args_info->input_arg = NULL;
80 +  args_info->input_orig = NULL;
81 +  args_info->output_arg = NULL;
82 +  args_info->output_orig = NULL;
83 +  args_info->step_arg = 1;
84 +  args_info->step_orig = NULL;
85 +  args_info->nrbins_arg = 100;
86 +  args_info->nrbins_orig = NULL;
87 +  args_info->nbins_x_arg = 100;
88 +  args_info->nbins_x_orig = NULL;
89 +  args_info->nbins_y_arg = 100;
90 +  args_info->nbins_y_orig = NULL;
91 +  args_info->nanglebins_arg = 50;
92 +  args_info->nanglebins_orig = NULL;
93 +  args_info->length_orig = NULL;
94 +  args_info->LegendreL_orig = NULL;
95 +  args_info->rcut_orig = NULL;
96 +  args_info->zoffset_arg = 0;
97 +  args_info->zoffset_orig = NULL;
98 +  args_info->sele1_arg = NULL;
99 +  args_info->sele1_orig = NULL;
100 +  args_info->sele2_arg = NULL;
101 +  args_info->sele2_orig = NULL;
102 +  args_info->sele3_arg = NULL;
103 +  args_info->sele3_orig = NULL;
104 +  args_info->refsele_arg = NULL;
105 +  args_info->refsele_orig = NULL;
106 +  args_info->molname_arg = NULL;
107 +  args_info->molname_orig = NULL;
108 +  args_info->begin_orig = NULL;
109 +  args_info->end_orig = NULL;
110 +  
111 + }
112 +
113   void
114   cmdline_parser_print_version (void)
115   {
# Line 32 | Line 120 | cmdline_parser_print_help (void)
120   cmdline_parser_print_help (void)
121   {
122    cmdline_parser_print_version ();
123 <  printf("\n"
124 <  "Usage: %s [OPTIONS]...\n", CMDLINE_PARSER_PACKAGE);
125 <  printf("\n");
126 <  printf("  -h, --help                    Print help and exit\n");
127 <  printf("  -V, --version                 Print version and exit\n");
128 <  printf("  -i, --input=filename          input dump file\n");
129 <  printf("  -o, --output=filename         output file name\n");
130 <  printf("  -n, --step=INT                process every n frame  (default=`1')\n");
131 <  printf("  -r, --nrbins=INT              number of bins for distance  (default=`50')\n");
132 <  printf("  -a, --nanglebins=INT          number of bins for cos(angle)  (default=`50')\n");
133 <  printf("  -l, --length=DOUBLE           maximum length (Defaults to 1/2 smallest length of first frame)\n");
134 <  printf("      --sele1=selection script  select first stuntdouble set\n");
135 <  printf("      --sele2=selection script  select second stuntdouble set\n");
136 <  printf("\n");
137 <  printf(" Group: staticProps  an option of this group is required\n");
138 <  printf("      --gofr                    g(r)\n");
139 <  printf("      --r_theta                 g(r, cos(theta))\n");
140 <  printf("      --r_omega                 g(r, cos(omega))\n");
141 <  printf("      --theta_omega             g(cos(theta), cos(omega))\n");
142 <  printf("      --xyz                     g(x, y, z)\n");
123 >  printf("\nUsage: StaticProps [OPTIONS]...\n\n");
124 >  printf("%s\n","  -h, --help                    Print help and exit");
125 >  printf("%s\n","  -V, --version                 Print version and exit");
126 >  printf("%s\n","  -i, --input=filename          input dump file");
127 >  printf("%s\n","  -o, --output=filename         output file name");
128 >  printf("%s\n","  -n, --step=INT                process every n frame  (default=`1')");
129 >  printf("%s\n","  -r, --nrbins=INT              number of bins for distance  (default=`100')");
130 >  printf("%s\n","  -x, --nbins_x=INT             number of bins in x axis  (default=`100')");
131 >  printf("%s\n","  -y, --nbins_y=INT             number of bins in y axis  (default=`100')");
132 >  printf("%s\n","  -a, --nanglebins=INT          number of bins for cos(angle)  (default=`50')");
133 >  printf("%s\n","      --length=DOUBLE           maximum length (Defaults to 1/2 smallest length \n                                  of first frame)");
134 >  printf("%s\n","  -l, --LegendreL=INT           Order of Legendre Polynomial (used for Bond \n                                  Order calculations)");
135 >  printf("%s\n","  -c, --rcut=DOUBLE             cutoff radius (rcut)");
136 >  printf("%s\n","  -z, --zoffset=DOUBLE          Where to set the zero for the slab_density \n                                  calculation  (default=`0')");
137 >  printf("%s\n","      --sele1=selection script  select the first stuntdouble set");
138 >  printf("%s\n","      --sele2=selection script  select the second stuntdouble set");
139 >  printf("%s\n","      --sele3=selection script  select the third stuntdouble set");
140 >  printf("%s\n","      --refsele=selection script\n                                select reference (use and only use with --gxyz)");
141 >  printf("%s\n","      --molname=STRING          molecule name");
142 >  printf("%s\n","      --begin=INT               begin internal index");
143 >  printf("%s\n","      --end=INT                 end internal index");
144 >  printf("%s\n","\n Group: staticProps\n   an option of this group is required");
145 >  printf("%s\n","  -b, --bo                      bond order parameter (--rcut and --LegendreL \n                                  must be specified");
146 >  printf("%s\n","  -g, --gofr                    g(r)");
147 >  printf("%s\n","      --r_theta                 g(r, cos(theta))");
148 >  printf("%s\n","      --r_omega                 g(r, cos(omega))");
149 >  printf("%s\n","      --theta_omega             g(cos(theta), cos(omega))");
150 >  printf("%s\n","      --gxyz                    g(x, y, z)");
151 >  printf("%s\n","  -p, --p2                      p2 order parameter (--sele1 and --sele2 must be \n                                  specified)");
152 >  printf("%s\n","      --rp2                     rp2 order parameter (--sele1 and --sele2 must \n                                  be specified)");
153 >  printf("%s\n","  -s, --scd                     scd order parameter (either --sele1, --sele2, \n                                  --sele3 are specified or --molname, --begin, \n                                  --end are specified)");
154 >  printf("%s\n","  -d, --density                 density plot");
155 >  printf("%s\n","      --slab_density            slab density");
156 >  printf("%s\n","      --hxy                     hxy");
157 >  
158   }
159  
160 + void
161 + cmdline_parser_init (struct gengetopt_args_info *args_info)
162 + {
163 +  clear_given (args_info);
164 +  clear_args (args_info);
165 + }
166  
167 < static char *gengetopt_strdup (const char *s);
167 > static void
168 > cmdline_parser_release (struct gengetopt_args_info *args_info)
169 > {
170 >  
171 >  if (args_info->input_arg)
172 >    {
173 >      free (args_info->input_arg); /* free previous argument */
174 >      args_info->input_arg = 0;
175 >    }
176 >  if (args_info->input_orig)
177 >    {
178 >      free (args_info->input_orig); /* free previous argument */
179 >      args_info->input_orig = 0;
180 >    }
181 >  if (args_info->output_arg)
182 >    {
183 >      free (args_info->output_arg); /* free previous argument */
184 >      args_info->output_arg = 0;
185 >    }
186 >  if (args_info->output_orig)
187 >    {
188 >      free (args_info->output_orig); /* free previous argument */
189 >      args_info->output_orig = 0;
190 >    }
191 >  if (args_info->step_orig)
192 >    {
193 >      free (args_info->step_orig); /* free previous argument */
194 >      args_info->step_orig = 0;
195 >    }
196 >  if (args_info->nrbins_orig)
197 >    {
198 >      free (args_info->nrbins_orig); /* free previous argument */
199 >      args_info->nrbins_orig = 0;
200 >    }
201 >  if (args_info->nbins_x_orig)
202 >    {
203 >      free (args_info->nbins_x_orig); /* free previous argument */
204 >      args_info->nbins_x_orig = 0;
205 >    }
206 >  if (args_info->nbins_y_orig)
207 >    {
208 >      free (args_info->nbins_y_orig); /* free previous argument */
209 >      args_info->nbins_y_orig = 0;
210 >    }
211 >  if (args_info->nanglebins_orig)
212 >    {
213 >      free (args_info->nanglebins_orig); /* free previous argument */
214 >      args_info->nanglebins_orig = 0;
215 >    }
216 >  if (args_info->length_orig)
217 >    {
218 >      free (args_info->length_orig); /* free previous argument */
219 >      args_info->length_orig = 0;
220 >    }
221 >  if (args_info->LegendreL_orig)
222 >    {
223 >      free (args_info->LegendreL_orig); /* free previous argument */
224 >      args_info->LegendreL_orig = 0;
225 >    }
226 >  if (args_info->rcut_orig)
227 >    {
228 >      free (args_info->rcut_orig); /* free previous argument */
229 >      args_info->rcut_orig = 0;
230 >    }
231 >  if (args_info->zoffset_orig)
232 >    {
233 >      free (args_info->zoffset_orig); /* free previous argument */
234 >      args_info->zoffset_orig = 0;
235 >    }
236 >  if (args_info->sele1_arg)
237 >    {
238 >      free (args_info->sele1_arg); /* free previous argument */
239 >      args_info->sele1_arg = 0;
240 >    }
241 >  if (args_info->sele1_orig)
242 >    {
243 >      free (args_info->sele1_orig); /* free previous argument */
244 >      args_info->sele1_orig = 0;
245 >    }
246 >  if (args_info->sele2_arg)
247 >    {
248 >      free (args_info->sele2_arg); /* free previous argument */
249 >      args_info->sele2_arg = 0;
250 >    }
251 >  if (args_info->sele2_orig)
252 >    {
253 >      free (args_info->sele2_orig); /* free previous argument */
254 >      args_info->sele2_orig = 0;
255 >    }
256 >  if (args_info->sele3_arg)
257 >    {
258 >      free (args_info->sele3_arg); /* free previous argument */
259 >      args_info->sele3_arg = 0;
260 >    }
261 >  if (args_info->sele3_orig)
262 >    {
263 >      free (args_info->sele3_orig); /* free previous argument */
264 >      args_info->sele3_orig = 0;
265 >    }
266 >  if (args_info->refsele_arg)
267 >    {
268 >      free (args_info->refsele_arg); /* free previous argument */
269 >      args_info->refsele_arg = 0;
270 >    }
271 >  if (args_info->refsele_orig)
272 >    {
273 >      free (args_info->refsele_orig); /* free previous argument */
274 >      args_info->refsele_orig = 0;
275 >    }
276 >  if (args_info->molname_arg)
277 >    {
278 >      free (args_info->molname_arg); /* free previous argument */
279 >      args_info->molname_arg = 0;
280 >    }
281 >  if (args_info->molname_orig)
282 >    {
283 >      free (args_info->molname_orig); /* free previous argument */
284 >      args_info->molname_orig = 0;
285 >    }
286 >  if (args_info->begin_orig)
287 >    {
288 >      free (args_info->begin_orig); /* free previous argument */
289 >      args_info->begin_orig = 0;
290 >    }
291 >  if (args_info->end_orig)
292 >    {
293 >      free (args_info->end_orig); /* free previous argument */
294 >      args_info->end_orig = 0;
295 >    }
296 >  
297 >  clear_given (args_info);
298 > }
299  
300 + int
301 + cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
302 + {
303 +  FILE *outfile;
304 +  int i = 0;
305 +
306 +  outfile = fopen(filename, "w");
307 +
308 +  if (!outfile)
309 +    {
310 +      fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
311 +      return EXIT_FAILURE;
312 +    }
313 +
314 +  if (args_info->help_given) {
315 +    fprintf(outfile, "%s\n", "help");
316 +  }
317 +  if (args_info->version_given) {
318 +    fprintf(outfile, "%s\n", "version");
319 +  }
320 +  if (args_info->input_given) {
321 +    if (args_info->input_orig) {
322 +      fprintf(outfile, "%s=\"%s\"\n", "input", args_info->input_orig);
323 +    } else {
324 +      fprintf(outfile, "%s\n", "input");
325 +    }
326 +  }
327 +  if (args_info->output_given) {
328 +    if (args_info->output_orig) {
329 +      fprintf(outfile, "%s=\"%s\"\n", "output", args_info->output_orig);
330 +    } else {
331 +      fprintf(outfile, "%s\n", "output");
332 +    }
333 +  }
334 +  if (args_info->step_given) {
335 +    if (args_info->step_orig) {
336 +      fprintf(outfile, "%s=\"%s\"\n", "step", args_info->step_orig);
337 +    } else {
338 +      fprintf(outfile, "%s\n", "step");
339 +    }
340 +  }
341 +  if (args_info->nrbins_given) {
342 +    if (args_info->nrbins_orig) {
343 +      fprintf(outfile, "%s=\"%s\"\n", "nrbins", args_info->nrbins_orig);
344 +    } else {
345 +      fprintf(outfile, "%s\n", "nrbins");
346 +    }
347 +  }
348 +  if (args_info->nbins_x_given) {
349 +    if (args_info->nbins_x_orig) {
350 +      fprintf(outfile, "%s=\"%s\"\n", "nbins_x", args_info->nbins_x_orig);
351 +    } else {
352 +      fprintf(outfile, "%s\n", "nbins_x");
353 +    }
354 +  }
355 +  if (args_info->nbins_y_given) {
356 +    if (args_info->nbins_y_orig) {
357 +      fprintf(outfile, "%s=\"%s\"\n", "nbins_y", args_info->nbins_y_orig);
358 +    } else {
359 +      fprintf(outfile, "%s\n", "nbins_y");
360 +    }
361 +  }
362 +  if (args_info->nanglebins_given) {
363 +    if (args_info->nanglebins_orig) {
364 +      fprintf(outfile, "%s=\"%s\"\n", "nanglebins", args_info->nanglebins_orig);
365 +    } else {
366 +      fprintf(outfile, "%s\n", "nanglebins");
367 +    }
368 +  }
369 +  if (args_info->length_given) {
370 +    if (args_info->length_orig) {
371 +      fprintf(outfile, "%s=\"%s\"\n", "length", args_info->length_orig);
372 +    } else {
373 +      fprintf(outfile, "%s\n", "length");
374 +    }
375 +  }
376 +  if (args_info->LegendreL_given) {
377 +    if (args_info->LegendreL_orig) {
378 +      fprintf(outfile, "%s=\"%s\"\n", "LegendreL", args_info->LegendreL_orig);
379 +    } else {
380 +      fprintf(outfile, "%s\n", "LegendreL");
381 +    }
382 +  }
383 +  if (args_info->rcut_given) {
384 +    if (args_info->rcut_orig) {
385 +      fprintf(outfile, "%s=\"%s\"\n", "rcut", args_info->rcut_orig);
386 +    } else {
387 +      fprintf(outfile, "%s\n", "rcut");
388 +    }
389 +  }
390 +  if (args_info->zoffset_given) {
391 +    if (args_info->zoffset_orig) {
392 +      fprintf(outfile, "%s=\"%s\"\n", "zoffset", args_info->zoffset_orig);
393 +    } else {
394 +      fprintf(outfile, "%s\n", "zoffset");
395 +    }
396 +  }
397 +  if (args_info->sele1_given) {
398 +    if (args_info->sele1_orig) {
399 +      fprintf(outfile, "%s=\"%s\"\n", "sele1", args_info->sele1_orig);
400 +    } else {
401 +      fprintf(outfile, "%s\n", "sele1");
402 +    }
403 +  }
404 +  if (args_info->sele2_given) {
405 +    if (args_info->sele2_orig) {
406 +      fprintf(outfile, "%s=\"%s\"\n", "sele2", args_info->sele2_orig);
407 +    } else {
408 +      fprintf(outfile, "%s\n", "sele2");
409 +    }
410 +  }
411 +  if (args_info->sele3_given) {
412 +    if (args_info->sele3_orig) {
413 +      fprintf(outfile, "%s=\"%s\"\n", "sele3", args_info->sele3_orig);
414 +    } else {
415 +      fprintf(outfile, "%s\n", "sele3");
416 +    }
417 +  }
418 +  if (args_info->refsele_given) {
419 +    if (args_info->refsele_orig) {
420 +      fprintf(outfile, "%s=\"%s\"\n", "refsele", args_info->refsele_orig);
421 +    } else {
422 +      fprintf(outfile, "%s\n", "refsele");
423 +    }
424 +  }
425 +  if (args_info->molname_given) {
426 +    if (args_info->molname_orig) {
427 +      fprintf(outfile, "%s=\"%s\"\n", "molname", args_info->molname_orig);
428 +    } else {
429 +      fprintf(outfile, "%s\n", "molname");
430 +    }
431 +  }
432 +  if (args_info->begin_given) {
433 +    if (args_info->begin_orig) {
434 +      fprintf(outfile, "%s=\"%s\"\n", "begin", args_info->begin_orig);
435 +    } else {
436 +      fprintf(outfile, "%s\n", "begin");
437 +    }
438 +  }
439 +  if (args_info->end_given) {
440 +    if (args_info->end_orig) {
441 +      fprintf(outfile, "%s=\"%s\"\n", "end", args_info->end_orig);
442 +    } else {
443 +      fprintf(outfile, "%s\n", "end");
444 +    }
445 +  }
446 +  if (args_info->bo_given) {
447 +    fprintf(outfile, "%s\n", "bo");
448 +  }
449 +  if (args_info->gofr_given) {
450 +    fprintf(outfile, "%s\n", "gofr");
451 +  }
452 +  if (args_info->r_theta_given) {
453 +    fprintf(outfile, "%s\n", "r_theta");
454 +  }
455 +  if (args_info->r_omega_given) {
456 +    fprintf(outfile, "%s\n", "r_omega");
457 +  }
458 +  if (args_info->theta_omega_given) {
459 +    fprintf(outfile, "%s\n", "theta_omega");
460 +  }
461 +  if (args_info->gxyz_given) {
462 +    fprintf(outfile, "%s\n", "gxyz");
463 +  }
464 +  if (args_info->p2_given) {
465 +    fprintf(outfile, "%s\n", "p2");
466 +  }
467 +  if (args_info->rp2_given) {
468 +    fprintf(outfile, "%s\n", "rp2");
469 +  }
470 +  if (args_info->scd_given) {
471 +    fprintf(outfile, "%s\n", "scd");
472 +  }
473 +  if (args_info->density_given) {
474 +    fprintf(outfile, "%s\n", "density");
475 +  }
476 +  if (args_info->slab_density_given) {
477 +    fprintf(outfile, "%s\n", "slab_density");
478 +  }
479 +  if (args_info->hxy_given) {
480 +    fprintf(outfile, "%s\n", "hxy");
481 +  }
482 +  
483 +  fclose (outfile);
484 +
485 +  i = EXIT_SUCCESS;
486 +  return i;
487 + }
488 +
489 + void
490 + cmdline_parser_free (struct gengetopt_args_info *args_info)
491 + {
492 +  cmdline_parser_release (args_info);
493 + }
494 +
495 +
496   /* gengetopt_strdup() */
497   /* strdup.c replacement of strdup, which is not standard */
498   char *
499   gengetopt_strdup (const char *s)
500   {
501 <  char *result = (char*)malloc(strlen(s) + 1);
501 >  char *result = NULL;
502 >  if (!s)
503 >    return result;
504 >
505 >  result = (char*)malloc(strlen(s) + 1);
506    if (result == (char*)0)
507      return (char*)0;
508    strcpy(result, s);
509    return result;
510   }
511  
512 < int
513 < cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
512 > static void
513 > reset_group_staticProps(struct gengetopt_args_info *args_info);
514 >
515 > static void
516 > reset_group_staticProps(struct gengetopt_args_info *args_info)
517   {
518 <  int c;        /* Character of the parsed option.  */
519 <  int missing_required_options = 0;
77 <  int staticProps_group_counter = 0;
518 >  if (! args_info->staticProps_group_counter)
519 >    return;
520    
521 <
80 <  args_info->help_given = 0 ;
81 <  args_info->version_given = 0 ;
82 <  args_info->input_given = 0 ;
83 <  args_info->output_given = 0 ;
84 <  args_info->step_given = 0 ;
85 <  args_info->nrbins_given = 0 ;
86 <  args_info->nanglebins_given = 0 ;
87 <  args_info->length_given = 0 ;
88 <  args_info->sele1_given = 0 ;
89 <  args_info->sele2_given = 0 ;
521 >  args_info->bo_given = 0 ;
522    args_info->gofr_given = 0 ;
523    args_info->r_theta_given = 0 ;
524    args_info->r_omega_given = 0 ;
525    args_info->theta_omega_given = 0 ;
526 <  args_info->xyz_given = 0 ;
527 < #define clear_args() { \
528 <  args_info->input_arg = NULL; \
529 <  args_info->output_arg = NULL; \
530 <  args_info->step_arg = 1 ;\
531 <  args_info->nrbins_arg = 50 ;\
532 <  args_info->nanglebins_arg = 50 ;\
533 <  args_info->sele1_arg = NULL; \
534 <  args_info->sele2_arg = NULL; \
526 >  args_info->gxyz_given = 0 ;
527 >  args_info->p2_given = 0 ;
528 >  args_info->rp2_given = 0 ;
529 >  args_info->scd_given = 0 ;
530 >  args_info->density_given = 0 ;
531 >  args_info->slab_density_given = 0 ;
532 >  args_info->hxy_given = 0 ;
533 >
534 >  args_info->staticProps_group_counter = 0;
535   }
536  
537 <  clear_args();
537 > int
538 > cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
539 > {
540 >  return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
541 > }
542  
543 + int
544 + cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
545 + {
546 +  int result;
547 +
548 +  result = cmdline_parser_internal (argc, argv, args_info, override, initialize, check_required, NULL);
549 +
550 +  if (result == EXIT_FAILURE)
551 +    {
552 +      cmdline_parser_free (args_info);
553 +      exit (EXIT_FAILURE);
554 +    }
555 +  
556 +  return result;
557 + }
558 +
559 + int
560 + cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
561 + {
562 +  int result = EXIT_SUCCESS;
563 +
564 +  if (cmdline_parser_required2(args_info, prog_name, NULL) > 0)
565 +    result = EXIT_FAILURE;
566 +
567 +  if (result == EXIT_FAILURE)
568 +    {
569 +      cmdline_parser_free (args_info);
570 +      exit (EXIT_FAILURE);
571 +    }
572 +  
573 +  return result;
574 + }
575 +
576 + int
577 + cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
578 + {
579 +  int error = 0;
580 +
581 +  if (! args_info->input_given)
582 +    {
583 +      fprintf (stderr, "%s: '--input' ('-i') option required%s\n", prog_name, (additional_error ? additional_error : ""));
584 +      error = 1;
585 +    }
586 +  if (args_info->staticProps_group_counter == 0)
587 +    {
588 +      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 : ""));
589 +      error = 1;
590 +    }
591 +  
592 +
593 +  return error;
594 + }
595 +
596 + int
597 + cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error)
598 + {
599 +  int c;        /* Character of the parsed option.  */
600 +
601 +  int error = 0;
602 +  struct gengetopt_args_info local_args_info;
603 +
604 +  if (initialize)
605 +    cmdline_parser_init (args_info);
606 +
607 +  cmdline_parser_init (&local_args_info);
608 +
609    optarg = 0;
610 <  optind = 1;
610 >  optind = 0;
611    opterr = 1;
612    optopt = '?';
613  
# Line 121 | Line 623 | cmdline_parser (int argc, char * const *argv, struct g
623          { "output",     1, NULL, 'o' },
624          { "step",       1, NULL, 'n' },
625          { "nrbins",     1, NULL, 'r' },
626 +        { "nbins_x",    1, NULL, 'x' },
627 +        { "nbins_y",    1, NULL, 'y' },
628          { "nanglebins", 1, NULL, 'a' },
629 <        { "length",     1, NULL, 'l' },
629 >        { "length",     1, NULL, 0 },
630 >        { "LegendreL",  1, NULL, 'l' },
631 >        { "rcut",       1, NULL, 'c' },
632 >        { "zoffset",    1, NULL, 'z' },
633          { "sele1",      1, NULL, 0 },
634          { "sele2",      1, NULL, 0 },
635 <        { "gofr",       0, NULL, 0 },
635 >        { "sele3",      1, NULL, 0 },
636 >        { "refsele",    1, NULL, 0 },
637 >        { "molname",    1, NULL, 0 },
638 >        { "begin",      1, NULL, 0 },
639 >        { "end",        1, NULL, 0 },
640 >        { "bo", 0, NULL, 'b' },
641 >        { "gofr",       0, NULL, 'g' },
642          { "r_theta",    0, NULL, 0 },
643          { "r_omega",    0, NULL, 0 },
644          { "theta_omega",        0, NULL, 0 },
645 <        { "xyz",        0, NULL, 0 },
645 >        { "gxyz",       0, NULL, 0 },
646 >        { "p2", 0, NULL, 'p' },
647 >        { "rp2",        0, NULL, 0 },
648 >        { "scd",        0, NULL, 's' },
649 >        { "density",    0, NULL, 'd' },
650 >        { "slab_density",       0, NULL, 0 },
651 >        { "hxy",        0, NULL, 0 },
652          { NULL, 0, NULL, 0 }
653        };
654  
655        stop_char = 0;
656 <      c = getopt_long (argc, argv, "hVi:o:n:r:a:l:", long_options, &option_index);
656 >      c = getopt_long (argc, argv, "hVi:o:n:r:x:y:a:l:c:z:bgpsd", long_options, &option_index);
657  
658        if (c == -1) break;       /* Exit from `while (1)' loop.  */
659  
660        switch (c)
661          {
662          case 'h':       /* Print help and exit.  */
144          clear_args ();
663            cmdline_parser_print_help ();
664 +          cmdline_parser_free (&local_args_info);
665            exit (EXIT_SUCCESS);
666  
667          case 'V':       /* Print version and exit.  */
149          clear_args ();
668            cmdline_parser_print_version ();
669 +          cmdline_parser_free (&local_args_info);
670            exit (EXIT_SUCCESS);
671  
672          case 'i':       /* input dump file.  */
673 <          if (args_info->input_given)
673 >          if (local_args_info.input_given)
674              {
675 <              fprintf (stderr, "%s: `--input' (`-i') option given more than once\n", CMDLINE_PARSER_PACKAGE);
676 <              clear_args ();
158 <              exit (EXIT_FAILURE);
675 >              fprintf (stderr, "%s: `--input' (`-i') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
676 >              goto failure;
677              }
678 +          if (args_info->input_given && ! override)
679 +            continue;
680 +          local_args_info.input_given = 1;
681            args_info->input_given = 1;
682 +          if (args_info->input_arg)
683 +            free (args_info->input_arg); /* free previous string */
684            args_info->input_arg = gengetopt_strdup (optarg);
685 +          if (args_info->input_orig)
686 +            free (args_info->input_orig); /* free previous string */
687 +          args_info->input_orig = gengetopt_strdup (optarg);
688            break;
689  
690          case 'o':       /* output file name.  */
691 <          if (args_info->output_given)
691 >          if (local_args_info.output_given)
692              {
693 <              fprintf (stderr, "%s: `--output' (`-o') option given more than once\n", CMDLINE_PARSER_PACKAGE);
694 <              clear_args ();
169 <              exit (EXIT_FAILURE);
693 >              fprintf (stderr, "%s: `--output' (`-o') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
694 >              goto failure;
695              }
696 +          if (args_info->output_given && ! override)
697 +            continue;
698 +          local_args_info.output_given = 1;
699            args_info->output_given = 1;
700 +          if (args_info->output_arg)
701 +            free (args_info->output_arg); /* free previous string */
702            args_info->output_arg = gengetopt_strdup (optarg);
703 +          if (args_info->output_orig)
704 +            free (args_info->output_orig); /* free previous string */
705 +          args_info->output_orig = gengetopt_strdup (optarg);
706            break;
707  
708          case 'n':       /* process every n frame.  */
709 <          if (args_info->step_given)
709 >          if (local_args_info.step_given)
710              {
711 <              fprintf (stderr, "%s: `--step' (`-n') option given more than once\n", CMDLINE_PARSER_PACKAGE);
712 <              clear_args ();
180 <              exit (EXIT_FAILURE);
711 >              fprintf (stderr, "%s: `--step' (`-n') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
712 >              goto failure;
713              }
714 +          if (args_info->step_given && ! override)
715 +            continue;
716 +          local_args_info.step_given = 1;
717            args_info->step_given = 1;
718 <          args_info->step_arg = strtol (optarg,&stop_char,0);
718 >          args_info->step_arg = strtol (optarg, &stop_char, 0);
719 >          if (!(stop_char && *stop_char == '\0')) {
720 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
721 >            goto failure;
722 >          }
723 >          if (args_info->step_orig)
724 >            free (args_info->step_orig); /* free previous string */
725 >          args_info->step_orig = gengetopt_strdup (optarg);
726            break;
727  
728          case 'r':       /* number of bins for distance.  */
729 <          if (args_info->nrbins_given)
729 >          if (local_args_info.nrbins_given)
730              {
731 <              fprintf (stderr, "%s: `--nrbins' (`-r') option given more than once\n", CMDLINE_PARSER_PACKAGE);
732 <              clear_args ();
191 <              exit (EXIT_FAILURE);
731 >              fprintf (stderr, "%s: `--nrbins' (`-r') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
732 >              goto failure;
733              }
734 +          if (args_info->nrbins_given && ! override)
735 +            continue;
736 +          local_args_info.nrbins_given = 1;
737            args_info->nrbins_given = 1;
738 <          args_info->nrbins_arg = strtol (optarg,&stop_char,0);
738 >          args_info->nrbins_arg = strtol (optarg, &stop_char, 0);
739 >          if (!(stop_char && *stop_char == '\0')) {
740 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
741 >            goto failure;
742 >          }
743 >          if (args_info->nrbins_orig)
744 >            free (args_info->nrbins_orig); /* free previous string */
745 >          args_info->nrbins_orig = gengetopt_strdup (optarg);
746            break;
747  
748 +        case 'x':       /* number of bins in x axis.  */
749 +          if (local_args_info.nbins_x_given)
750 +            {
751 +              fprintf (stderr, "%s: `--nbins_x' (`-x') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
752 +              goto failure;
753 +            }
754 +          if (args_info->nbins_x_given && ! override)
755 +            continue;
756 +          local_args_info.nbins_x_given = 1;
757 +          args_info->nbins_x_given = 1;
758 +          args_info->nbins_x_arg = strtol (optarg, &stop_char, 0);
759 +          if (!(stop_char && *stop_char == '\0')) {
760 +            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
761 +            goto failure;
762 +          }
763 +          if (args_info->nbins_x_orig)
764 +            free (args_info->nbins_x_orig); /* free previous string */
765 +          args_info->nbins_x_orig = gengetopt_strdup (optarg);
766 +          break;
767 +
768 +        case 'y':       /* number of bins in y axis.  */
769 +          if (local_args_info.nbins_y_given)
770 +            {
771 +              fprintf (stderr, "%s: `--nbins_y' (`-y') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
772 +              goto failure;
773 +            }
774 +          if (args_info->nbins_y_given && ! override)
775 +            continue;
776 +          local_args_info.nbins_y_given = 1;
777 +          args_info->nbins_y_given = 1;
778 +          args_info->nbins_y_arg = strtol (optarg, &stop_char, 0);
779 +          if (!(stop_char && *stop_char == '\0')) {
780 +            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
781 +            goto failure;
782 +          }
783 +          if (args_info->nbins_y_orig)
784 +            free (args_info->nbins_y_orig); /* free previous string */
785 +          args_info->nbins_y_orig = gengetopt_strdup (optarg);
786 +          break;
787 +
788          case 'a':       /* number of bins for cos(angle).  */
789 <          if (args_info->nanglebins_given)
789 >          if (local_args_info.nanglebins_given)
790              {
791 <              fprintf (stderr, "%s: `--nanglebins' (`-a') option given more than once\n", CMDLINE_PARSER_PACKAGE);
792 <              clear_args ();
202 <              exit (EXIT_FAILURE);
791 >              fprintf (stderr, "%s: `--nanglebins' (`-a') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
792 >              goto failure;
793              }
794 +          if (args_info->nanglebins_given && ! override)
795 +            continue;
796 +          local_args_info.nanglebins_given = 1;
797            args_info->nanglebins_given = 1;
798 <          args_info->nanglebins_arg = strtol (optarg,&stop_char,0);
798 >          args_info->nanglebins_arg = strtol (optarg, &stop_char, 0);
799 >          if (!(stop_char && *stop_char == '\0')) {
800 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
801 >            goto failure;
802 >          }
803 >          if (args_info->nanglebins_orig)
804 >            free (args_info->nanglebins_orig); /* free previous string */
805 >          args_info->nanglebins_orig = gengetopt_strdup (optarg);
806            break;
807  
808 <        case 'l':       /* maximum length (Defaults to cutoff radius).  */
809 <          if (args_info->length_given)
808 >        case 'l':       /* Order of Legendre Polynomial (used for Bond Order calculations).  */
809 >          if (local_args_info.LegendreL_given)
810              {
811 <              fprintf (stderr, "%s: `--length' (`-l') option given more than once\n", CMDLINE_PARSER_PACKAGE);
812 <              clear_args ();
213 <              exit (EXIT_FAILURE);
811 >              fprintf (stderr, "%s: `--LegendreL' (`-l') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
812 >              goto failure;
813              }
814 <          args_info->length_given = 1;
815 <          args_info->length_arg = strtod (optarg, NULL);
814 >          if (args_info->LegendreL_given && ! override)
815 >            continue;
816 >          local_args_info.LegendreL_given = 1;
817 >          args_info->LegendreL_given = 1;
818 >          args_info->LegendreL_arg = strtol (optarg, &stop_char, 0);
819 >          if (!(stop_char && *stop_char == '\0')) {
820 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
821 >            goto failure;
822 >          }
823 >          if (args_info->LegendreL_orig)
824 >            free (args_info->LegendreL_orig); /* free previous string */
825 >          args_info->LegendreL_orig = gengetopt_strdup (optarg);
826            break;
827  
828 +        case 'c':       /* cutoff radius (rcut).  */
829 +          if (local_args_info.rcut_given)
830 +            {
831 +              fprintf (stderr, "%s: `--rcut' (`-c') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
832 +              goto failure;
833 +            }
834 +          if (args_info->rcut_given && ! override)
835 +            continue;
836 +          local_args_info.rcut_given = 1;
837 +          args_info->rcut_given = 1;
838 +          args_info->rcut_arg = strtod (optarg, &stop_char);
839 +          if (!(stop_char && *stop_char == '\0')) {
840 +            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
841 +            goto failure;
842 +          }
843 +          if (args_info->rcut_orig)
844 +            free (args_info->rcut_orig); /* free previous string */
845 +          args_info->rcut_orig = gengetopt_strdup (optarg);
846 +          break;
847  
848 +        case 'z':       /* Where to set the zero for the slab_density calculation.  */
849 +          if (local_args_info.zoffset_given)
850 +            {
851 +              fprintf (stderr, "%s: `--zoffset' (`-z') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
852 +              goto failure;
853 +            }
854 +          if (args_info->zoffset_given && ! override)
855 +            continue;
856 +          local_args_info.zoffset_given = 1;
857 +          args_info->zoffset_given = 1;
858 +          args_info->zoffset_arg = strtod (optarg, &stop_char);
859 +          if (!(stop_char && *stop_char == '\0')) {
860 +            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
861 +            goto failure;
862 +          }
863 +          if (args_info->zoffset_orig)
864 +            free (args_info->zoffset_orig); /* free previous string */
865 +          args_info->zoffset_orig = gengetopt_strdup (optarg);
866 +          break;
867 +
868 +        case 'b':       /* bond order parameter (--rcut and --LegendreL must be specified.  */
869 +          if (local_args_info.bo_given)
870 +            {
871 +              fprintf (stderr, "%s: `--bo' (`-b') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
872 +              goto failure;
873 +            }
874 +          if (args_info->bo_given && ! override)
875 +            continue;
876 +          local_args_info.bo_given = 1;
877 +          args_info->bo_given = 1;
878 +          if (args_info->staticProps_group_counter && override)
879 +            reset_group_staticProps (args_info);
880 +          args_info->staticProps_group_counter += 1;
881 +          break;
882 +
883 +        case 'g':       /* g(r).  */
884 +          if (local_args_info.gofr_given)
885 +            {
886 +              fprintf (stderr, "%s: `--gofr' (`-g') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
887 +              goto failure;
888 +            }
889 +          if (args_info->gofr_given && ! override)
890 +            continue;
891 +          local_args_info.gofr_given = 1;
892 +          args_info->gofr_given = 1;
893 +          if (args_info->staticProps_group_counter && override)
894 +            reset_group_staticProps (args_info);
895 +          args_info->staticProps_group_counter += 1;
896 +          break;
897 +
898 +        case 'p':       /* p2 order parameter (--sele1 and --sele2 must be specified).  */
899 +          if (local_args_info.p2_given)
900 +            {
901 +              fprintf (stderr, "%s: `--p2' (`-p') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
902 +              goto failure;
903 +            }
904 +          if (args_info->p2_given && ! override)
905 +            continue;
906 +          local_args_info.p2_given = 1;
907 +          args_info->p2_given = 1;
908 +          if (args_info->staticProps_group_counter && override)
909 +            reset_group_staticProps (args_info);
910 +          args_info->staticProps_group_counter += 1;
911 +          break;
912 +
913 +        case 's':       /* scd order parameter (either --sele1, --sele2, --sele3 are specified or --molname, --begin, --end are specified).  */
914 +          if (local_args_info.scd_given)
915 +            {
916 +              fprintf (stderr, "%s: `--scd' (`-s') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
917 +              goto failure;
918 +            }
919 +          if (args_info->scd_given && ! override)
920 +            continue;
921 +          local_args_info.scd_given = 1;
922 +          args_info->scd_given = 1;
923 +          if (args_info->staticProps_group_counter && override)
924 +            reset_group_staticProps (args_info);
925 +          args_info->staticProps_group_counter += 1;
926 +          break;
927 +
928 +        case 'd':       /* density plot.  */
929 +          if (local_args_info.density_given)
930 +            {
931 +              fprintf (stderr, "%s: `--density' (`-d') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
932 +              goto failure;
933 +            }
934 +          if (args_info->density_given && ! override)
935 +            continue;
936 +          local_args_info.density_given = 1;
937 +          args_info->density_given = 1;
938 +          if (args_info->staticProps_group_counter && override)
939 +            reset_group_staticProps (args_info);
940 +          args_info->staticProps_group_counter += 1;
941 +          break;
942 +
943 +
944          case 0: /* Long option with no short option */
945 <          /* select first stuntdouble set.  */
946 <          if (strcmp (long_options[option_index].name, "sele1") == 0)
945 >          /* maximum length (Defaults to 1/2 smallest length of first frame).  */
946 >          if (strcmp (long_options[option_index].name, "length") == 0)
947            {
948 <            if (args_info->sele1_given)
948 >            if (local_args_info.length_given)
949                {
950 <                fprintf (stderr, "%s: `--sele1' option given more than once\n", CMDLINE_PARSER_PACKAGE);
951 <                clear_args ();
228 <                exit (EXIT_FAILURE);
950 >                fprintf (stderr, "%s: `--length' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
951 >                goto failure;
952                }
953 +            if (args_info->length_given && ! override)
954 +              continue;
955 +            local_args_info.length_given = 1;
956 +            args_info->length_given = 1;
957 +            args_info->length_arg = strtod (optarg, &stop_char);
958 +            if (!(stop_char && *stop_char == '\0')) {
959 +              fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
960 +              goto failure;
961 +            }
962 +            if (args_info->length_orig)
963 +              free (args_info->length_orig); /* free previous string */
964 +            args_info->length_orig = gengetopt_strdup (optarg);
965 +          }
966 +          /* select the first stuntdouble set.  */
967 +          else if (strcmp (long_options[option_index].name, "sele1") == 0)
968 +          {
969 +            if (local_args_info.sele1_given)
970 +              {
971 +                fprintf (stderr, "%s: `--sele1' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
972 +                goto failure;
973 +              }
974 +            if (args_info->sele1_given && ! override)
975 +              continue;
976 +            local_args_info.sele1_given = 1;
977              args_info->sele1_given = 1;
978 +            if (args_info->sele1_arg)
979 +              free (args_info->sele1_arg); /* free previous string */
980              args_info->sele1_arg = gengetopt_strdup (optarg);
981 <            break;
981 >            if (args_info->sele1_orig)
982 >              free (args_info->sele1_orig); /* free previous string */
983 >            args_info->sele1_orig = gengetopt_strdup (optarg);
984            }
985 <          
235 <          /* select second stuntdouble set.  */
985 >          /* select the second stuntdouble set.  */
986            else if (strcmp (long_options[option_index].name, "sele2") == 0)
987            {
988 <            if (args_info->sele2_given)
988 >            if (local_args_info.sele2_given)
989                {
990 <                fprintf (stderr, "%s: `--sele2' option given more than once\n", CMDLINE_PARSER_PACKAGE);
991 <                clear_args ();
242 <                exit (EXIT_FAILURE);
990 >                fprintf (stderr, "%s: `--sele2' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
991 >                goto failure;
992                }
993 +            if (args_info->sele2_given && ! override)
994 +              continue;
995 +            local_args_info.sele2_given = 1;
996              args_info->sele2_given = 1;
997 +            if (args_info->sele2_arg)
998 +              free (args_info->sele2_arg); /* free previous string */
999              args_info->sele2_arg = gengetopt_strdup (optarg);
1000 <            break;
1000 >            if (args_info->sele2_orig)
1001 >              free (args_info->sele2_orig); /* free previous string */
1002 >            args_info->sele2_orig = gengetopt_strdup (optarg);
1003            }
1004 <          
1005 <          /* g(r).  */
250 <          else if (strcmp (long_options[option_index].name, "gofr") == 0)
1004 >          /* select the third stuntdouble set.  */
1005 >          else if (strcmp (long_options[option_index].name, "sele3") == 0)
1006            {
1007 <            if (args_info->gofr_given)
1007 >            if (local_args_info.sele3_given)
1008                {
1009 <                fprintf (stderr, "%s: `--gofr' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1010 <                clear_args ();
256 <                exit (EXIT_FAILURE);
1009 >                fprintf (stderr, "%s: `--sele3' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1010 >                goto failure;
1011                }
1012 <            args_info->gofr_given = 1; staticProps_group_counter += 1;
1013 <          
1014 <            break;
1012 >            if (args_info->sele3_given && ! override)
1013 >              continue;
1014 >            local_args_info.sele3_given = 1;
1015 >            args_info->sele3_given = 1;
1016 >            if (args_info->sele3_arg)
1017 >              free (args_info->sele3_arg); /* free previous string */
1018 >            args_info->sele3_arg = gengetopt_strdup (optarg);
1019 >            if (args_info->sele3_orig)
1020 >              free (args_info->sele3_orig); /* free previous string */
1021 >            args_info->sele3_orig = gengetopt_strdup (optarg);
1022            }
1023 <          
1023 >          /* select reference (use and only use with --gxyz).  */
1024 >          else if (strcmp (long_options[option_index].name, "refsele") == 0)
1025 >          {
1026 >            if (local_args_info.refsele_given)
1027 >              {
1028 >                fprintf (stderr, "%s: `--refsele' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1029 >                goto failure;
1030 >              }
1031 >            if (args_info->refsele_given && ! override)
1032 >              continue;
1033 >            local_args_info.refsele_given = 1;
1034 >            args_info->refsele_given = 1;
1035 >            if (args_info->refsele_arg)
1036 >              free (args_info->refsele_arg); /* free previous string */
1037 >            args_info->refsele_arg = gengetopt_strdup (optarg);
1038 >            if (args_info->refsele_orig)
1039 >              free (args_info->refsele_orig); /* free previous string */
1040 >            args_info->refsele_orig = gengetopt_strdup (optarg);
1041 >          }
1042 >          /* molecule name.  */
1043 >          else if (strcmp (long_options[option_index].name, "molname") == 0)
1044 >          {
1045 >            if (local_args_info.molname_given)
1046 >              {
1047 >                fprintf (stderr, "%s: `--molname' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1048 >                goto failure;
1049 >              }
1050 >            if (args_info->molname_given && ! override)
1051 >              continue;
1052 >            local_args_info.molname_given = 1;
1053 >            args_info->molname_given = 1;
1054 >            if (args_info->molname_arg)
1055 >              free (args_info->molname_arg); /* free previous string */
1056 >            args_info->molname_arg = gengetopt_strdup (optarg);
1057 >            if (args_info->molname_orig)
1058 >              free (args_info->molname_orig); /* free previous string */
1059 >            args_info->molname_orig = gengetopt_strdup (optarg);
1060 >          }
1061 >          /* begin internal index.  */
1062 >          else if (strcmp (long_options[option_index].name, "begin") == 0)
1063 >          {
1064 >            if (local_args_info.begin_given)
1065 >              {
1066 >                fprintf (stderr, "%s: `--begin' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1067 >                goto failure;
1068 >              }
1069 >            if (args_info->begin_given && ! override)
1070 >              continue;
1071 >            local_args_info.begin_given = 1;
1072 >            args_info->begin_given = 1;
1073 >            args_info->begin_arg = strtol (optarg, &stop_char, 0);
1074 >            if (!(stop_char && *stop_char == '\0')) {
1075 >              fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
1076 >              goto failure;
1077 >            }
1078 >            if (args_info->begin_orig)
1079 >              free (args_info->begin_orig); /* free previous string */
1080 >            args_info->begin_orig = gengetopt_strdup (optarg);
1081 >          }
1082 >          /* end internal index.  */
1083 >          else if (strcmp (long_options[option_index].name, "end") == 0)
1084 >          {
1085 >            if (local_args_info.end_given)
1086 >              {
1087 >                fprintf (stderr, "%s: `--end' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1088 >                goto failure;
1089 >              }
1090 >            if (args_info->end_given && ! override)
1091 >              continue;
1092 >            local_args_info.end_given = 1;
1093 >            args_info->end_given = 1;
1094 >            args_info->end_arg = strtol (optarg, &stop_char, 0);
1095 >            if (!(stop_char && *stop_char == '\0')) {
1096 >              fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
1097 >              goto failure;
1098 >            }
1099 >            if (args_info->end_orig)
1100 >              free (args_info->end_orig); /* free previous string */
1101 >            args_info->end_orig = gengetopt_strdup (optarg);
1102 >          }
1103            /* g(r, cos(theta)).  */
1104            else if (strcmp (long_options[option_index].name, "r_theta") == 0)
1105            {
1106 <            if (args_info->r_theta_given)
1106 >            if (local_args_info.r_theta_given)
1107                {
1108 <                fprintf (stderr, "%s: `--r_theta' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1109 <                clear_args ();
270 <                exit (EXIT_FAILURE);
1108 >                fprintf (stderr, "%s: `--r_theta' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1109 >                goto failure;
1110                }
1111 <            args_info->r_theta_given = 1; staticProps_group_counter += 1;
1112 <          
1111 >            if (args_info->r_theta_given && ! override)
1112 >              continue;
1113 >            local_args_info.r_theta_given = 1;
1114 >            args_info->r_theta_given = 1;
1115 >            if (args_info->staticProps_group_counter && override)
1116 >              reset_group_staticProps (args_info);
1117 >            args_info->staticProps_group_counter += 1;
1118              break;
1119            }
276          
1120            /* g(r, cos(omega)).  */
1121            else if (strcmp (long_options[option_index].name, "r_omega") == 0)
1122            {
1123 <            if (args_info->r_omega_given)
1123 >            if (local_args_info.r_omega_given)
1124                {
1125 <                fprintf (stderr, "%s: `--r_omega' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1126 <                clear_args ();
284 <                exit (EXIT_FAILURE);
1125 >                fprintf (stderr, "%s: `--r_omega' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1126 >                goto failure;
1127                }
1128 <            args_info->r_omega_given = 1; staticProps_group_counter += 1;
1129 <          
1128 >            if (args_info->r_omega_given && ! override)
1129 >              continue;
1130 >            local_args_info.r_omega_given = 1;
1131 >            args_info->r_omega_given = 1;
1132 >            if (args_info->staticProps_group_counter && override)
1133 >              reset_group_staticProps (args_info);
1134 >            args_info->staticProps_group_counter += 1;
1135              break;
1136            }
290          
1137            /* g(cos(theta), cos(omega)).  */
1138            else if (strcmp (long_options[option_index].name, "theta_omega") == 0)
1139            {
1140 <            if (args_info->theta_omega_given)
1140 >            if (local_args_info.theta_omega_given)
1141                {
1142 <                fprintf (stderr, "%s: `--theta_omega' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1143 <                clear_args ();
298 <                exit (EXIT_FAILURE);
1142 >                fprintf (stderr, "%s: `--theta_omega' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1143 >                goto failure;
1144                }
1145 <            args_info->theta_omega_given = 1; staticProps_group_counter += 1;
1146 <          
1145 >            if (args_info->theta_omega_given && ! override)
1146 >              continue;
1147 >            local_args_info.theta_omega_given = 1;
1148 >            args_info->theta_omega_given = 1;
1149 >            if (args_info->staticProps_group_counter && override)
1150 >              reset_group_staticProps (args_info);
1151 >            args_info->staticProps_group_counter += 1;
1152              break;
1153            }
304          
1154            /* g(x, y, z).  */
1155 <          else if (strcmp (long_options[option_index].name, "xyz") == 0)
1155 >          else if (strcmp (long_options[option_index].name, "gxyz") == 0)
1156            {
1157 <            if (args_info->xyz_given)
1157 >            if (local_args_info.gxyz_given)
1158                {
1159 <                fprintf (stderr, "%s: `--xyz' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1160 <                clear_args ();
312 <                exit (EXIT_FAILURE);
1159 >                fprintf (stderr, "%s: `--gxyz' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1160 >                goto failure;
1161                }
1162 <            args_info->xyz_given = 1; staticProps_group_counter += 1;
1163 <          
1162 >            if (args_info->gxyz_given && ! override)
1163 >              continue;
1164 >            local_args_info.gxyz_given = 1;
1165 >            args_info->gxyz_given = 1;
1166 >            if (args_info->staticProps_group_counter && override)
1167 >              reset_group_staticProps (args_info);
1168 >            args_info->staticProps_group_counter += 1;
1169              break;
1170            }
1171 +          /* rp2 order parameter (--sele1 and --sele2 must be specified).  */
1172 +          else if (strcmp (long_options[option_index].name, "rp2") == 0)
1173 +          {
1174 +            if (local_args_info.rp2_given)
1175 +              {
1176 +                fprintf (stderr, "%s: `--rp2' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1177 +                goto failure;
1178 +              }
1179 +            if (args_info->rp2_given && ! override)
1180 +              continue;
1181 +            local_args_info.rp2_given = 1;
1182 +            args_info->rp2_given = 1;
1183 +            if (args_info->staticProps_group_counter && override)
1184 +              reset_group_staticProps (args_info);
1185 +            args_info->staticProps_group_counter += 1;
1186 +            break;
1187 +          }
1188 +          /* slab density.  */
1189 +          else if (strcmp (long_options[option_index].name, "slab_density") == 0)
1190 +          {
1191 +            if (local_args_info.slab_density_given)
1192 +              {
1193 +                fprintf (stderr, "%s: `--slab_density' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1194 +                goto failure;
1195 +              }
1196 +            if (args_info->slab_density_given && ! override)
1197 +              continue;
1198 +            local_args_info.slab_density_given = 1;
1199 +            args_info->slab_density_given = 1;
1200 +            if (args_info->staticProps_group_counter && override)
1201 +              reset_group_staticProps (args_info);
1202 +            args_info->staticProps_group_counter += 1;
1203 +            break;
1204 +          }
1205 +          /* hxy.  */
1206 +          else if (strcmp (long_options[option_index].name, "hxy") == 0)
1207 +          {
1208 +            if (local_args_info.hxy_given)
1209 +              {
1210 +                fprintf (stderr, "%s: `--hxy' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1211 +                goto failure;
1212 +              }
1213 +            if (args_info->hxy_given && ! override)
1214 +              continue;
1215 +            local_args_info.hxy_given = 1;
1216 +            args_info->hxy_given = 1;
1217 +            if (args_info->staticProps_group_counter && override)
1218 +              reset_group_staticProps (args_info);
1219 +            args_info->staticProps_group_counter += 1;
1220 +            break;
1221 +          }
1222            
1223 <
1223 >          break;
1224          case '?':       /* Invalid option.  */
1225            /* `getopt_long' already printed an error message.  */
1226 <          exit (EXIT_FAILURE);
1226 >          goto failure;
1227  
1228          default:        /* bug: option not considered.  */
1229 <          fprintf (stderr, "%s: option unknown: %c\n", CMDLINE_PARSER_PACKAGE, c);
1229 >          fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
1230            abort ();
1231          } /* switch */
1232      } /* while */
1233  
1234 <  if ( staticProps_group_counter != 1)
1234 >  if (args_info->staticProps_group_counter > 1)
1235      {
1236 <      fprintf (stderr, "%s: %d options of group staticProps were given. One is required\n", CMDLINE_PARSER_PACKAGE, staticProps_group_counter);
1237 <      missing_required_options = 1;
1236 >      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 : ""));
1237 >      error = 1;
1238      }
1239    
1240  
1241 <  if (! args_info->input_given)
1241 >
1242 >  if (check_required)
1243      {
1244 <      fprintf (stderr, "%s: '--input' ('-i') option required\n", CMDLINE_PARSER_PACKAGE);
340 <      missing_required_options = 1;
1244 >      error += cmdline_parser_required2 (args_info, argv[0], additional_error);
1245      }
342  if ( missing_required_options )
343    exit (EXIT_FAILURE);
1246  
1247 +  cmdline_parser_release (&local_args_info);
1248 +
1249 +  if ( error )
1250 +    return (EXIT_FAILURE);
1251 +
1252    return 0;
1253 +
1254 + failure:
1255 +  
1256 +  cmdline_parser_release (&local_args_info);
1257 +  return (EXIT_FAILURE);
1258   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines