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 2700 by tim, Mon Jan 9 22:14:32 2006 UTC vs.
Revision 2701 by gezelter, Tue Apr 11 15:33:27 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/program/gengetopt-2.11/src/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->nanglebins_given = 0 ;
48 +  args_info->length_given = 0 ;
49 +  args_info->zoffset_given = 0 ;
50 +  args_info->sele1_given = 0 ;
51 +  args_info->sele2_given = 0 ;
52 +  args_info->sele3_given = 0 ;
53 +  args_info->refsele_given = 0 ;
54 +  args_info->molname_given = 0 ;
55 +  args_info->begin_given = 0 ;
56 +  args_info->end_given = 0 ;
57 +  args_info->gofr_given = 0 ;
58 +  args_info->r_theta_given = 0 ;
59 +  args_info->r_omega_given = 0 ;
60 +  args_info->theta_omega_given = 0 ;
61 +  args_info->gxyz_given = 0 ;
62 +  args_info->p2_given = 0 ;
63 +  args_info->scd_given = 0 ;
64 +  args_info->density_given = 0 ;
65 +  args_info->slab_density_given = 0 ;
66 +  args_info->staticProps_group_counter = 0 ;
67 + }
68 +
69 + static
70 + void clear_args (struct gengetopt_args_info *args_info)
71 + {
72 +  args_info->input_arg = NULL;
73 +  args_info->input_orig = NULL;
74 +  args_info->output_arg = NULL;
75 +  args_info->output_orig = NULL;
76 +  args_info->step_arg = 1;
77 +  args_info->step_orig = NULL;
78 +  args_info->nrbins_arg = 100;
79 +  args_info->nrbins_orig = NULL;
80 +  args_info->nanglebins_arg = 50;
81 +  args_info->nanglebins_orig = NULL;
82 +  args_info->length_orig = NULL;
83 +  args_info->zoffset_arg = 0;
84 +  args_info->zoffset_orig = NULL;
85 +  args_info->sele1_arg = NULL;
86 +  args_info->sele1_orig = NULL;
87 +  args_info->sele2_arg = NULL;
88 +  args_info->sele2_orig = NULL;
89 +  args_info->sele3_arg = NULL;
90 +  args_info->sele3_orig = NULL;
91 +  args_info->refsele_arg = NULL;
92 +  args_info->refsele_orig = NULL;
93 +  args_info->molname_arg = NULL;
94 +  args_info->molname_orig = NULL;
95 +  args_info->begin_orig = NULL;
96 +  args_info->end_orig = NULL;
97 +  
98 + }
99 +
100   void
101   cmdline_parser_print_version (void)
102   {
# Line 32 | Line 107 | cmdline_parser_print_help (void)
107   cmdline_parser_print_help (void)
108   {
109    cmdline_parser_print_version ();
110 <  printf("\n"
111 <  "Usage: %s [OPTIONS]...\n", CMDLINE_PARSER_PACKAGE);
112 <  printf("\n");
113 <  printf("  -h, --help                      Print help and exit\n");
114 <  printf("  -V, --version                   Print version and exit\n");
115 <  printf("  -i, --input=filename            input dump file\n");
116 <  printf("  -o, --output=filename           output file name\n");
117 <  printf("  -n, --step=INT                  process every n frame  (default=`1')\n");
118 <  printf("  -r, --nrbins=INT                number of bins for distance  (default=`100')\n");
119 <  printf("  -a, --nanglebins=INT            number of bins for cos(angle)  (default=\n                                    `50')\n");
120 <  printf("  -l, --length=DOUBLE             maximum length (Defaults to 1/2 smallest \n                                    length of first frame)\n");
121 <  printf("      --sele1=selection script    select the first stuntdouble set\n");
122 <  printf("      --sele2=selection script    select the second stuntdouble set\n");
123 <  printf("      --sele3=selection script    select the third stuntdouble set\n");
124 <  printf("      --refsele=selection script  select reference (use and only use with \n                                    --gxyz)\n");
125 <  printf("      --molname=STRING            molecule name\n");
126 <  printf("      --begin=INT                 begin interanl index\n");
127 <  printf("      --end=INT                   end internal index\n");
128 <  printf("\n");
129 <  printf(" Group: staticProps  an option of this group is required\n");
130 <  printf("      --gofr                      g(r)\n");
131 <  printf("      --r_theta                   g(r, cos(theta))\n");
132 <  printf("      --r_omega                   g(r, cos(omega))\n");
133 <  printf("      --theta_omega               g(cos(theta), cos(omega))\n");
134 <  printf("      --gxyz                      g(x, y, z)\n");
135 <  printf("      --p2                        p2 order parameter (--sele1 and --sele2 must \n                                    be specified)\n");
136 <  printf("      --scd                       scd order parameter(either --sele1, --sele2, \n                                    --sele3 are specified or --molname, \n                                    --begin, --end are specified)\n");
137 <  printf("      --density                   density plot (--sele1 must be specified)\n");
63 <  printf("      --slab_density              slab density (--sele1 must be specified)\n");
110 >  printf("\nUsage: StaticProps [OPTIONS]...\n\n");
111 >  printf("%s\n","  -h, --help                    Print help and exit");
112 >  printf("%s\n","  -V, --version                 Print version and exit");
113 >  printf("%s\n","  -i, --input=filename          input dump file");
114 >  printf("%s\n","  -o, --output=filename         output file name");
115 >  printf("%s\n","  -n, --step=INT                process every n frame  (default=`1')");
116 >  printf("%s\n","  -r, --nrbins=INT              number of bins for distance  (default=`100')");
117 >  printf("%s\n","  -a, --nanglebins=INT          number of bins for cos(angle)  (default=`50')");
118 >  printf("%s\n","  -l, --length=DOUBLE           maximum length (Defaults to 1/2 smallest length \n                                  of first frame)");
119 >  printf("%s\n","  -z, --zoffset=DOUBLE          Where to set the zero for the slab_density \n                                  calculation  (default=`0')");
120 >  printf("%s\n","      --sele1=selection script  select the first stuntdouble set");
121 >  printf("%s\n","      --sele2=selection script  select the second stuntdouble set");
122 >  printf("%s\n","      --sele3=selection script  select the third stuntdouble set");
123 >  printf("%s\n","      --refsele=selection script\n                                select reference (use and only use with --gxyz)");
124 >  printf("%s\n","      --molname=STRING          molecule name");
125 >  printf("%s\n","      --begin=INT               begin interanl index");
126 >  printf("%s\n","      --end=INT                 end internal index");
127 >  printf("%s\n","\n Group: staticProps\n   an option of this group is required");
128 >  printf("%s\n","      --gofr                    g(r)");
129 >  printf("%s\n","      --r_theta                 g(r, cos(theta))");
130 >  printf("%s\n","      --r_omega                 g(r, cos(omega))");
131 >  printf("%s\n","      --theta_omega             g(cos(theta), cos(omega))");
132 >  printf("%s\n","      --gxyz                    g(x, y, z)");
133 >  printf("%s\n","      --p2                      p2 order parameter (--sele1 and --sele2 must be \n                                  specified)");
134 >  printf("%s\n","      --scd                     scd order parameter(either --sele1, --sele2, \n                                  --sele3 are specified or --molname, --begin, \n                                  --end are specified)");
135 >  printf("%s\n","      --density                 density plot (--sele1 must be specified)");
136 >  printf("%s\n","      --slab_density            slab density (--sele1 must be specified)");
137 >  
138   }
139  
140 + void
141 + cmdline_parser_init (struct gengetopt_args_info *args_info)
142 + {
143 +  clear_given (args_info);
144 +  clear_args (args_info);
145 + }
146  
147 < static char *gengetopt_strdup (const char *s);
147 > static void
148 > cmdline_parser_release (struct gengetopt_args_info *args_info)
149 > {
150 >  
151 >  if (args_info->input_arg)
152 >    {
153 >      free (args_info->input_arg); /* free previous argument */
154 >      args_info->input_arg = 0;
155 >    }
156 >  if (args_info->input_orig)
157 >    {
158 >      free (args_info->input_orig); /* free previous argument */
159 >      args_info->input_orig = 0;
160 >    }
161 >  if (args_info->output_arg)
162 >    {
163 >      free (args_info->output_arg); /* free previous argument */
164 >      args_info->output_arg = 0;
165 >    }
166 >  if (args_info->output_orig)
167 >    {
168 >      free (args_info->output_orig); /* free previous argument */
169 >      args_info->output_orig = 0;
170 >    }
171 >  if (args_info->step_orig)
172 >    {
173 >      free (args_info->step_orig); /* free previous argument */
174 >      args_info->step_orig = 0;
175 >    }
176 >  if (args_info->nrbins_orig)
177 >    {
178 >      free (args_info->nrbins_orig); /* free previous argument */
179 >      args_info->nrbins_orig = 0;
180 >    }
181 >  if (args_info->nanglebins_orig)
182 >    {
183 >      free (args_info->nanglebins_orig); /* free previous argument */
184 >      args_info->nanglebins_orig = 0;
185 >    }
186 >  if (args_info->length_orig)
187 >    {
188 >      free (args_info->length_orig); /* free previous argument */
189 >      args_info->length_orig = 0;
190 >    }
191 >  if (args_info->zoffset_orig)
192 >    {
193 >      free (args_info->zoffset_orig); /* free previous argument */
194 >      args_info->zoffset_orig = 0;
195 >    }
196 >  if (args_info->sele1_arg)
197 >    {
198 >      free (args_info->sele1_arg); /* free previous argument */
199 >      args_info->sele1_arg = 0;
200 >    }
201 >  if (args_info->sele1_orig)
202 >    {
203 >      free (args_info->sele1_orig); /* free previous argument */
204 >      args_info->sele1_orig = 0;
205 >    }
206 >  if (args_info->sele2_arg)
207 >    {
208 >      free (args_info->sele2_arg); /* free previous argument */
209 >      args_info->sele2_arg = 0;
210 >    }
211 >  if (args_info->sele2_orig)
212 >    {
213 >      free (args_info->sele2_orig); /* free previous argument */
214 >      args_info->sele2_orig = 0;
215 >    }
216 >  if (args_info->sele3_arg)
217 >    {
218 >      free (args_info->sele3_arg); /* free previous argument */
219 >      args_info->sele3_arg = 0;
220 >    }
221 >  if (args_info->sele3_orig)
222 >    {
223 >      free (args_info->sele3_orig); /* free previous argument */
224 >      args_info->sele3_orig = 0;
225 >    }
226 >  if (args_info->refsele_arg)
227 >    {
228 >      free (args_info->refsele_arg); /* free previous argument */
229 >      args_info->refsele_arg = 0;
230 >    }
231 >  if (args_info->refsele_orig)
232 >    {
233 >      free (args_info->refsele_orig); /* free previous argument */
234 >      args_info->refsele_orig = 0;
235 >    }
236 >  if (args_info->molname_arg)
237 >    {
238 >      free (args_info->molname_arg); /* free previous argument */
239 >      args_info->molname_arg = 0;
240 >    }
241 >  if (args_info->molname_orig)
242 >    {
243 >      free (args_info->molname_orig); /* free previous argument */
244 >      args_info->molname_orig = 0;
245 >    }
246 >  if (args_info->begin_orig)
247 >    {
248 >      free (args_info->begin_orig); /* free previous argument */
249 >      args_info->begin_orig = 0;
250 >    }
251 >  if (args_info->end_orig)
252 >    {
253 >      free (args_info->end_orig); /* free previous argument */
254 >      args_info->end_orig = 0;
255 >    }
256 >  
257 >  clear_given (args_info);
258 > }
259 >
260 > int
261 > cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
262 > {
263 >  FILE *outfile;
264 >  int i = 0;
265 >
266 >  outfile = fopen(filename, "w");
267 >
268 >  if (!outfile)
269 >    {
270 >      fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
271 >      return EXIT_FAILURE;
272 >    }
273 >
274 >  if (args_info->help_given) {
275 >    fprintf(outfile, "%s\n", "help");
276 >  }
277 >  if (args_info->version_given) {
278 >    fprintf(outfile, "%s\n", "version");
279 >  }
280 >  if (args_info->input_given) {
281 >    if (args_info->input_orig) {
282 >      fprintf(outfile, "%s=\"%s\"\n", "input", args_info->input_orig);
283 >    } else {
284 >      fprintf(outfile, "%s\n", "input");
285 >    }
286 >  }
287 >  if (args_info->output_given) {
288 >    if (args_info->output_orig) {
289 >      fprintf(outfile, "%s=\"%s\"\n", "output", args_info->output_orig);
290 >    } else {
291 >      fprintf(outfile, "%s\n", "output");
292 >    }
293 >  }
294 >  if (args_info->step_given) {
295 >    if (args_info->step_orig) {
296 >      fprintf(outfile, "%s=\"%s\"\n", "step", args_info->step_orig);
297 >    } else {
298 >      fprintf(outfile, "%s\n", "step");
299 >    }
300 >  }
301 >  if (args_info->nrbins_given) {
302 >    if (args_info->nrbins_orig) {
303 >      fprintf(outfile, "%s=\"%s\"\n", "nrbins", args_info->nrbins_orig);
304 >    } else {
305 >      fprintf(outfile, "%s\n", "nrbins");
306 >    }
307 >  }
308 >  if (args_info->nanglebins_given) {
309 >    if (args_info->nanglebins_orig) {
310 >      fprintf(outfile, "%s=\"%s\"\n", "nanglebins", args_info->nanglebins_orig);
311 >    } else {
312 >      fprintf(outfile, "%s\n", "nanglebins");
313 >    }
314 >  }
315 >  if (args_info->length_given) {
316 >    if (args_info->length_orig) {
317 >      fprintf(outfile, "%s=\"%s\"\n", "length", args_info->length_orig);
318 >    } else {
319 >      fprintf(outfile, "%s\n", "length");
320 >    }
321 >  }
322 >  if (args_info->zoffset_given) {
323 >    if (args_info->zoffset_orig) {
324 >      fprintf(outfile, "%s=\"%s\"\n", "zoffset", args_info->zoffset_orig);
325 >    } else {
326 >      fprintf(outfile, "%s\n", "zoffset");
327 >    }
328 >  }
329 >  if (args_info->sele1_given) {
330 >    if (args_info->sele1_orig) {
331 >      fprintf(outfile, "%s=\"%s\"\n", "sele1", args_info->sele1_orig);
332 >    } else {
333 >      fprintf(outfile, "%s\n", "sele1");
334 >    }
335 >  }
336 >  if (args_info->sele2_given) {
337 >    if (args_info->sele2_orig) {
338 >      fprintf(outfile, "%s=\"%s\"\n", "sele2", args_info->sele2_orig);
339 >    } else {
340 >      fprintf(outfile, "%s\n", "sele2");
341 >    }
342 >  }
343 >  if (args_info->sele3_given) {
344 >    if (args_info->sele3_orig) {
345 >      fprintf(outfile, "%s=\"%s\"\n", "sele3", args_info->sele3_orig);
346 >    } else {
347 >      fprintf(outfile, "%s\n", "sele3");
348 >    }
349 >  }
350 >  if (args_info->refsele_given) {
351 >    if (args_info->refsele_orig) {
352 >      fprintf(outfile, "%s=\"%s\"\n", "refsele", args_info->refsele_orig);
353 >    } else {
354 >      fprintf(outfile, "%s\n", "refsele");
355 >    }
356 >  }
357 >  if (args_info->molname_given) {
358 >    if (args_info->molname_orig) {
359 >      fprintf(outfile, "%s=\"%s\"\n", "molname", args_info->molname_orig);
360 >    } else {
361 >      fprintf(outfile, "%s\n", "molname");
362 >    }
363 >  }
364 >  if (args_info->begin_given) {
365 >    if (args_info->begin_orig) {
366 >      fprintf(outfile, "%s=\"%s\"\n", "begin", args_info->begin_orig);
367 >    } else {
368 >      fprintf(outfile, "%s\n", "begin");
369 >    }
370 >  }
371 >  if (args_info->end_given) {
372 >    if (args_info->end_orig) {
373 >      fprintf(outfile, "%s=\"%s\"\n", "end", args_info->end_orig);
374 >    } else {
375 >      fprintf(outfile, "%s\n", "end");
376 >    }
377 >  }
378 >  if (args_info->gofr_given) {
379 >    fprintf(outfile, "%s\n", "gofr");
380 >  }
381 >  if (args_info->r_theta_given) {
382 >    fprintf(outfile, "%s\n", "r_theta");
383 >  }
384 >  if (args_info->r_omega_given) {
385 >    fprintf(outfile, "%s\n", "r_omega");
386 >  }
387 >  if (args_info->theta_omega_given) {
388 >    fprintf(outfile, "%s\n", "theta_omega");
389 >  }
390 >  if (args_info->gxyz_given) {
391 >    fprintf(outfile, "%s\n", "gxyz");
392 >  }
393 >  if (args_info->p2_given) {
394 >    fprintf(outfile, "%s\n", "p2");
395 >  }
396 >  if (args_info->scd_given) {
397 >    fprintf(outfile, "%s\n", "scd");
398 >  }
399 >  if (args_info->density_given) {
400 >    fprintf(outfile, "%s\n", "density");
401 >  }
402 >  if (args_info->slab_density_given) {
403 >    fprintf(outfile, "%s\n", "slab_density");
404 >  }
405 >  
406 >  fclose (outfile);
407  
408 +  i = EXIT_SUCCESS;
409 +  return i;
410 + }
411 +
412 + void
413 + cmdline_parser_free (struct gengetopt_args_info *args_info)
414 + {
415 +  cmdline_parser_release (args_info);
416 + }
417 +
418 +
419   /* gengetopt_strdup() */
420   /* strdup.c replacement of strdup, which is not standard */
421   char *
422   gengetopt_strdup (const char *s)
423   {
424 <  char *result = (char*)malloc(strlen(s) + 1);
424 >  char *result = NULL;
425 >  if (!s)
426 >    return result;
427 >
428 >  result = (char*)malloc(strlen(s) + 1);
429    if (result == (char*)0)
430      return (char*)0;
431    strcpy(result, s);
432    return result;
433   }
434  
435 < int
436 < cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
435 > static void
436 > reset_group_staticProps(struct gengetopt_args_info *args_info);
437 >
438 > static void
439 > reset_group_staticProps(struct gengetopt_args_info *args_info)
440   {
441 <  int c;        /* Character of the parsed option.  */
442 <  int missing_required_options = 0;
86 <  int staticProps_group_counter = 0;
441 >  if (! args_info->staticProps_group_counter)
442 >    return;
443    
88
89  args_info->help_given = 0 ;
90  args_info->version_given = 0 ;
91  args_info->input_given = 0 ;
92  args_info->output_given = 0 ;
93  args_info->step_given = 0 ;
94  args_info->nrbins_given = 0 ;
95  args_info->nanglebins_given = 0 ;
96  args_info->length_given = 0 ;
97  args_info->sele1_given = 0 ;
98  args_info->sele2_given = 0 ;
99  args_info->sele3_given = 0 ;
100  args_info->refsele_given = 0 ;
101  args_info->molname_given = 0 ;
102  args_info->begin_given = 0 ;
103  args_info->end_given = 0 ;
444    args_info->gofr_given = 0 ;
445    args_info->r_theta_given = 0 ;
446    args_info->r_omega_given = 0 ;
# Line 110 | Line 450 | cmdline_parser (int argc, char * const *argv, struct g
450    args_info->scd_given = 0 ;
451    args_info->density_given = 0 ;
452    args_info->slab_density_given = 0 ;
453 < #define clear_args() { \
454 <  args_info->input_arg = NULL; \
115 <  args_info->output_arg = NULL; \
116 <  args_info->step_arg = 1 ;\
117 <  args_info->nrbins_arg = 100 ;\
118 <  args_info->nanglebins_arg = 50 ;\
119 <  args_info->sele1_arg = NULL; \
120 <  args_info->sele2_arg = NULL; \
121 <  args_info->sele3_arg = NULL; \
122 <  args_info->refsele_arg = NULL; \
123 <  args_info->molname_arg = NULL; \
453 >
454 >  args_info->staticProps_group_counter = 0;
455   }
456  
457 <  clear_args();
457 > int
458 > cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
459 > {
460 >  return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
461 > }
462  
463 + int
464 + cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
465 + {
466 +  int result;
467 +
468 +  result = cmdline_parser_internal (argc, argv, args_info, override, initialize, check_required, NULL);
469 +
470 +  if (result == EXIT_FAILURE)
471 +    {
472 +      cmdline_parser_free (args_info);
473 +      exit (EXIT_FAILURE);
474 +    }
475 +  
476 +  return result;
477 + }
478 +
479 + int
480 + cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
481 + {
482 +  int result = EXIT_SUCCESS;
483 +
484 +  if (cmdline_parser_required2(args_info, prog_name, NULL) > 0)
485 +    result = EXIT_FAILURE;
486 +
487 +  if (result == EXIT_FAILURE)
488 +    {
489 +      cmdline_parser_free (args_info);
490 +      exit (EXIT_FAILURE);
491 +    }
492 +  
493 +  return result;
494 + }
495 +
496 + int
497 + cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
498 + {
499 +  int error = 0;
500 +
501 +  if (! args_info->input_given)
502 +    {
503 +      fprintf (stderr, "%s: '--input' ('-i') option required%s\n", prog_name, (additional_error ? additional_error : ""));
504 +      error = 1;
505 +    }
506 +  if (args_info->staticProps_group_counter == 0)
507 +    {
508 +      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 : ""));
509 +      error = 1;
510 +    }
511 +  
512 +
513 +  return error;
514 + }
515 +
516 + int
517 + 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)
518 + {
519 +  int c;        /* Character of the parsed option.  */
520 +
521 +  int error = 0;
522 +  struct gengetopt_args_info local_args_info;
523 +
524 +  if (initialize)
525 +    cmdline_parser_init (args_info);
526 +
527 +  cmdline_parser_init (&local_args_info);
528 +
529    optarg = 0;
530 <  optind = 1;
530 >  optind = 0;
531    opterr = 1;
532    optopt = '?';
533  
# Line 144 | Line 545 | cmdline_parser (int argc, char * const *argv, struct g
545          { "nrbins",     1, NULL, 'r' },
546          { "nanglebins", 1, NULL, 'a' },
547          { "length",     1, NULL, 'l' },
548 +        { "zoffset",    1, NULL, 'z' },
549          { "sele1",      1, NULL, 0 },
550          { "sele2",      1, NULL, 0 },
551          { "sele3",      1, NULL, 0 },
# Line 164 | Line 566 | cmdline_parser (int argc, char * const *argv, struct g
566        };
567  
568        stop_char = 0;
569 <      c = getopt_long (argc, argv, "hVi:o:n:r:a:l:", long_options, &option_index);
569 >      c = getopt_long (argc, argv, "hVi:o:n:r:a:l:z:", long_options, &option_index);
570  
571        if (c == -1) break;       /* Exit from `while (1)' loop.  */
572  
573        switch (c)
574          {
575          case 'h':       /* Print help and exit.  */
174          clear_args ();
576            cmdline_parser_print_help ();
577 +          cmdline_parser_free (&local_args_info);
578            exit (EXIT_SUCCESS);
579  
580          case 'V':       /* Print version and exit.  */
179          clear_args ();
581            cmdline_parser_print_version ();
582 +          cmdline_parser_free (&local_args_info);
583            exit (EXIT_SUCCESS);
584  
585          case 'i':       /* input dump file.  */
586 <          if (args_info->input_given)
586 >          if (local_args_info.input_given)
587              {
588 <              fprintf (stderr, "%s: `--input' (`-i') option given more than once\n", CMDLINE_PARSER_PACKAGE);
589 <              clear_args ();
188 <              exit (EXIT_FAILURE);
588 >              fprintf (stderr, "%s: `--input' (`-i') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
589 >              goto failure;
590              }
591 +          if (args_info->input_given && ! override)
592 +            continue;
593 +          local_args_info.input_given = 1;
594            args_info->input_given = 1;
595 +          if (args_info->input_arg)
596 +            free (args_info->input_arg); /* free previous string */
597            args_info->input_arg = gengetopt_strdup (optarg);
598 +          if (args_info->input_orig)
599 +            free (args_info->input_orig); /* free previous string */
600 +          args_info->input_orig = gengetopt_strdup (optarg);
601            break;
602  
603          case 'o':       /* output file name.  */
604 <          if (args_info->output_given)
604 >          if (local_args_info.output_given)
605              {
606 <              fprintf (stderr, "%s: `--output' (`-o') option given more than once\n", CMDLINE_PARSER_PACKAGE);
607 <              clear_args ();
199 <              exit (EXIT_FAILURE);
606 >              fprintf (stderr, "%s: `--output' (`-o') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
607 >              goto failure;
608              }
609 +          if (args_info->output_given && ! override)
610 +            continue;
611 +          local_args_info.output_given = 1;
612            args_info->output_given = 1;
613 +          if (args_info->output_arg)
614 +            free (args_info->output_arg); /* free previous string */
615            args_info->output_arg = gengetopt_strdup (optarg);
616 +          if (args_info->output_orig)
617 +            free (args_info->output_orig); /* free previous string */
618 +          args_info->output_orig = gengetopt_strdup (optarg);
619            break;
620  
621          case 'n':       /* process every n frame.  */
622 <          if (args_info->step_given)
622 >          if (local_args_info.step_given)
623              {
624 <              fprintf (stderr, "%s: `--step' (`-n') option given more than once\n", CMDLINE_PARSER_PACKAGE);
625 <              clear_args ();
210 <              exit (EXIT_FAILURE);
624 >              fprintf (stderr, "%s: `--step' (`-n') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
625 >              goto failure;
626              }
627 +          if (args_info->step_given && ! override)
628 +            continue;
629 +          local_args_info.step_given = 1;
630            args_info->step_given = 1;
631 <          args_info->step_arg = strtol (optarg,&stop_char,0);
631 >          args_info->step_arg = strtol (optarg, &stop_char, 0);
632 >          if (!(stop_char && *stop_char == '\0')) {
633 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
634 >            goto failure;
635 >          }
636 >          if (args_info->step_orig)
637 >            free (args_info->step_orig); /* free previous string */
638 >          args_info->step_orig = gengetopt_strdup (optarg);
639            break;
640  
641          case 'r':       /* number of bins for distance.  */
642 <          if (args_info->nrbins_given)
642 >          if (local_args_info.nrbins_given)
643              {
644 <              fprintf (stderr, "%s: `--nrbins' (`-r') option given more than once\n", CMDLINE_PARSER_PACKAGE);
645 <              clear_args ();
221 <              exit (EXIT_FAILURE);
644 >              fprintf (stderr, "%s: `--nrbins' (`-r') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
645 >              goto failure;
646              }
647 +          if (args_info->nrbins_given && ! override)
648 +            continue;
649 +          local_args_info.nrbins_given = 1;
650            args_info->nrbins_given = 1;
651 <          args_info->nrbins_arg = strtol (optarg,&stop_char,0);
651 >          args_info->nrbins_arg = strtol (optarg, &stop_char, 0);
652 >          if (!(stop_char && *stop_char == '\0')) {
653 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
654 >            goto failure;
655 >          }
656 >          if (args_info->nrbins_orig)
657 >            free (args_info->nrbins_orig); /* free previous string */
658 >          args_info->nrbins_orig = gengetopt_strdup (optarg);
659            break;
660  
661          case 'a':       /* number of bins for cos(angle).  */
662 <          if (args_info->nanglebins_given)
662 >          if (local_args_info.nanglebins_given)
663              {
664 <              fprintf (stderr, "%s: `--nanglebins' (`-a') option given more than once\n", CMDLINE_PARSER_PACKAGE);
665 <              clear_args ();
232 <              exit (EXIT_FAILURE);
664 >              fprintf (stderr, "%s: `--nanglebins' (`-a') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
665 >              goto failure;
666              }
667 +          if (args_info->nanglebins_given && ! override)
668 +            continue;
669 +          local_args_info.nanglebins_given = 1;
670            args_info->nanglebins_given = 1;
671 <          args_info->nanglebins_arg = strtol (optarg,&stop_char,0);
671 >          args_info->nanglebins_arg = strtol (optarg, &stop_char, 0);
672 >          if (!(stop_char && *stop_char == '\0')) {
673 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
674 >            goto failure;
675 >          }
676 >          if (args_info->nanglebins_orig)
677 >            free (args_info->nanglebins_orig); /* free previous string */
678 >          args_info->nanglebins_orig = gengetopt_strdup (optarg);
679            break;
680  
681          case 'l':       /* maximum length (Defaults to 1/2 smallest length of first frame).  */
682 <          if (args_info->length_given)
682 >          if (local_args_info.length_given)
683              {
684 <              fprintf (stderr, "%s: `--length' (`-l') option given more than once\n", CMDLINE_PARSER_PACKAGE);
685 <              clear_args ();
243 <              exit (EXIT_FAILURE);
684 >              fprintf (stderr, "%s: `--length' (`-l') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
685 >              goto failure;
686              }
687 +          if (args_info->length_given && ! override)
688 +            continue;
689 +          local_args_info.length_given = 1;
690            args_info->length_given = 1;
691 <          args_info->length_arg = strtod (optarg, NULL);
691 >          args_info->length_arg = strtod (optarg, &stop_char);
692 >          if (!(stop_char && *stop_char == '\0')) {
693 >            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
694 >            goto failure;
695 >          }
696 >          if (args_info->length_orig)
697 >            free (args_info->length_orig); /* free previous string */
698 >          args_info->length_orig = gengetopt_strdup (optarg);
699            break;
700  
701 +        case 'z':       /* Where to set the zero for the slab_density calculation.  */
702 +          if (local_args_info.zoffset_given)
703 +            {
704 +              fprintf (stderr, "%s: `--zoffset' (`-z') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
705 +              goto failure;
706 +            }
707 +          if (args_info->zoffset_given && ! override)
708 +            continue;
709 +          local_args_info.zoffset_given = 1;
710 +          args_info->zoffset_given = 1;
711 +          args_info->zoffset_arg = strtod (optarg, &stop_char);
712 +          if (!(stop_char && *stop_char == '\0')) {
713 +            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
714 +            goto failure;
715 +          }
716 +          if (args_info->zoffset_orig)
717 +            free (args_info->zoffset_orig); /* free previous string */
718 +          args_info->zoffset_orig = gengetopt_strdup (optarg);
719 +          break;
720  
721 +
722          case 0: /* Long option with no short option */
723            /* select the first stuntdouble set.  */
724            if (strcmp (long_options[option_index].name, "sele1") == 0)
725            {
726 <            if (args_info->sele1_given)
726 >            if (local_args_info.sele1_given)
727                {
728 <                fprintf (stderr, "%s: `--sele1' option given more than once\n", CMDLINE_PARSER_PACKAGE);
729 <                clear_args ();
258 <                exit (EXIT_FAILURE);
728 >                fprintf (stderr, "%s: `--sele1' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
729 >                goto failure;
730                }
731 +            if (args_info->sele1_given && ! override)
732 +              continue;
733 +            local_args_info.sele1_given = 1;
734              args_info->sele1_given = 1;
735 +            if (args_info->sele1_arg)
736 +              free (args_info->sele1_arg); /* free previous string */
737              args_info->sele1_arg = gengetopt_strdup (optarg);
738 <            break;
738 >            if (args_info->sele1_orig)
739 >              free (args_info->sele1_orig); /* free previous string */
740 >            args_info->sele1_orig = gengetopt_strdup (optarg);
741            }
264          
742            /* select the second stuntdouble set.  */
743            else if (strcmp (long_options[option_index].name, "sele2") == 0)
744            {
745 <            if (args_info->sele2_given)
745 >            if (local_args_info.sele2_given)
746                {
747 <                fprintf (stderr, "%s: `--sele2' option given more than once\n", CMDLINE_PARSER_PACKAGE);
748 <                clear_args ();
272 <                exit (EXIT_FAILURE);
747 >                fprintf (stderr, "%s: `--sele2' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
748 >                goto failure;
749                }
750 +            if (args_info->sele2_given && ! override)
751 +              continue;
752 +            local_args_info.sele2_given = 1;
753              args_info->sele2_given = 1;
754 +            if (args_info->sele2_arg)
755 +              free (args_info->sele2_arg); /* free previous string */
756              args_info->sele2_arg = gengetopt_strdup (optarg);
757 <            break;
757 >            if (args_info->sele2_orig)
758 >              free (args_info->sele2_orig); /* free previous string */
759 >            args_info->sele2_orig = gengetopt_strdup (optarg);
760            }
278          
761            /* select the third stuntdouble set.  */
762            else if (strcmp (long_options[option_index].name, "sele3") == 0)
763            {
764 <            if (args_info->sele3_given)
764 >            if (local_args_info.sele3_given)
765                {
766 <                fprintf (stderr, "%s: `--sele3' option given more than once\n", CMDLINE_PARSER_PACKAGE);
767 <                clear_args ();
286 <                exit (EXIT_FAILURE);
766 >                fprintf (stderr, "%s: `--sele3' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
767 >                goto failure;
768                }
769 +            if (args_info->sele3_given && ! override)
770 +              continue;
771 +            local_args_info.sele3_given = 1;
772              args_info->sele3_given = 1;
773 +            if (args_info->sele3_arg)
774 +              free (args_info->sele3_arg); /* free previous string */
775              args_info->sele3_arg = gengetopt_strdup (optarg);
776 <            break;
776 >            if (args_info->sele3_orig)
777 >              free (args_info->sele3_orig); /* free previous string */
778 >            args_info->sele3_orig = gengetopt_strdup (optarg);
779            }
292          
780            /* select reference (use and only use with --gxyz).  */
781            else if (strcmp (long_options[option_index].name, "refsele") == 0)
782            {
783 <            if (args_info->refsele_given)
783 >            if (local_args_info.refsele_given)
784                {
785 <                fprintf (stderr, "%s: `--refsele' option given more than once\n", CMDLINE_PARSER_PACKAGE);
786 <                clear_args ();
300 <                exit (EXIT_FAILURE);
785 >                fprintf (stderr, "%s: `--refsele' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
786 >                goto failure;
787                }
788 +            if (args_info->refsele_given && ! override)
789 +              continue;
790 +            local_args_info.refsele_given = 1;
791              args_info->refsele_given = 1;
792 +            if (args_info->refsele_arg)
793 +              free (args_info->refsele_arg); /* free previous string */
794              args_info->refsele_arg = gengetopt_strdup (optarg);
795 <            break;
795 >            if (args_info->refsele_orig)
796 >              free (args_info->refsele_orig); /* free previous string */
797 >            args_info->refsele_orig = gengetopt_strdup (optarg);
798            }
306          
799            /* molecule name.  */
800            else if (strcmp (long_options[option_index].name, "molname") == 0)
801            {
802 <            if (args_info->molname_given)
802 >            if (local_args_info.molname_given)
803                {
804 <                fprintf (stderr, "%s: `--molname' option given more than once\n", CMDLINE_PARSER_PACKAGE);
805 <                clear_args ();
314 <                exit (EXIT_FAILURE);
804 >                fprintf (stderr, "%s: `--molname' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
805 >                goto failure;
806                }
807 +            if (args_info->molname_given && ! override)
808 +              continue;
809 +            local_args_info.molname_given = 1;
810              args_info->molname_given = 1;
811 +            if (args_info->molname_arg)
812 +              free (args_info->molname_arg); /* free previous string */
813              args_info->molname_arg = gengetopt_strdup (optarg);
814 <            break;
814 >            if (args_info->molname_orig)
815 >              free (args_info->molname_orig); /* free previous string */
816 >            args_info->molname_orig = gengetopt_strdup (optarg);
817            }
320          
818            /* begin interanl index.  */
819            else if (strcmp (long_options[option_index].name, "begin") == 0)
820            {
821 <            if (args_info->begin_given)
821 >            if (local_args_info.begin_given)
822                {
823 <                fprintf (stderr, "%s: `--begin' option given more than once\n", CMDLINE_PARSER_PACKAGE);
824 <                clear_args ();
328 <                exit (EXIT_FAILURE);
823 >                fprintf (stderr, "%s: `--begin' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
824 >                goto failure;
825                }
826 +            if (args_info->begin_given && ! override)
827 +              continue;
828 +            local_args_info.begin_given = 1;
829              args_info->begin_given = 1;
830 <            args_info->begin_arg = strtol (optarg,&stop_char,0);
831 <            break;
830 >            args_info->begin_arg = strtol (optarg, &stop_char, 0);
831 >            if (!(stop_char && *stop_char == '\0')) {
832 >              fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
833 >              goto failure;
834 >            }
835 >            if (args_info->begin_orig)
836 >              free (args_info->begin_orig); /* free previous string */
837 >            args_info->begin_orig = gengetopt_strdup (optarg);
838            }
334          
839            /* end internal index.  */
840            else if (strcmp (long_options[option_index].name, "end") == 0)
841            {
842 <            if (args_info->end_given)
842 >            if (local_args_info.end_given)
843                {
844 <                fprintf (stderr, "%s: `--end' option given more than once\n", CMDLINE_PARSER_PACKAGE);
845 <                clear_args ();
342 <                exit (EXIT_FAILURE);
844 >                fprintf (stderr, "%s: `--end' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
845 >                goto failure;
846                }
847 +            if (args_info->end_given && ! override)
848 +              continue;
849 +            local_args_info.end_given = 1;
850              args_info->end_given = 1;
851 <            args_info->end_arg = strtol (optarg,&stop_char,0);
852 <            break;
851 >            args_info->end_arg = strtol (optarg, &stop_char, 0);
852 >            if (!(stop_char && *stop_char == '\0')) {
853 >              fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
854 >              goto failure;
855 >            }
856 >            if (args_info->end_orig)
857 >              free (args_info->end_orig); /* free previous string */
858 >            args_info->end_orig = gengetopt_strdup (optarg);
859            }
348          
860            /* g(r).  */
861            else if (strcmp (long_options[option_index].name, "gofr") == 0)
862            {
863 <            if (args_info->gofr_given)
863 >            if (local_args_info.gofr_given)
864                {
865 <                fprintf (stderr, "%s: `--gofr' option given more than once\n", CMDLINE_PARSER_PACKAGE);
866 <                clear_args ();
356 <                exit (EXIT_FAILURE);
865 >                fprintf (stderr, "%s: `--gofr' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
866 >                goto failure;
867                }
868 <            args_info->gofr_given = 1; staticProps_group_counter += 1;
869 <          
868 >            if (args_info->gofr_given && ! override)
869 >              continue;
870 >            local_args_info.gofr_given = 1;
871 >            args_info->gofr_given = 1;
872 >            if (args_info->staticProps_group_counter && override)
873 >              reset_group_staticProps (args_info);
874 >            args_info->staticProps_group_counter += 1;
875              break;
876            }
362          
877            /* g(r, cos(theta)).  */
878            else if (strcmp (long_options[option_index].name, "r_theta") == 0)
879            {
880 <            if (args_info->r_theta_given)
880 >            if (local_args_info.r_theta_given)
881                {
882 <                fprintf (stderr, "%s: `--r_theta' option given more than once\n", CMDLINE_PARSER_PACKAGE);
883 <                clear_args ();
370 <                exit (EXIT_FAILURE);
882 >                fprintf (stderr, "%s: `--r_theta' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
883 >                goto failure;
884                }
885 <            args_info->r_theta_given = 1; staticProps_group_counter += 1;
886 <          
885 >            if (args_info->r_theta_given && ! override)
886 >              continue;
887 >            local_args_info.r_theta_given = 1;
888 >            args_info->r_theta_given = 1;
889 >            if (args_info->staticProps_group_counter && override)
890 >              reset_group_staticProps (args_info);
891 >            args_info->staticProps_group_counter += 1;
892              break;
893            }
376          
894            /* g(r, cos(omega)).  */
895            else if (strcmp (long_options[option_index].name, "r_omega") == 0)
896            {
897 <            if (args_info->r_omega_given)
897 >            if (local_args_info.r_omega_given)
898                {
899 <                fprintf (stderr, "%s: `--r_omega' option given more than once\n", CMDLINE_PARSER_PACKAGE);
900 <                clear_args ();
384 <                exit (EXIT_FAILURE);
899 >                fprintf (stderr, "%s: `--r_omega' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
900 >                goto failure;
901                }
902 <            args_info->r_omega_given = 1; staticProps_group_counter += 1;
903 <          
902 >            if (args_info->r_omega_given && ! override)
903 >              continue;
904 >            local_args_info.r_omega_given = 1;
905 >            args_info->r_omega_given = 1;
906 >            if (args_info->staticProps_group_counter && override)
907 >              reset_group_staticProps (args_info);
908 >            args_info->staticProps_group_counter += 1;
909              break;
910            }
390          
911            /* g(cos(theta), cos(omega)).  */
912            else if (strcmp (long_options[option_index].name, "theta_omega") == 0)
913            {
914 <            if (args_info->theta_omega_given)
914 >            if (local_args_info.theta_omega_given)
915                {
916 <                fprintf (stderr, "%s: `--theta_omega' option given more than once\n", CMDLINE_PARSER_PACKAGE);
917 <                clear_args ();
398 <                exit (EXIT_FAILURE);
916 >                fprintf (stderr, "%s: `--theta_omega' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
917 >                goto failure;
918                }
919 <            args_info->theta_omega_given = 1; staticProps_group_counter += 1;
920 <          
919 >            if (args_info->theta_omega_given && ! override)
920 >              continue;
921 >            local_args_info.theta_omega_given = 1;
922 >            args_info->theta_omega_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            }
404          
928            /* g(x, y, z).  */
929            else if (strcmp (long_options[option_index].name, "gxyz") == 0)
930            {
931 <            if (args_info->gxyz_given)
931 >            if (local_args_info.gxyz_given)
932                {
933 <                fprintf (stderr, "%s: `--gxyz' option given more than once\n", CMDLINE_PARSER_PACKAGE);
934 <                clear_args ();
412 <                exit (EXIT_FAILURE);
933 >                fprintf (stderr, "%s: `--gxyz' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
934 >                goto failure;
935                }
936 <            args_info->gxyz_given = 1; staticProps_group_counter += 1;
937 <          
936 >            if (args_info->gxyz_given && ! override)
937 >              continue;
938 >            local_args_info.gxyz_given = 1;
939 >            args_info->gxyz_given = 1;
940 >            if (args_info->staticProps_group_counter && override)
941 >              reset_group_staticProps (args_info);
942 >            args_info->staticProps_group_counter += 1;
943              break;
944            }
418          
945            /* p2 order parameter (--sele1 and --sele2 must be specified).  */
946            else if (strcmp (long_options[option_index].name, "p2") == 0)
947            {
948 <            if (args_info->p2_given)
948 >            if (local_args_info.p2_given)
949                {
950 <                fprintf (stderr, "%s: `--p2' option given more than once\n", CMDLINE_PARSER_PACKAGE);
951 <                clear_args ();
426 <                exit (EXIT_FAILURE);
950 >                fprintf (stderr, "%s: `--p2' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
951 >                goto failure;
952                }
953 <            args_info->p2_given = 1; staticProps_group_counter += 1;
954 <          
953 >            if (args_info->p2_given && ! override)
954 >              continue;
955 >            local_args_info.p2_given = 1;
956 >            args_info->p2_given = 1;
957 >            if (args_info->staticProps_group_counter && override)
958 >              reset_group_staticProps (args_info);
959 >            args_info->staticProps_group_counter += 1;
960              break;
961            }
432          
962            /* scd order parameter(either --sele1, --sele2, --sele3 are specified or --molname, --begin, --end are specified).  */
963            else if (strcmp (long_options[option_index].name, "scd") == 0)
964            {
965 <            if (args_info->scd_given)
965 >            if (local_args_info.scd_given)
966                {
967 <                fprintf (stderr, "%s: `--scd' option given more than once\n", CMDLINE_PARSER_PACKAGE);
968 <                clear_args ();
440 <                exit (EXIT_FAILURE);
967 >                fprintf (stderr, "%s: `--scd' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
968 >                goto failure;
969                }
970 <            args_info->scd_given = 1; staticProps_group_counter += 1;
971 <          
970 >            if (args_info->scd_given && ! override)
971 >              continue;
972 >            local_args_info.scd_given = 1;
973 >            args_info->scd_given = 1;
974 >            if (args_info->staticProps_group_counter && override)
975 >              reset_group_staticProps (args_info);
976 >            args_info->staticProps_group_counter += 1;
977              break;
978            }
446          
979            /* density plot (--sele1 must be specified).  */
980            else if (strcmp (long_options[option_index].name, "density") == 0)
981            {
982 <            if (args_info->density_given)
982 >            if (local_args_info.density_given)
983                {
984 <                fprintf (stderr, "%s: `--density' option given more than once\n", CMDLINE_PARSER_PACKAGE);
985 <                clear_args ();
454 <                exit (EXIT_FAILURE);
984 >                fprintf (stderr, "%s: `--density' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
985 >                goto failure;
986                }
987 <            args_info->density_given = 1; staticProps_group_counter += 1;
988 <          
987 >            if (args_info->density_given && ! override)
988 >              continue;
989 >            local_args_info.density_given = 1;
990 >            args_info->density_given = 1;
991 >            if (args_info->staticProps_group_counter && override)
992 >              reset_group_staticProps (args_info);
993 >            args_info->staticProps_group_counter += 1;
994              break;
995            }
460          
996            /* slab density (--sele1 must be specified).  */
997            else if (strcmp (long_options[option_index].name, "slab_density") == 0)
998            {
999 <            if (args_info->slab_density_given)
999 >            if (local_args_info.slab_density_given)
1000                {
1001 <                fprintf (stderr, "%s: `--slab_density' option given more than once\n", CMDLINE_PARSER_PACKAGE);
1002 <                clear_args ();
468 <                exit (EXIT_FAILURE);
1001 >                fprintf (stderr, "%s: `--slab_density' option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
1002 >                goto failure;
1003                }
1004 <            args_info->slab_density_given = 1; staticProps_group_counter += 1;
1005 <          
1004 >            if (args_info->slab_density_given && ! override)
1005 >              continue;
1006 >            local_args_info.slab_density_given = 1;
1007 >            args_info->slab_density_given = 1;
1008 >            if (args_info->staticProps_group_counter && override)
1009 >              reset_group_staticProps (args_info);
1010 >            args_info->staticProps_group_counter += 1;
1011              break;
1012            }
1013            
1014 <
1014 >          break;
1015          case '?':       /* Invalid option.  */
1016            /* `getopt_long' already printed an error message.  */
1017 <          exit (EXIT_FAILURE);
1017 >          goto failure;
1018  
1019          default:        /* bug: option not considered.  */
1020 <          fprintf (stderr, "%s: option unknown: %c\n", CMDLINE_PARSER_PACKAGE, c);
1020 >          fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
1021            abort ();
1022          } /* switch */
1023      } /* while */
1024  
1025 <  if ( staticProps_group_counter != 1)
1025 >  if (args_info->staticProps_group_counter > 1)
1026      {
1027 <      fprintf (stderr, "%s: %d options of group staticProps were given. One is required\n", CMDLINE_PARSER_PACKAGE, staticProps_group_counter);
1028 <      missing_required_options = 1;
1027 >      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 : ""));
1028 >      error = 1;
1029      }
1030    
1031  
1032 <  if (! args_info->input_given)
1032 >
1033 >  if (check_required)
1034      {
1035 <      fprintf (stderr, "%s: '--input' ('-i') option required\n", CMDLINE_PARSER_PACKAGE);
496 <      missing_required_options = 1;
1035 >      error += cmdline_parser_required2 (args_info, argv[0], additional_error);
1036      }
498  if ( missing_required_options )
499    exit (EXIT_FAILURE);
1037  
1038 +  cmdline_parser_release (&local_args_info);
1039 +
1040 +  if ( error )
1041 +    return (EXIT_FAILURE);
1042 +
1043    return 0;
1044 +
1045 + failure:
1046 +  
1047 +  cmdline_parser_release (&local_args_info);
1048 +  return (EXIT_FAILURE);
1049   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines