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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines