LibOFX
ofxconnect/cmdline.c
1 /*
2  File autogenerated by gengetopt version 2.23
3  generated with the following command:
4  gengetopt --unamed-opts
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 /* 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 #ifndef FIX_UNUSED
21 #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
22 #endif
23 
24 #include <getopt.h>
25 
26 #include "cmdline.h"
27 
28 const char *gengetopt_args_info_purpose = "prints to stdout the created OFX file based on the options you pass it.\ncurrently it will only create a statement request file. you can POST this to\nan OFX server to request a statement from that financial institution for that\naccount.";
29 
30 const char *gengetopt_args_info_usage = "Usage: " CMDLINE_PARSER_PACKAGE " [OPTION]... [FILE]...";
31 
32 const char *gengetopt_args_info_versiontext = "";
33 
35 
36 const char *gengetopt_args_info_help[] = {
37  " -h, --help Print help and exit",
38  " -V, --version Print version and exit",
39  " --fipid=STRING FI partner identifier (looks up fid, org & url from\n partner server)",
40  " --fid=STRING FI identifier",
41  " --org=STRING FI org tag",
42  " --bank=STRING IBAN bank identifier",
43  " --broker=STRING Broker identifier",
44  " --user=STRING User name",
45  " --pass=STRING Password",
46  " --acct=STRING Account ID",
47  " --type=INT Account Type 1=checking 2=invest 3=ccard",
48  " --past=LONG How far back to look from today (in days)",
49  " --url=STRING Url to POST the data to (otherwise goes to stdout)",
50  " --trid=INT Transaction id",
51  "\n Group: command",
52  " -s, --statement-req Request for a statement",
53  " -a, --accountinfo-req Request for a list of accounts",
54  " -p, --payment-req Request to make a payment",
55  " -i, --paymentinquiry-req Request to inquire about the status of a payment",
56  " -b, --bank-list List all known banks",
57  " -f, --bank-fipid List all fipids for a given bank",
58  " -v, --bank-services List supported services for a given fipid",
59  " --allsupport List all banks which support online banking",
60  0
61 };
62 
63 typedef enum {ARG_NO
64  , ARG_STRING
65  , ARG_INT
66  , ARG_LONG
67 } cmdline_parser_arg_type;
68 
69 static
70 void clear_given (struct gengetopt_args_info *args_info);
71 static
72 void clear_args (struct gengetopt_args_info *args_info);
73 
74 static int
75 cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info,
76  struct cmdline_parser_params *params, const char *additional_error);
77 
78 
79 static char *
80 gengetopt_strdup (const char *s);
81 
82 static
83 void clear_given (struct gengetopt_args_info *args_info)
84 {
85  args_info->help_given = 0 ;
86  args_info->version_given = 0 ;
87  args_info->fipid_given = 0 ;
88  args_info->fid_given = 0 ;
89  args_info->org_given = 0 ;
90  args_info->bank_given = 0 ;
91  args_info->broker_given = 0 ;
92  args_info->user_given = 0 ;
93  args_info->pass_given = 0 ;
94  args_info->acct_given = 0 ;
95  args_info->type_given = 0 ;
96  args_info->past_given = 0 ;
97  args_info->url_given = 0 ;
98  args_info->trid_given = 0 ;
99  args_info->statement_req_given = 0 ;
100  args_info->accountinfo_req_given = 0 ;
101  args_info->payment_req_given = 0 ;
102  args_info->paymentinquiry_req_given = 0 ;
103  args_info->bank_list_given = 0 ;
104  args_info->bank_fipid_given = 0 ;
105  args_info->bank_services_given = 0 ;
106  args_info->allsupport_given = 0 ;
107  args_info->command_group_counter = 0 ;
108 }
109 
110 static
111 void clear_args (struct gengetopt_args_info *args_info)
112 {
113  FIX_UNUSED (args_info);
114  args_info->fipid_arg = NULL;
115  args_info->fipid_orig = NULL;
116  args_info->fid_arg = NULL;
117  args_info->fid_orig = NULL;
118  args_info->org_arg = NULL;
119  args_info->org_orig = NULL;
120  args_info->bank_arg = NULL;
121  args_info->bank_orig = NULL;
122  args_info->broker_arg = NULL;
123  args_info->broker_orig = NULL;
124  args_info->user_arg = NULL;
125  args_info->user_orig = NULL;
126  args_info->pass_arg = NULL;
127  args_info->pass_orig = NULL;
128  args_info->acct_arg = NULL;
129  args_info->acct_orig = NULL;
130  args_info->type_orig = NULL;
131  args_info->past_orig = NULL;
132  args_info->url_arg = NULL;
133  args_info->url_orig = NULL;
134  args_info->trid_orig = NULL;
135 
136 }
137 
138 static
139 void init_args_info(struct gengetopt_args_info *args_info)
140 {
141 
142 
143  args_info->help_help = gengetopt_args_info_help[0] ;
144  args_info->version_help = gengetopt_args_info_help[1] ;
145  args_info->fipid_help = gengetopt_args_info_help[2] ;
146  args_info->fid_help = gengetopt_args_info_help[3] ;
147  args_info->org_help = gengetopt_args_info_help[4] ;
148  args_info->bank_help = gengetopt_args_info_help[5] ;
149  args_info->broker_help = gengetopt_args_info_help[6] ;
150  args_info->user_help = gengetopt_args_info_help[7] ;
151  args_info->pass_help = gengetopt_args_info_help[8] ;
152  args_info->acct_help = gengetopt_args_info_help[9] ;
153  args_info->type_help = gengetopt_args_info_help[10] ;
154  args_info->past_help = gengetopt_args_info_help[11] ;
155  args_info->url_help = gengetopt_args_info_help[12] ;
156  args_info->trid_help = gengetopt_args_info_help[13] ;
159  args_info->payment_req_help = gengetopt_args_info_help[17] ;
161  args_info->bank_list_help = gengetopt_args_info_help[19] ;
162  args_info->bank_fipid_help = gengetopt_args_info_help[20] ;
164  args_info->allsupport_help = gengetopt_args_info_help[22] ;
165 
166 }
167 
168 void
170 {
171  printf ("%s %s\n",
174 
175  if (strlen(gengetopt_args_info_versiontext) > 0)
176  printf("\n%s\n", gengetopt_args_info_versiontext);
177 }
178 
179 static void print_help_common(void)
180 {
181  size_t len_purpose = strlen(gengetopt_args_info_purpose);
182  size_t len_usage = strlen(gengetopt_args_info_usage);
183 
184  if (len_usage > 0) {
185  printf("%s\n", gengetopt_args_info_usage);
186  }
187  if (len_purpose > 0) {
188  printf("%s\n", gengetopt_args_info_purpose);
189  }
190 
191  if (len_usage || len_purpose) {
192  printf("\n");
193  }
194 
195  if (strlen(gengetopt_args_info_description) > 0) {
196  printf("%s\n\n", gengetopt_args_info_description);
197  }
198 }
199 
200 void
202 {
203  int i = 0;
204  print_help_common();
205  while (gengetopt_args_info_help[i])
206  printf("%s\n", gengetopt_args_info_help[i++]);
207 }
208 
209 void
211 {
212  clear_given (args_info);
213  clear_args (args_info);
214  init_args_info (args_info);
215 
216  args_info->inputs = 0;
217  args_info->inputs_num = 0;
218 }
219 
220 void
222 {
223  if (params)
224  {
225  params->override = 0;
226  params->initialize = 1;
227  params->check_required = 1;
228  params->check_ambiguity = 0;
229  params->print_errors = 1;
230  }
231 }
232 
233 struct cmdline_parser_params *
235 {
236  struct cmdline_parser_params *params =
237  (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
239  return params;
240 }
241 
242 static void
243 free_string_field (char **s)
244 {
245  if (*s)
246  {
247  free (*s);
248  *s = 0;
249  }
250 }
251 
252 
253 static void
254 cmdline_parser_release (struct gengetopt_args_info *args_info)
255 {
256  unsigned int i;
257  free_string_field (&(args_info->fipid_arg));
258  free_string_field (&(args_info->fipid_orig));
259  free_string_field (&(args_info->fid_arg));
260  free_string_field (&(args_info->fid_orig));
261  free_string_field (&(args_info->org_arg));
262  free_string_field (&(args_info->org_orig));
263  free_string_field (&(args_info->bank_arg));
264  free_string_field (&(args_info->bank_orig));
265  free_string_field (&(args_info->broker_arg));
266  free_string_field (&(args_info->broker_orig));
267  free_string_field (&(args_info->user_arg));
268  free_string_field (&(args_info->user_orig));
269  free_string_field (&(args_info->pass_arg));
270  free_string_field (&(args_info->pass_orig));
271  free_string_field (&(args_info->acct_arg));
272  free_string_field (&(args_info->acct_orig));
273  free_string_field (&(args_info->type_orig));
274  free_string_field (&(args_info->past_orig));
275  free_string_field (&(args_info->url_arg));
276  free_string_field (&(args_info->url_orig));
277  free_string_field (&(args_info->trid_orig));
278 
279 
280  for (i = 0; i < args_info->inputs_num; ++i)
281  free (args_info->inputs [i]);
282 
283  if (args_info->inputs_num)
284  free (args_info->inputs);
285 
286  clear_given (args_info);
287 }
288 
289 
290 static void
291 write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])
292 {
293  FIX_UNUSED (values);
294  if (arg) {
295  fprintf(outfile, "%s=\"%s\"\n", opt, arg);
296  } else {
297  fprintf(outfile, "%s\n", opt);
298  }
299 }
300 
301 
302 int
303 cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
304 {
305  int i = 0;
306 
307  if (!outfile)
308  {
309  fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
310  return EXIT_FAILURE;
311  }
312 
313  if (args_info->help_given)
314  write_into_file(outfile, "help", 0, 0 );
315  if (args_info->version_given)
316  write_into_file(outfile, "version", 0, 0 );
317  if (args_info->fipid_given)
318  write_into_file(outfile, "fipid", args_info->fipid_orig, 0);
319  if (args_info->fid_given)
320  write_into_file(outfile, "fid", args_info->fid_orig, 0);
321  if (args_info->org_given)
322  write_into_file(outfile, "org", args_info->org_orig, 0);
323  if (args_info->bank_given)
324  write_into_file(outfile, "bank", args_info->bank_orig, 0);
325  if (args_info->broker_given)
326  write_into_file(outfile, "broker", args_info->broker_orig, 0);
327  if (args_info->user_given)
328  write_into_file(outfile, "user", args_info->user_orig, 0);
329  if (args_info->pass_given)
330  write_into_file(outfile, "pass", args_info->pass_orig, 0);
331  if (args_info->acct_given)
332  write_into_file(outfile, "acct", args_info->acct_orig, 0);
333  if (args_info->type_given)
334  write_into_file(outfile, "type", args_info->type_orig, 0);
335  if (args_info->past_given)
336  write_into_file(outfile, "past", args_info->past_orig, 0);
337  if (args_info->url_given)
338  write_into_file(outfile, "url", args_info->url_orig, 0);
339  if (args_info->trid_given)
340  write_into_file(outfile, "trid", args_info->trid_orig, 0);
341  if (args_info->statement_req_given)
342  write_into_file(outfile, "statement-req", 0, 0 );
343  if (args_info->accountinfo_req_given)
344  write_into_file(outfile, "accountinfo-req", 0, 0 );
345  if (args_info->payment_req_given)
346  write_into_file(outfile, "payment-req", 0, 0 );
347  if (args_info->paymentinquiry_req_given)
348  write_into_file(outfile, "paymentinquiry-req", 0, 0 );
349  if (args_info->bank_list_given)
350  write_into_file(outfile, "bank-list", 0, 0 );
351  if (args_info->bank_fipid_given)
352  write_into_file(outfile, "bank-fipid", 0, 0 );
353  if (args_info->bank_services_given)
354  write_into_file(outfile, "bank-services", 0, 0 );
355  if (args_info->allsupport_given)
356  write_into_file(outfile, "allsupport", 0, 0 );
357 
358 
359  i = EXIT_SUCCESS;
360  return i;
361 }
362 
363 int
364 cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
365 {
366  FILE *outfile;
367  int i = 0;
368 
369  outfile = fopen(filename, "w");
370 
371  if (!outfile)
372  {
373  fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
374  return EXIT_FAILURE;
375  }
376 
377  i = cmdline_parser_dump(outfile, args_info);
378  fclose (outfile);
379 
380  return i;
381 }
382 
383 void
385 {
386  cmdline_parser_release (args_info);
387 }
388 
390 char *
391 gengetopt_strdup (const char *s)
392 {
393  char *result = 0;
394  if (!s)
395  return result;
396 
397  result = (char*)malloc(strlen(s) + 1);
398  if (result == (char*)0)
399  return (char*)0;
400  strcpy(result, s);
401  return result;
402 }
403 
404 static void
405 reset_group_command(struct gengetopt_args_info *args_info)
406 {
407  if (! args_info->command_group_counter)
408  return;
409 
410  args_info->statement_req_given = 0 ;
411  args_info->accountinfo_req_given = 0 ;
412  args_info->payment_req_given = 0 ;
413  args_info->paymentinquiry_req_given = 0 ;
414  args_info->bank_list_given = 0 ;
415  args_info->bank_fipid_given = 0 ;
416  args_info->bank_services_given = 0 ;
417  args_info->allsupport_given = 0 ;
418 
419  args_info->command_group_counter = 0;
420 }
421 
422 int
423 cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info)
424 {
425  return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
426 }
427 
428 int
429 cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info,
430  struct cmdline_parser_params *params)
431 {
432  int result;
433  result = cmdline_parser_internal (argc, argv, args_info, params, 0);
434 
435  if (result == EXIT_FAILURE)
436  {
437  cmdline_parser_free (args_info);
438  exit (EXIT_FAILURE);
439  }
440 
441  return result;
442 }
443 
444 int
445 cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
446 {
447  int result;
448  struct cmdline_parser_params params;
449 
450  params.override = override;
451  params.initialize = initialize;
453  params.check_ambiguity = 0;
454  params.print_errors = 1;
455 
456  result = cmdline_parser_internal (argc, argv, args_info, &params, 0);
457 
458  if (result == EXIT_FAILURE)
459  {
460  cmdline_parser_free (args_info);
461  exit (EXIT_FAILURE);
462  }
463 
464  return result;
465 }
466 
467 int
468 cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
469 {
470  FIX_UNUSED (args_info);
471  FIX_UNUSED (prog_name);
472  return EXIT_SUCCESS;
473 }
474 
475 
476 static char *package_name = 0;
477 
496 static
497 int update_arg(void *field, char **orig_field,
498  unsigned int *field_given, unsigned int *prev_given,
499  char *value, const char *possible_values[],
500  const char *default_value,
501  cmdline_parser_arg_type arg_type,
502  int check_ambiguity, int override,
503  int no_free, int multiple_option,
504  const char *long_opt, char short_opt,
505  const char *additional_error)
506 {
507  char *stop_char = 0;
508  const char *val = value;
509  int found;
510  char **string_field;
511  FIX_UNUSED (field);
512 
513  stop_char = 0;
514  found = 0;
515 
516  if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
517  {
518  if (short_opt != '-')
519  fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n",
520  package_name, long_opt, short_opt,
521  (additional_error ? additional_error : ""));
522  else
523  fprintf (stderr, "%s: `--%s' option given more than once%s\n",
524  package_name, long_opt,
525  (additional_error ? additional_error : ""));
526  return 1; /* failure */
527  }
528 
529  FIX_UNUSED (default_value);
530 
531  if (field_given && *field_given && ! override)
532  return 0;
533  if (prev_given)
534  (*prev_given)++;
535  if (field_given)
536  (*field_given)++;
537  if (possible_values)
538  val = possible_values[found];
539 
540  switch(arg_type) {
541  case ARG_INT:
542  if (val) *((int *)field) = strtol (val, &stop_char, 0);
543  break;
544  case ARG_LONG:
545  if (val) *((long *)field) = (long)strtol (val, &stop_char, 0);
546  break;
547  case ARG_STRING:
548  if (val) {
549  string_field = (char **)field;
550  if (!no_free && *string_field)
551  free (*string_field); /* free previous string */
552  *string_field = gengetopt_strdup (val);
553  }
554  break;
555  default:
556  break;
557  };
558 
559  /* check numeric conversion */
560  switch(arg_type) {
561  case ARG_INT:
562  case ARG_LONG:
563  if (val && !(stop_char && *stop_char == '\0')) {
564  fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val);
565  return 1; /* failure */
566  }
567  break;
568  default:
569  ;
570  };
571 
572  /* store the original value */
573  switch(arg_type) {
574  case ARG_NO:
575  break;
576  default:
577  if (value && orig_field) {
578  if (no_free) {
579  *orig_field = value;
580  } else {
581  if (*orig_field)
582  free (*orig_field); /* free previous string */
583  *orig_field = gengetopt_strdup (value);
584  }
585  }
586  };
587 
588  return 0; /* OK */
589 }
590 
591 
592 int
593 cmdline_parser_internal (
594  int argc, char **argv, struct gengetopt_args_info *args_info,
595  struct cmdline_parser_params *params, const char *additional_error)
596 {
597  int c; /* Character of the parsed option. */
598 
599  int error_occurred = 0;
600  struct gengetopt_args_info local_args_info;
601 
602  int override;
603  int initialize;
604  int check_required;
605  int check_ambiguity;
606 
607  package_name = argv[0];
608 
609  /* TODO: Why is this here? It is not used anywhere. */
610  override = params->override;
611  FIX_UNUSED(override);
612 
613  initialize = params->initialize;
614  check_required = params->check_required;
615 
616  /* TODO: Why is this here? It is not used anywhere. */
617  check_ambiguity = params->check_ambiguity;
618  FIX_UNUSED(check_ambiguity);
619 
620  if (initialize)
621  cmdline_parser_init (args_info);
622 
623  cmdline_parser_init (&local_args_info);
624 
625  optarg = 0;
626  optind = 0;
627  opterr = params->print_errors;
628  optopt = '?';
629 
630  while (1)
631  {
632  int option_index = 0;
633 
634  static struct option long_options[] = {
635  { "help", 0, NULL, 'h' },
636  { "version", 0, NULL, 'V' },
637  { "fipid", 1, NULL, 0 },
638  { "fid", 1, NULL, 0 },
639  { "org", 1, NULL, 0 },
640  { "bank", 1, NULL, 0 },
641  { "broker", 1, NULL, 0 },
642  { "user", 1, NULL, 0 },
643  { "pass", 1, NULL, 0 },
644  { "acct", 1, NULL, 0 },
645  { "type", 1, NULL, 0 },
646  { "past", 1, NULL, 0 },
647  { "url", 1, NULL, 0 },
648  { "trid", 1, NULL, 0 },
649  { "statement-req", 0, NULL, 's' },
650  { "accountinfo-req", 0, NULL, 'a' },
651  { "payment-req", 0, NULL, 'p' },
652  { "paymentinquiry-req", 0, NULL, 'i' },
653  { "bank-list", 0, NULL, 'b' },
654  { "bank-fipid", 0, NULL, 'f' },
655  { "bank-services", 0, NULL, 'v' },
656  { "allsupport", 0, NULL, 0 },
657  { 0, 0, 0, 0 }
658  };
659 
660  c = getopt_long (argc, argv, "hVsapibfv", long_options, &option_index);
661 
662  if (c == -1) break; /* Exit from `while (1)' loop. */
663 
664  switch (c)
665  {
666  case 'h': /* Print help and exit. */
668  cmdline_parser_free (&local_args_info);
669  exit (EXIT_SUCCESS);
670 
671  case 'V': /* Print version and exit. */
673  cmdline_parser_free (&local_args_info);
674  exit (EXIT_SUCCESS);
675 
676  case 's': /* Request for a statement. */
677 
678  if (args_info->command_group_counter && override)
679  reset_group_command (args_info);
680  args_info->command_group_counter += 1;
681 
682  if (update_arg( 0 ,
683  0 , &(args_info->statement_req_given),
684  &(local_args_info.statement_req_given), optarg, 0, 0, ARG_NO,
685  check_ambiguity, override, 0, 0,
686  "statement-req", 's',
687  additional_error))
688  goto failure;
689 
690  break;
691  case 'a': /* Request for a list of accounts. */
692 
693  if (args_info->command_group_counter && override)
694  reset_group_command (args_info);
695  args_info->command_group_counter += 1;
696 
697  if (update_arg( 0 ,
698  0 , &(args_info->accountinfo_req_given),
699  &(local_args_info.accountinfo_req_given), optarg, 0, 0, ARG_NO,
700  check_ambiguity, override, 0, 0,
701  "accountinfo-req", 'a',
702  additional_error))
703  goto failure;
704 
705  break;
706  case 'p': /* Request to make a payment. */
707 
708  if (args_info->command_group_counter && override)
709  reset_group_command (args_info);
710  args_info->command_group_counter += 1;
711 
712  if (update_arg( 0 ,
713  0 , &(args_info->payment_req_given),
714  &(local_args_info.payment_req_given), optarg, 0, 0, ARG_NO,
715  check_ambiguity, override, 0, 0,
716  "payment-req", 'p',
717  additional_error))
718  goto failure;
719 
720  break;
721  case 'i': /* Request to inquire about the status of a payment. */
722 
723  if (args_info->command_group_counter && override)
724  reset_group_command (args_info);
725  args_info->command_group_counter += 1;
726 
727  if (update_arg( 0 ,
728  0 , &(args_info->paymentinquiry_req_given),
729  &(local_args_info.paymentinquiry_req_given), optarg, 0, 0, ARG_NO,
730  check_ambiguity, override, 0, 0,
731  "paymentinquiry-req", 'i',
732  additional_error))
733  goto failure;
734 
735  break;
736  case 'b': /* List all known banks. */
737 
738  if (args_info->command_group_counter && override)
739  reset_group_command (args_info);
740  args_info->command_group_counter += 1;
741 
742  if (update_arg( 0 ,
743  0 , &(args_info->bank_list_given),
744  &(local_args_info.bank_list_given), optarg, 0, 0, ARG_NO,
745  check_ambiguity, override, 0, 0,
746  "bank-list", 'b',
747  additional_error))
748  goto failure;
749 
750  break;
751  case 'f': /* List all fipids for a given bank. */
752 
753  if (args_info->command_group_counter && override)
754  reset_group_command (args_info);
755  args_info->command_group_counter += 1;
756 
757  if (update_arg( 0 ,
758  0 , &(args_info->bank_fipid_given),
759  &(local_args_info.bank_fipid_given), optarg, 0, 0, ARG_NO,
760  check_ambiguity, override, 0, 0,
761  "bank-fipid", 'f',
762  additional_error))
763  goto failure;
764 
765  break;
766  case 'v': /* List supported services for a given fipid. */
767 
768  if (args_info->command_group_counter && override)
769  reset_group_command (args_info);
770  args_info->command_group_counter += 1;
771 
772  if (update_arg( 0 ,
773  0 , &(args_info->bank_services_given),
774  &(local_args_info.bank_services_given), optarg, 0, 0, ARG_NO,
775  check_ambiguity, override, 0, 0,
776  "bank-services", 'v',
777  additional_error))
778  goto failure;
779 
780  break;
781 
782  case 0: /* Long option with no short option */
783  /* FI partner identifier (looks up fid, org & url from partner server). */
784  if (strcmp (long_options[option_index].name, "fipid") == 0)
785  {
786 
787 
788  if (update_arg( (void *)&(args_info->fipid_arg),
789  &(args_info->fipid_orig), &(args_info->fipid_given),
790  &(local_args_info.fipid_given), optarg, 0, 0, ARG_STRING,
791  check_ambiguity, override, 0, 0,
792  "fipid", '-',
793  additional_error))
794  goto failure;
795 
796  }
797  /* FI identifier. */
798  else if (strcmp (long_options[option_index].name, "fid") == 0)
799  {
800 
801 
802  if (update_arg( (void *)&(args_info->fid_arg),
803  &(args_info->fid_orig), &(args_info->fid_given),
804  &(local_args_info.fid_given), optarg, 0, 0, ARG_STRING,
805  check_ambiguity, override, 0, 0,
806  "fid", '-',
807  additional_error))
808  goto failure;
809 
810  }
811  /* FI org tag. */
812  else if (strcmp (long_options[option_index].name, "org") == 0)
813  {
814 
815 
816  if (update_arg( (void *)&(args_info->org_arg),
817  &(args_info->org_orig), &(args_info->org_given),
818  &(local_args_info.org_given), optarg, 0, 0, ARG_STRING,
819  check_ambiguity, override, 0, 0,
820  "org", '-',
821  additional_error))
822  goto failure;
823 
824  }
825  /* IBAN bank identifier. */
826  else if (strcmp (long_options[option_index].name, "bank") == 0)
827  {
828 
829 
830  if (update_arg( (void *)&(args_info->bank_arg),
831  &(args_info->bank_orig), &(args_info->bank_given),
832  &(local_args_info.bank_given), optarg, 0, 0, ARG_STRING,
833  check_ambiguity, override, 0, 0,
834  "bank", '-',
835  additional_error))
836  goto failure;
837 
838  }
839  /* Broker identifier. */
840  else if (strcmp (long_options[option_index].name, "broker") == 0)
841  {
842 
843 
844  if (update_arg( (void *)&(args_info->broker_arg),
845  &(args_info->broker_orig), &(args_info->broker_given),
846  &(local_args_info.broker_given), optarg, 0, 0, ARG_STRING,
847  check_ambiguity, override, 0, 0,
848  "broker", '-',
849  additional_error))
850  goto failure;
851 
852  }
853  /* User name. */
854  else if (strcmp (long_options[option_index].name, "user") == 0)
855  {
856 
857 
858  if (update_arg( (void *)&(args_info->user_arg),
859  &(args_info->user_orig), &(args_info->user_given),
860  &(local_args_info.user_given), optarg, 0, 0, ARG_STRING,
861  check_ambiguity, override, 0, 0,
862  "user", '-',
863  additional_error))
864  goto failure;
865 
866  }
867  /* Password. */
868  else if (strcmp (long_options[option_index].name, "pass") == 0)
869  {
870 
871 
872  if (update_arg( (void *)&(args_info->pass_arg),
873  &(args_info->pass_orig), &(args_info->pass_given),
874  &(local_args_info.pass_given), optarg, 0, 0, ARG_STRING,
875  check_ambiguity, override, 0, 0,
876  "pass", '-',
877  additional_error))
878  goto failure;
879 
880  }
881  /* Account ID. */
882  else if (strcmp (long_options[option_index].name, "acct") == 0)
883  {
884 
885 
886  if (update_arg( (void *)&(args_info->acct_arg),
887  &(args_info->acct_orig), &(args_info->acct_given),
888  &(local_args_info.acct_given), optarg, 0, 0, ARG_STRING,
889  check_ambiguity, override, 0, 0,
890  "acct", '-',
891  additional_error))
892  goto failure;
893 
894  }
895  /* Account Type 1=checking 2=invest 3=ccard. */
896  else if (strcmp (long_options[option_index].name, "type") == 0)
897  {
898 
899 
900  if (update_arg( (void *)&(args_info->type_arg),
901  &(args_info->type_orig), &(args_info->type_given),
902  &(local_args_info.type_given), optarg, 0, 0, ARG_INT,
903  check_ambiguity, override, 0, 0,
904  "type", '-',
905  additional_error))
906  goto failure;
907 
908  }
909  /* How far back to look from today (in days). */
910  else if (strcmp (long_options[option_index].name, "past") == 0)
911  {
912 
913 
914  if (update_arg( (void *)&(args_info->past_arg),
915  &(args_info->past_orig), &(args_info->past_given),
916  &(local_args_info.past_given), optarg, 0, 0, ARG_LONG,
917  check_ambiguity, override, 0, 0,
918  "past", '-',
919  additional_error))
920  goto failure;
921 
922  }
923  /* Url to POST the data to (otherwise goes to stdout). */
924  else if (strcmp (long_options[option_index].name, "url") == 0)
925  {
926 
927 
928  if (update_arg( (void *)&(args_info->url_arg),
929  &(args_info->url_orig), &(args_info->url_given),
930  &(local_args_info.url_given), optarg, 0, 0, ARG_STRING,
931  check_ambiguity, override, 0, 0,
932  "url", '-',
933  additional_error))
934  goto failure;
935 
936  }
937  /* Transaction id. */
938  else if (strcmp (long_options[option_index].name, "trid") == 0)
939  {
940 
941 
942  if (update_arg( (void *)&(args_info->trid_arg),
943  &(args_info->trid_orig), &(args_info->trid_given),
944  &(local_args_info.trid_given), optarg, 0, 0, ARG_INT,
945  check_ambiguity, override, 0, 0,
946  "trid", '-',
947  additional_error))
948  goto failure;
949 
950  }
951  /* List all banks which support online banking. */
952  else if (strcmp (long_options[option_index].name, "allsupport") == 0)
953  {
954 
955  if (args_info->command_group_counter && override)
956  reset_group_command (args_info);
957  args_info->command_group_counter += 1;
958 
959  if (update_arg( 0 ,
960  0 , &(args_info->allsupport_given),
961  &(local_args_info.allsupport_given), optarg, 0, 0, ARG_NO,
962  check_ambiguity, override, 0, 0,
963  "allsupport", '-',
964  additional_error))
965  goto failure;
966 
967  }
968 
969  break;
970  case '?': /* Invalid option. */
971  /* `getopt_long' already printed an error message. */
972  goto failure;
973 
974  default: /* bug: option not considered. */
975  fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
976  abort ();
977  } /* switch */
978  } /* while */
979 
980  if (args_info->command_group_counter > 1)
981  {
982  fprintf (stderr, "%s: %d options of group command were given. At most one is required%s.\n", argv[0], args_info->command_group_counter, (additional_error ? additional_error : ""));
983  error_occurred = 1;
984  }
985 
986 
987 
988  FIX_UNUSED(check_required);
989 
990  cmdline_parser_release (&local_args_info);
991 
992  if ( error_occurred )
993  return (EXIT_FAILURE);
994 
995  if (optind < argc)
996  {
997  int i = 0 ;
998  int found_prog_name = 0;
999  /* whether program name, i.e., argv[0], is in the remaining args
1000  (this may happen with some implementations of getopt,
1001  but surely not with the one included by gengetopt) */
1002 
1003  i = optind;
1004  while (i < argc)
1005  if (argv[i++] == argv[0]) {
1006  found_prog_name = 1;
1007  break;
1008  }
1009  i = 0;
1010 
1011  args_info->inputs_num = argc - optind - found_prog_name;
1012  args_info->inputs =
1013  (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
1014  while (optind < argc)
1015  if (argv[optind++] != argv[0])
1016  args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
1017  }
1018 
1019  return 0;
1020 
1021 failure:
1022 
1023  cmdline_parser_release (&local_args_info);
1024  return (EXIT_FAILURE);
1025 }
1026 /* vim: set ft=c noet ts=8 sts=8 sw=8 tw=80 nojs spell : */
gengetopt_args_info::fipid_given
unsigned int fipid_given
Whether fipid was given.
Definition: ofxconnect/cmdline.h:93
gengetopt_args_info::type_arg
int type_arg
Account Type 1=checking 2=invest 3=ccard.
Definition: ofxconnect/cmdline.h:70
gengetopt_args_info::help_given
unsigned int help_given
Whether help was given.
Definition: ofxconnect/cmdline.h:91
OFX
@ OFX
Definition: inc/libofx.h:140
gengetopt_args_info_purpose
const char * gengetopt_args_info_purpose
the purpose string of the program
Definition: ofxconnect/cmdline.c:28
gengetopt_args_info::allsupport_help
const char * allsupport_help
List all banks which support online banking help description.
Definition: ofxconnect/cmdline.h:89
gengetopt_args_info::user_help
const char * user_help
User name help description.
Definition: ofxconnect/cmdline.h:63
gengetopt_args_info::user_arg
char * user_arg
User name.
Definition: ofxconnect/cmdline.h:61
gengetopt_args_info::org_given
unsigned int org_given
Whether org was given.
Definition: ofxconnect/cmdline.h:95
cmdline_parser_params_init
void cmdline_parser_params_init(struct cmdline_parser_params *params)
Definition: ofxconnect/cmdline.c:221
CMDLINE_PARSER_PACKAGE
#define CMDLINE_PARSER_PACKAGE
the program name (used for printing errors)
Definition: ofxconnect/cmdline.h:24
gengetopt_args_info::broker_given
unsigned int broker_given
Whether broker was given.
Definition: ofxconnect/cmdline.h:97
gengetopt_args_info::past_help
const char * past_help
How far back to look from today (in days) help description.
Definition: ofxconnect/cmdline.h:75
gengetopt_args_info::org_arg
char * org_arg
FI org tag.
Definition: ofxconnect/cmdline.h:52
gengetopt_args_info::payment_req_given
unsigned int payment_req_given
Whether payment-req was given.
Definition: ofxconnect/cmdline.h:107
gengetopt_args_info::fid_given
unsigned int fid_given
Whether fid was given.
Definition: ofxconnect/cmdline.h:94
gengetopt_args_info::trid_help
const char * trid_help
Transaction id help description.
Definition: ofxconnect/cmdline.h:81
gengetopt_args_info::accountinfo_req_help
const char * accountinfo_req_help
Request for a list of accounts help description.
Definition: ofxconnect/cmdline.h:83
gengetopt_args_info::org_help
const char * org_help
FI org tag help description.
Definition: ofxconnect/cmdline.h:54
gengetopt_args_info::bank_orig
char * bank_orig
IBAN bank identifier original value given at command line.
Definition: ofxconnect/cmdline.h:56
gengetopt_args_info::type_given
unsigned int type_given
Whether type was given.
Definition: ofxconnect/cmdline.h:101
gengetopt_args_info::fid_help
const char * fid_help
FI identifier help description.
Definition: ofxconnect/cmdline.h:51
gengetopt_args_info::url_orig
char * url_orig
Url to POST the data to (otherwise goes to stdout) original value given at command line.
Definition: ofxconnect/cmdline.h:77
gengetopt_args_info::broker_orig
char * broker_orig
Broker identifier original value given at command line.
Definition: ofxconnect/cmdline.h:59
gengetopt_args_info::accountinfo_req_given
unsigned int accountinfo_req_given
Whether accountinfo-req was given.
Definition: ofxconnect/cmdline.h:106
gengetopt_args_info::broker_arg
char * broker_arg
Broker identifier.
Definition: ofxconnect/cmdline.h:58
gengetopt_args_info::fipid_orig
char * fipid_orig
FI partner identifier (looks up fid, org & url from partner server) original value given at command l...
Definition: ofxconnect/cmdline.h:47
gengetopt_args_info::inputs
char ** inputs
unnamed options (options without names)
Definition: ofxconnect/cmdline.h:114
cmdline_parser_file_save
int cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
Definition: ofxconnect/cmdline.c:364
gengetopt_args_info::org_orig
char * org_orig
FI org tag original value given at command line.
Definition: ofxconnect/cmdline.h:53
gengetopt_args_info::pass_help
const char * pass_help
Password help description.
Definition: ofxconnect/cmdline.h:66
QIF
@ QIF
Definition: inc/libofx.h:142
cmdline.h
The header file for the command line option parser generated by GNU Gengetopt version 2....
cmdline_parser_print_help
void cmdline_parser_print_help(void)
Definition: ofxconnect/cmdline.c:201
gengetopt_args_info::version_given
unsigned int version_given
Whether version was given.
Definition: ofxconnect/cmdline.h:92
CMDLINE_PARSER_PACKAGE_NAME
#define CMDLINE_PARSER_PACKAGE_NAME
the complete program name (used for help and version)
Definition: ofxconnect/cmdline.h:32
gengetopt_args_info::url_arg
char * url_arg
Url to POST the data to (otherwise goes to stdout).
Definition: ofxconnect/cmdline.h:76
gengetopt_args_info::bank_help
const char * bank_help
IBAN bank identifier help description.
Definition: ofxconnect/cmdline.h:57
cmdline_parser_dump
int cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
Definition: ofxconnect/cmdline.c:303
gengetopt_args_info::trid_arg
int trid_arg
Transaction id.
Definition: ofxconnect/cmdline.h:79
gengetopt_args_info::acct_help
const char * acct_help
Account ID help description.
Definition: ofxconnect/cmdline.h:69
gengetopt_args_info::user_orig
char * user_orig
User name original value given at command line.
Definition: ofxconnect/cmdline.h:62
gengetopt_args_info::bank_fipid_given
unsigned int bank_fipid_given
Whether bank-fipid was given.
Definition: ofxconnect/cmdline.h:110
gengetopt_args_info::bank_list_given
unsigned int bank_list_given
Whether bank-list was given.
Definition: ofxconnect/cmdline.h:109
gengetopt_args_info::trid_given
unsigned int trid_given
Whether trid was given.
Definition: ofxconnect/cmdline.h:104
cmdline_parser_free
void cmdline_parser_free(struct gengetopt_args_info *args_info)
Definition: ofxconnect/cmdline.c:384
cmdline_parser_print_version
void cmdline_parser_print_version(void)
Definition: ofxconnect/cmdline.c:169
gengetopt_args_info::bank_given
unsigned int bank_given
Whether bank was given.
Definition: ofxconnect/cmdline.h:96
gengetopt_args_info::bank_services_given
unsigned int bank_services_given
Whether bank-services was given.
Definition: ofxconnect/cmdline.h:111
gengetopt_args_info::version_help
const char * version_help
Print version and exit help description.
Definition: ofxconnect/cmdline.h:45
cmdline_parser_params::override
int override
whether to override possibly already present options (default 0)
Definition: ofxconnect/cmdline.h:122
gengetopt_args_info::acct_arg
char * acct_arg
Account ID.
Definition: ofxconnect/cmdline.h:67
gengetopt_args_info::command_group_counter
int command_group_counter
Counter for group command.
Definition: ofxconnect/cmdline.h:116
CMDLINE_PARSER_VERSION
#define CMDLINE_PARSER_VERSION
the program version
Definition: ofxconnect/cmdline.h:38
gengetopt_args_info::trid_orig
char * trid_orig
Transaction id original value given at command line.
Definition: ofxconnect/cmdline.h:80
gengetopt_args_info::acct_given
unsigned int acct_given
Whether acct was given.
Definition: ofxconnect/cmdline.h:100
cmdline_parser_params::check_ambiguity
int check_ambiguity
whether to check for options already specified in the option structure gengetopt_args_info (default 0...
Definition: ofxconnect/cmdline.h:125
gengetopt_args_info::fipid_help
const char * fipid_help
FI partner identifier (looks up fid, org & url from partner server) help description.
Definition: ofxconnect/cmdline.h:48
gengetopt_args_info::url_help
const char * url_help
Url to POST the data to (otherwise goes to stdout) help description.
Definition: ofxconnect/cmdline.h:78
gengetopt_args_info::bank_arg
char * bank_arg
IBAN bank identifier.
Definition: ofxconnect/cmdline.h:55
gengetopt_args_info::bank_fipid_help
const char * bank_fipid_help
List all fipids for a given bank help description.
Definition: ofxconnect/cmdline.h:87
gengetopt_args_info::pass_arg
char * pass_arg
Password.
Definition: ofxconnect/cmdline.h:64
gengetopt_args_info::statement_req_help
const char * statement_req_help
Request for a statement help description.
Definition: ofxconnect/cmdline.h:82
gengetopt_args_info::fid_orig
char * fid_orig
FI identifier original value given at command line.
Definition: ofxconnect/cmdline.h:50
gengetopt_args_info::url_given
unsigned int url_given
Whether url was given.
Definition: ofxconnect/cmdline.h:103
gengetopt_args_info::pass_given
unsigned int pass_given
Whether pass was given.
Definition: ofxconnect/cmdline.h:99
cmdline_parser_params_create
struct cmdline_parser_params * cmdline_parser_params_create(void)
Definition: ofxconnect/cmdline.c:234
cmdline_parser_params::print_errors
int print_errors
whether getopt_long should print an error message for a bad option (default 1)
Definition: ofxconnect/cmdline.h:126
gengetopt_args_info::type_orig
char * type_orig
Account Type 1=checking 2=invest 3=ccard original value given at command line.
Definition: ofxconnect/cmdline.h:71
gengetopt_args_info_usage
const char * gengetopt_args_info_usage
the usage string of the program
Definition: ofxconnect/cmdline.c:30
gengetopt_args_info::past_given
unsigned int past_given
Whether past was given.
Definition: ofxconnect/cmdline.h:102
gengetopt_args_info::paymentinquiry_req_help
const char * paymentinquiry_req_help
Request to inquire about the status of a payment help description.
Definition: ofxconnect/cmdline.h:85
gengetopt_args_info::inputs_num
unsigned inputs_num
unnamed options number
Definition: ofxconnect/cmdline.h:115
cmdline_parser
int cmdline_parser(int argc, char **argv, struct gengetopt_args_info *args_info)
Definition: ofxconnect/cmdline.c:423
gengetopt_args_info::bank_list_help
const char * bank_list_help
List all known banks help description.
Definition: ofxconnect/cmdline.h:86
gengetopt_args_info_help
const char * gengetopt_args_info_help[]
all the lines making the help output
Definition: ofxconnect/cmdline.c:36
gengetopt_args_info::allsupport_given
unsigned int allsupport_given
Whether allsupport was given.
Definition: ofxconnect/cmdline.h:112
gengetopt_args_info::acct_orig
char * acct_orig
Account ID original value given at command line.
Definition: ofxconnect/cmdline.h:68
gengetopt_args_info::fipid_arg
char * fipid_arg
FI partner identifier (looks up fid, org & url from partner server).
Definition: ofxconnect/cmdline.h:46
cmdline_parser_required
int cmdline_parser_required(struct gengetopt_args_info *args_info, const char *prog_name)
Definition: ofxconnect/cmdline.c:468
gengetopt_args_info::pass_orig
char * pass_orig
Password original value given at command line.
Definition: ofxconnect/cmdline.h:65
gengetopt_args_info
Where the command line options are stored.
Definition: ofxconnect/cmdline.h:42
gengetopt_args_info::past_arg
long past_arg
How far back to look from today (in days).
Definition: ofxconnect/cmdline.h:73
gengetopt_args_info::bank_services_help
const char * bank_services_help
List supported services for a given fipid help description.
Definition: ofxconnect/cmdline.h:88
cmdline_parser_params
The additional parameters to pass to parser functions.
Definition: ofxconnect/cmdline.h:120
gengetopt_args_info::fid_arg
char * fid_arg
FI identifier.
Definition: ofxconnect/cmdline.h:49
gengetopt_args_info::statement_req_given
unsigned int statement_req_given
Whether statement-req was given.
Definition: ofxconnect/cmdline.h:105
cmdline_parser2
int cmdline_parser2(int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
Definition: ofxconnect/cmdline.c:445
gengetopt_args_info::help_help
const char * help_help
Print help and exit help description.
Definition: ofxconnect/cmdline.h:44
gengetopt_args_info::past_orig
char * past_orig
How far back to look from today (in days) original value given at command line.
Definition: ofxconnect/cmdline.h:74
cmdline_parser_params::initialize
int initialize
whether to initialize the option structure gengetopt_args_info (default 1)
Definition: ofxconnect/cmdline.h:123
cmdline_parser_params::check_required
int check_required
whether to check that all required options were provided (default 1)
Definition: ofxconnect/cmdline.h:124
gengetopt_args_info::user_given
unsigned int user_given
Whether user was given.
Definition: ofxconnect/cmdline.h:98
tree
Definition: tree.hh:106
cmdline_parser_init
void cmdline_parser_init(struct gengetopt_args_info *args_info)
Definition: ofxconnect/cmdline.c:210
gengetopt_args_info::payment_req_help
const char * payment_req_help
Request to make a payment help description.
Definition: ofxconnect/cmdline.h:84
gengetopt_args_info::paymentinquiry_req_given
unsigned int paymentinquiry_req_given
Whether paymentinquiry-req was given.
Definition: ofxconnect/cmdline.h:108
gengetopt_args_info_description
const char * gengetopt_args_info_description
the description string of the program
Definition: ofxconnect/cmdline.c:34
gengetopt_args_info::broker_help
const char * broker_help
Broker identifier help description.
Definition: ofxconnect/cmdline.h:60
gengetopt_args_info::type_help
const char * type_help
Account Type 1=checking 2=invest 3=ccard help description.
Definition: ofxconnect/cmdline.h:72
cmdline_parser_ext
int cmdline_parser_ext(int argc, char **argv, struct gengetopt_args_info *args_info, struct cmdline_parser_params *params)
Definition: ofxconnect/cmdline.c:429