1 /* File generated by GAA 1.6.6
12 void cli_version(void);
19 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(WINDOWS)
24 static void* gaa_malloc( size_t size) {
28 fprintf(stderr, "gaa: could not allocate memory");
34 static void __gaa_helpsingle(char short_name, char *name,
35 char *arg_desc, char *opt_help)
37 int col1, col3, col4, tabsize = 3, curr;
40 col1 = 5; /* Default values */
45 for(i = 0; i < col1; i++)
54 printf("-%c, ", short_name);
59 printf("-%c ", short_name);
65 printf("--%s ", name);
66 curr += 3 + strlen(name);
68 if(arg_desc && *arg_desc)
70 printf("%s ", arg_desc);
71 curr += 1 + strlen(arg_desc);
78 if(opt_help) /* let's print the option's help body */
80 const char *str = opt_help;
100 while((curr - col3) % tabsize != 0 && curr < col4);
107 for(i = 1; str[i] && str[i] != ' ' && str[i] != '\n'
108 && str[i] != '\t'; i++);
109 if(curr + i - 1 >= col4)
129 printf("GnuTLS test client\nUsage: gnutls-cli [options] hostname\n\n\n");
130 __gaa_helpsingle('d', "debug", "integer ", "Enable debugging");
131 __gaa_helpsingle('r', "resume", "", "Connect, establish a session. Connect again and resume this session.");
132 __gaa_helpsingle('e', "rehandshake", "", "Connect, establish a session and rehandshake immediately.");
133 __gaa_helpsingle(0, "noticket", "", "Doen't accept session tickets.");
134 __gaa_helpsingle('s', "starttls", "", "Connect, establish a plain session and start TLS when EOF or a SIGALRM is received.");
135 __gaa_helpsingle(0, "crlf", "", "Send CR LF instead of LF.");
136 __gaa_helpsingle(0, "x509fmtder", "", "Use DER format for certificates to read from.");
137 __gaa_helpsingle('f', "fingerprint", "", "Send the openpgp fingerprint, instead of the key.");
138 __gaa_helpsingle(0, "disable-extensions", "", "Disable all the TLS extensions.");
139 __gaa_helpsingle(0, "print-cert", "", "Print the certificate in PEM format.");
140 __gaa_helpsingle(0, "recordsize", "integer ", "The maximum record size to advertize.");
141 __gaa_helpsingle('V', "verbose", "", "More verbose output.");
142 __gaa_helpsingle(0, "priority", "PRIORITY STRING ", "Priorities string.");
143 __gaa_helpsingle(0, "x509cafile", "FILE ", "Certificate file or PKCS #11 URL to use.");
144 __gaa_helpsingle(0, "x509crlfile", "FILE ", "CRL file to use.");
145 __gaa_helpsingle(0, "pgpkeyfile", "FILE ", "PGP Key file to use.");
146 __gaa_helpsingle(0, "pgpkeyring", "FILE ", "PGP Key ring file to use.");
147 __gaa_helpsingle(0, "pgpcertfile", "FILE ", "PGP Public Key (certificate) file to use.");
148 __gaa_helpsingle(0, "pgpsubkey", "HEX|auto ", "PGP subkey to use.");
149 __gaa_helpsingle(0, "x509keyfile", "FILE ", "X.509 key file or PKCS #11 URL to use.");
150 __gaa_helpsingle(0, "x509certfile", "FILE ", "X.509 Certificate file or PKCS #11 URL to use.");
151 __gaa_helpsingle(0, "srpusername", "NAME ", "SRP username to use.");
152 __gaa_helpsingle(0, "srppasswd", "PASSWD ", "SRP password to use.");
153 __gaa_helpsingle(0, "pskusername", "NAME ", "PSK username to use.");
154 __gaa_helpsingle(0, "pskkey", "KEY ", "PSK key (in hex) to use.");
155 __gaa_helpsingle(0, "opaque-prf-input", "DATA ", "Use Opaque PRF Input DATA.");
156 __gaa_helpsingle('p', "port", "PORT ", "The port to connect to.");
157 __gaa_helpsingle(0, "insecure", "", "Don't abort program if server certificate can't be validated.");
158 __gaa_helpsingle('l', "list", "", "Print a list of the supported algorithms and modes.");
159 __gaa_helpsingle('h', "help", "", "prints this help");
160 __gaa_helpsingle('v', "version", "", "prints the program's version number");
168 #ifndef GAA_HEADER_POKY
169 #define GAA_HEADER_POKY
171 typedef struct _gaainfo gaainfo;
182 char *opaque_prf_input;
216 int disable_extensions;
242 int gaa(int argc, char *argv[], gaainfo *gaaval);
246 int gaa_file(const char *name, gaainfo *gaaval);
259 #define GAAERROR(x) \
265 static char *gaa_current_option;
266 static int gaa_error = 0;
268 /* Generated by gaa */
276 #define GAA_ERROR_NOMATCH 0
277 #define GAA_ERROR_NOTENOUGH_ARGS 1
278 #define GAA_ERROR_INVALID_ARG 2
279 #define GAA_ERROR_UNKNOWN 3
281 #define GAA_NOT_AN_OPTION 0
282 #define GAA_WORD_OPTION 1
283 #define GAA_LETTER_OPTION 2
284 #define GAA_MULTIPLE_OPTION 3
287 #define GAA_NB_OPTION 31
288 #define GAAOPTID_version 1
289 #define GAAOPTID_help 2
290 #define GAAOPTID_list 3
291 #define GAAOPTID_insecure 4
292 #define GAAOPTID_port 5
293 #define GAAOPTID_opaque_prf_input 6
294 #define GAAOPTID_pskkey 7
295 #define GAAOPTID_pskusername 8
296 #define GAAOPTID_srppasswd 9
297 #define GAAOPTID_srpusername 10
298 #define GAAOPTID_x509certfile 11
299 #define GAAOPTID_x509keyfile 12
300 #define GAAOPTID_pgpsubkey 13
301 #define GAAOPTID_pgpcertfile 14
302 #define GAAOPTID_pgpkeyring 15
303 #define GAAOPTID_pgpkeyfile 16
304 #define GAAOPTID_x509crlfile 17
305 #define GAAOPTID_x509cafile 18
306 #define GAAOPTID_priority 19
307 #define GAAOPTID_verbose 20
308 #define GAAOPTID_recordsize 21
309 #define GAAOPTID_print_cert 22
310 #define GAAOPTID_disable_extensions 23
311 #define GAAOPTID_fingerprint 24
312 #define GAAOPTID_x509fmtder 25
313 #define GAAOPTID_crlf 26
314 #define GAAOPTID_starttls 27
315 #define GAAOPTID_noticket 28
316 #define GAAOPTID_rehandshake 29
317 #define GAAOPTID_resume 30
318 #define GAAOPTID_debug 31
322 #define GAA_CHECK1STR(a,b) \
325 gaa_current_option = a; \
329 #define GAA_CHECKSTR(a,b) \
330 if(strcmp(a,str) == 0) \
332 gaa_current_option = a; \
336 #define GAA_TESTMOREARGS \
339 while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
341 if(gaa_last_non_option == gaa_index) \
342 return GAA_ERROR_NOTENOUGH_ARGS; \
345 #define GAA_TESTMOREOPTIONALARGS \
348 while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
350 if(gaa_last_non_option == gaa_index) \
354 #define GAA_FILL_2ARGS(target, func) \
355 target = func(GAAargv[gaa_index]); \
356 gaa_arg_used[gaa_index] = 1; \
360 return GAA_ERROR_INVALID_ARG; \
365 #define GAA_FILL(target, func, num) \
368 target = func(GAAargv[gaa_index]); \
369 gaa_arg_used[gaa_index] = 1; \
373 return GAA_ERROR_INVALID_ARG; \
382 #define GAA_LIST_FILL(target, func, type ,num) \
387 if ( gaa_last_non_option - gaa_index > 0) \
388 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
389 for(; gaa_index < gaa_last_non_option; gaa_index++) \
391 if(gaa_arg_used[gaa_index] == 0) \
393 GAA_FILL_2ARGS(target[num], func); \
398 return GAA_ERROR_NOTENOUGH_ARGS; \
401 #define GAA_OPTIONALLIST_FILL(target, func, type ,num) \
406 if ( gaa_last_non_option - gaa_index > 0) \
407 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
408 for(; gaa_index < gaa_last_non_option; gaa_index++) \
410 if(gaa_arg_used[gaa_index] == 0) \
412 GAA_FILL_2ARGS(target[num], func); \
418 #define GAA_OBLIGAT(str) \
420 for(i = 0; i < strlen(str); i++) \
422 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION); \
423 if(j == GAA_ERROR_NOMATCH) \
425 printf("Error: invalid 'obligat' set\n"); \
428 if(opt_list[j] == 1) \
433 if(strlen(str) == 1) \
434 printf("You must give the -%s option\n", str); \
436 printf("You must give at least one option of '%s'\n", str); \
440 #define GAA_INCOMP(str) \
442 for(i = 0; i < strlen(str); i++) \
444 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION); \
445 if(j == GAA_ERROR_NOMATCH) \
447 printf("Error: invalid 'obligat' set\n"); \
450 if(opt_list[j] == 1) \
455 printf("The options '%s' are incompatible\n", str); \
460 static char **GAAargv;
462 static char *gaa_arg_used;
463 static int gaa_processing_file = 0;
464 static int inited = 0;
466 static int gaa_getint(char *arg)
470 if(sscanf(arg, "%d%c", &tmp, &a) < 1)
472 printf("Option %s: '%s' isn't an integer\n", gaa_current_option, arg);
478 static char gaa_getchar(char *arg)
482 printf("Option %s: '%s' isn't an character\n", gaa_current_option, arg);
488 static char* gaa_getstr(char *arg)
492 static float gaa_getfloat(char *arg)
496 if(sscanf(arg, "%f%c", &tmp, &a) < 1)
498 printf("Option %s: '%s' isn't a float number\n", gaa_current_option, arg);
503 /* option structures */
505 struct GAAOPTION_port
511 struct GAAOPTION_opaque_prf_input
517 struct GAAOPTION_pskkey
523 struct GAAOPTION_pskusername
529 struct GAAOPTION_srppasswd
535 struct GAAOPTION_srpusername
541 struct GAAOPTION_x509certfile
547 struct GAAOPTION_x509keyfile
553 struct GAAOPTION_pgpsubkey
559 struct GAAOPTION_pgpcertfile
565 struct GAAOPTION_pgpkeyring
571 struct GAAOPTION_pgpkeyfile
577 struct GAAOPTION_x509crlfile
583 struct GAAOPTION_x509cafile
589 struct GAAOPTION_priority
595 struct GAAOPTION_recordsize
601 struct GAAOPTION_debug
606 #define GAA_REST_EXISTS
615 static int gaa_is_an_argument(char *str)
618 if(str[0] == '/' && str[1] != 0)
619 return GAA_MULTIPLE_OPTION;
622 return GAA_NOT_AN_OPTION;
624 return GAA_NOT_AN_OPTION;
628 return GAA_WORD_OPTION;
630 return GAA_NOT_AN_OPTION;
633 return GAA_LETTER_OPTION;
635 return GAA_MULTIPLE_OPTION;
638 static int gaa_get_option_num(char *str, int status)
642 case GAA_LETTER_OPTION:
643 GAA_CHECK1STR("p", GAAOPTID_port);
644 GAA_CHECK1STR("", GAAOPTID_opaque_prf_input);
645 GAA_CHECK1STR("", GAAOPTID_pskkey);
646 GAA_CHECK1STR("", GAAOPTID_pskusername);
647 GAA_CHECK1STR("", GAAOPTID_srppasswd);
648 GAA_CHECK1STR("", GAAOPTID_srpusername);
649 GAA_CHECK1STR("", GAAOPTID_x509certfile);
650 GAA_CHECK1STR("", GAAOPTID_x509keyfile);
651 GAA_CHECK1STR("", GAAOPTID_pgpsubkey);
652 GAA_CHECK1STR("", GAAOPTID_pgpcertfile);
653 GAA_CHECK1STR("", GAAOPTID_pgpkeyring);
654 GAA_CHECK1STR("", GAAOPTID_pgpkeyfile);
655 GAA_CHECK1STR("", GAAOPTID_x509crlfile);
656 GAA_CHECK1STR("", GAAOPTID_x509cafile);
657 GAA_CHECK1STR("", GAAOPTID_priority);
658 GAA_CHECK1STR("", GAAOPTID_recordsize);
659 GAA_CHECK1STR("d", GAAOPTID_debug);
660 case GAA_MULTIPLE_OPTION:
662 GAA_CHECK1STR("v", GAAOPTID_version);
663 GAA_CHECK1STR("h", GAAOPTID_help);
664 GAA_CHECK1STR("l", GAAOPTID_list);
665 GAA_CHECK1STR("", GAAOPTID_insecure);
666 GAA_CHECK1STR("V", GAAOPTID_verbose);
667 GAA_CHECK1STR("", GAAOPTID_print_cert);
668 GAA_CHECK1STR("", GAAOPTID_disable_extensions);
669 GAA_CHECK1STR("f", GAAOPTID_fingerprint);
670 GAA_CHECK1STR("", GAAOPTID_x509fmtder);
671 GAA_CHECK1STR("", GAAOPTID_crlf);
672 GAA_CHECK1STR("s", GAAOPTID_starttls);
673 GAA_CHECK1STR("", GAAOPTID_noticket);
674 GAA_CHECK1STR("e", GAAOPTID_rehandshake);
675 GAA_CHECK1STR("r", GAAOPTID_resume);
679 case GAA_WORD_OPTION:
680 GAA_CHECKSTR("version", GAAOPTID_version);
681 GAA_CHECKSTR("help", GAAOPTID_help);
682 GAA_CHECKSTR("list", GAAOPTID_list);
683 GAA_CHECKSTR("insecure", GAAOPTID_insecure);
684 GAA_CHECKSTR("port", GAAOPTID_port);
685 GAA_CHECKSTR("opaque-prf-input", GAAOPTID_opaque_prf_input);
686 GAA_CHECKSTR("pskkey", GAAOPTID_pskkey);
687 GAA_CHECKSTR("pskusername", GAAOPTID_pskusername);
688 GAA_CHECKSTR("srppasswd", GAAOPTID_srppasswd);
689 GAA_CHECKSTR("srpusername", GAAOPTID_srpusername);
690 GAA_CHECKSTR("x509certfile", GAAOPTID_x509certfile);
691 GAA_CHECKSTR("x509keyfile", GAAOPTID_x509keyfile);
692 GAA_CHECKSTR("pgpsubkey", GAAOPTID_pgpsubkey);
693 GAA_CHECKSTR("pgpcertfile", GAAOPTID_pgpcertfile);
694 GAA_CHECKSTR("pgpkeyring", GAAOPTID_pgpkeyring);
695 GAA_CHECKSTR("pgpkeyfile", GAAOPTID_pgpkeyfile);
696 GAA_CHECKSTR("x509crlfile", GAAOPTID_x509crlfile);
697 GAA_CHECKSTR("x509cafile", GAAOPTID_x509cafile);
698 GAA_CHECKSTR("priority", GAAOPTID_priority);
699 GAA_CHECKSTR("verbose", GAAOPTID_verbose);
700 GAA_CHECKSTR("recordsize", GAAOPTID_recordsize);
701 GAA_CHECKSTR("print-cert", GAAOPTID_print_cert);
702 GAA_CHECKSTR("disable-extensions", GAAOPTID_disable_extensions);
703 GAA_CHECKSTR("fingerprint", GAAOPTID_fingerprint);
704 GAA_CHECKSTR("x509fmtder", GAAOPTID_x509fmtder);
705 GAA_CHECKSTR("crlf", GAAOPTID_crlf);
706 GAA_CHECKSTR("starttls", GAAOPTID_starttls);
707 GAA_CHECKSTR("noticket", GAAOPTID_noticket);
708 GAA_CHECKSTR("rehandshake", GAAOPTID_rehandshake);
709 GAA_CHECKSTR("resume", GAAOPTID_resume);
710 GAA_CHECKSTR("debug", GAAOPTID_debug);
716 return GAA_ERROR_NOMATCH;
719 static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
722 int gaa_last_non_option;
723 struct GAAOPTION_port GAATMP_port;
724 struct GAAOPTION_opaque_prf_input GAATMP_opaque_prf_input;
725 struct GAAOPTION_pskkey GAATMP_pskkey;
726 struct GAAOPTION_pskusername GAATMP_pskusername;
727 struct GAAOPTION_srppasswd GAATMP_srppasswd;
728 struct GAAOPTION_srpusername GAATMP_srpusername;
729 struct GAAOPTION_x509certfile GAATMP_x509certfile;
730 struct GAAOPTION_x509keyfile GAATMP_x509keyfile;
731 struct GAAOPTION_pgpsubkey GAATMP_pgpsubkey;
732 struct GAAOPTION_pgpcertfile GAATMP_pgpcertfile;
733 struct GAAOPTION_pgpkeyring GAATMP_pgpkeyring;
734 struct GAAOPTION_pgpkeyfile GAATMP_pgpkeyfile;
735 struct GAAOPTION_x509crlfile GAATMP_x509crlfile;
736 struct GAAOPTION_x509cafile GAATMP_x509cafile;
737 struct GAAOPTION_priority GAATMP_priority;
738 struct GAAOPTION_recordsize GAATMP_recordsize;
739 struct GAAOPTION_debug GAATMP_debug;
742 #ifdef GAA_REST_EXISTS
743 struct GAAREST GAAREST_tmp;
746 opt_list[gaa_num] = 1;
748 for(gaa_last_non_option = gaa_index;
749 (gaa_last_non_option != GAAargc) && (gaa_is_an_argument(GAAargv[gaa_last_non_option]) == GAA_NOT_AN_OPTION);
750 gaa_last_non_option++);
752 if(gaa_num == GAA_REST)
755 gaa_last_non_option = GAAargc;
760 case GAAOPTID_version:
763 { cli_version(); exit(0); ;};
770 { gaa_help(); exit(0); ;};
777 { print_list(gaaval->verbose); exit(0); ;};
781 case GAAOPTID_insecure:
784 { gaaval->insecure = 1 ;};
791 GAA_FILL(GAATMP_port.arg1, gaa_getstr, GAATMP_port.size1);
794 { gaaval->port = GAATMP_port.arg1 ;};
798 case GAAOPTID_opaque_prf_input:
801 GAA_FILL(GAATMP_opaque_prf_input.arg1, gaa_getstr, GAATMP_opaque_prf_input.size1);
804 { gaaval->opaque_prf_input = GAATMP_opaque_prf_input.arg1 ;};
808 case GAAOPTID_pskkey:
811 GAA_FILL(GAATMP_pskkey.arg1, gaa_getstr, GAATMP_pskkey.size1);
814 { gaaval->psk_key = GAATMP_pskkey.arg1 ;};
818 case GAAOPTID_pskusername:
821 GAA_FILL(GAATMP_pskusername.arg1, gaa_getstr, GAATMP_pskusername.size1);
824 { gaaval->psk_username = GAATMP_pskusername.arg1 ;};
828 case GAAOPTID_srppasswd:
831 GAA_FILL(GAATMP_srppasswd.arg1, gaa_getstr, GAATMP_srppasswd.size1);
834 { gaaval->srp_passwd = GAATMP_srppasswd.arg1 ;};
838 case GAAOPTID_srpusername:
841 GAA_FILL(GAATMP_srpusername.arg1, gaa_getstr, GAATMP_srpusername.size1);
844 { gaaval->srp_username = GAATMP_srpusername.arg1 ;};
848 case GAAOPTID_x509certfile:
851 GAA_FILL(GAATMP_x509certfile.arg1, gaa_getstr, GAATMP_x509certfile.size1);
854 { gaaval->x509_certfile = GAATMP_x509certfile.arg1 ;};
858 case GAAOPTID_x509keyfile:
861 GAA_FILL(GAATMP_x509keyfile.arg1, gaa_getstr, GAATMP_x509keyfile.size1);
864 { gaaval->x509_keyfile = GAATMP_x509keyfile.arg1 ;};
868 case GAAOPTID_pgpsubkey:
871 GAA_FILL(GAATMP_pgpsubkey.arg1, gaa_getstr, GAATMP_pgpsubkey.size1);
874 { gaaval->pgp_subkey = GAATMP_pgpsubkey.arg1 ;};
878 case GAAOPTID_pgpcertfile:
881 GAA_FILL(GAATMP_pgpcertfile.arg1, gaa_getstr, GAATMP_pgpcertfile.size1);
884 { gaaval->pgp_certfile = GAATMP_pgpcertfile.arg1 ;};
888 case GAAOPTID_pgpkeyring:
891 GAA_FILL(GAATMP_pgpkeyring.arg1, gaa_getstr, GAATMP_pgpkeyring.size1);
894 { gaaval->pgp_keyring = GAATMP_pgpkeyring.arg1 ;};
898 case GAAOPTID_pgpkeyfile:
901 GAA_FILL(GAATMP_pgpkeyfile.arg1, gaa_getstr, GAATMP_pgpkeyfile.size1);
904 { gaaval->pgp_keyfile = GAATMP_pgpkeyfile.arg1 ;};
908 case GAAOPTID_x509crlfile:
911 GAA_FILL(GAATMP_x509crlfile.arg1, gaa_getstr, GAATMP_x509crlfile.size1);
914 { gaaval->x509_crlfile = GAATMP_x509crlfile.arg1 ;};
918 case GAAOPTID_x509cafile:
921 GAA_FILL(GAATMP_x509cafile.arg1, gaa_getstr, GAATMP_x509cafile.size1);
924 { gaaval->x509_cafile = GAATMP_x509cafile.arg1 ;};
928 case GAAOPTID_priority:
931 GAA_FILL(GAATMP_priority.arg1, gaa_getstr, GAATMP_priority.size1);
934 { gaaval->priorities = GAATMP_priority.arg1 ;};
938 case GAAOPTID_verbose:
941 { gaaval->verbose = 1 ;};
945 case GAAOPTID_recordsize:
948 GAA_FILL(GAATMP_recordsize.arg1, gaa_getint, GAATMP_recordsize.size1);
951 { gaaval->record_size = GAATMP_recordsize.arg1 ;};
955 case GAAOPTID_print_cert:
958 { gaaval->print_cert = 1 ;};
962 case GAAOPTID_disable_extensions:
965 { gaaval->disable_extensions = 1 ;};
969 case GAAOPTID_fingerprint:
972 { gaaval->fingerprint = 1 ;};
976 case GAAOPTID_x509fmtder:
979 { gaaval->fmtder = 1 ;};
986 { gaaval->crlf = 1 ;};
990 case GAAOPTID_starttls:
993 { gaaval->starttls = 1 ;};
997 case GAAOPTID_noticket:
1000 { gaaval->noticket = 1 ;};
1004 case GAAOPTID_rehandshake:
1007 { gaaval->rehandshake = 1 ;};
1011 case GAAOPTID_resume:
1014 { gaaval->resume = 1 ;};
1018 case GAAOPTID_debug:
1021 GAA_FILL(GAATMP_debug.arg1, gaa_getint, GAATMP_debug.size1);
1024 { gaaval->debug = GAATMP_debug.arg1 ;};
1030 GAA_FILL(GAAREST_tmp.arg1, gaa_getstr, GAAREST_tmp.size1);
1033 { gaaval->rest_args = GAAREST_tmp.arg1; ;};
1038 #line 413 "gaa.skel"
1041 return GAA_ERROR_UNKNOWN;
1044 int gaa(int argc, char **argv, gaainfo *gaaval)
1053 opt_list = (char*) gaa_malloc(GAA_NB_OPTION + 1);
1055 for(i = 0; i < GAA_NB_OPTION + 1; i++)
1057 /* initialization */
1062 { gaaval->resume=0; gaaval->noticket=0; gaaval->port="443"; gaaval->rest_args=NULL;
1063 gaaval->record_size=0;
1064 gaaval->fingerprint=0; gaaval->pgp_keyring=NULL; gaaval->x509_crlfile = NULL;
1065 gaaval->x509_cafile = NULL; gaaval->pgp_keyfile=NULL; gaaval->pgp_certfile=NULL; gaaval->disable_extensions = 0;
1066 gaaval->x509_keyfile=NULL; gaaval->x509_certfile=NULL; gaaval->crlf = 0;
1067 gaaval->srp_username=NULL; gaaval->srp_passwd=NULL; gaaval->fmtder = 0; gaaval->starttls =0;
1068 gaaval->debug = 0; gaaval->print_cert = 0; gaaval->verbose = 0; gaaval->psk_key = NULL;
1069 gaaval->psk_username = NULL; gaaval->priorities = NULL;
1070 gaaval->opaque_prf_input = NULL; gaaval->pgp_subkey = NULL; gaaval->rehandshake = 0; ;};
1074 #line 438 "gaa.skel"
1075 gaa_arg_used = NULL;
1078 gaa_arg_used = gaa_malloc(argc * sizeof(char));
1081 for(i = 1; i < argc; i++)
1082 gaa_arg_used[i] = 0;
1083 for(i = 1; i < argc; i++)
1085 if(gaa_arg_used[i] == 0)
1088 tmp1 = gaa_is_an_argument(GAAargv[i]);
1091 case GAA_WORD_OPTION:
1093 case GAA_LETTER_OPTION:
1095 tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1096 if(tmp2 == GAA_ERROR_NOMATCH)
1098 printf("Invalid option '%s'\n", argv[i]+j);
1101 switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1103 case GAA_ERROR_NOTENOUGH_ARGS:
1104 printf("'%s': not enough arguments\n",gaa_current_option);
1106 case GAA_ERROR_INVALID_ARG:
1107 printf("Invalid arguments\n");
1112 printf("Unknown error\n");
1114 gaa_arg_used[i] = 1;
1116 case GAA_MULTIPLE_OPTION:
1117 for(j = 1; j < strlen(argv[i]); j++)
1119 tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1120 if(tmp2 == GAA_ERROR_NOMATCH)
1122 printf("Invalid option '%c'\n", *(argv[i]+j));
1125 switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1127 case GAA_ERROR_NOTENOUGH_ARGS:
1128 printf("'%s': not enough arguments\n",gaa_current_option);
1130 case GAA_ERROR_INVALID_ARG:
1131 printf("Invalid arguments\n");
1136 printf("Unknown error\n");
1139 gaa_arg_used[i] = 1;
1145 if(gaa_processing_file == 0)
1148 #line 507 "gaa.skel"
1149 #ifdef GAA_REST_EXISTS
1150 switch(gaa_try(GAA_REST, 1, gaaval, opt_list))
1152 case GAA_ERROR_NOTENOUGH_ARGS:
1153 printf("Rest: not enough arguments\n");
1155 case GAA_ERROR_INVALID_ARG:
1156 printf("Invalid arguments\n");
1161 printf("Unknown error\n");
1165 for(i = 1; i < argc; i++)
1167 if(gaa_arg_used[i] == 0)
1169 printf("Too many arguments\n");
1181 struct gaastrnode *next;
1184 typedef struct gaastrnode gaa_str_node;
1186 static int gaa_internal_get_next_str(FILE *file, gaa_str_node *tmp_str, int argc)
1190 int i = 0, len = 0, newline = 0;
1198 if (a == EOF) return 0;
1200 while(a == ' ' || a == 9 || a == '\n')
1208 if (a == EOF) return 0;
1211 pos_ini = ftell(file) - 1;
1213 while(a != ' ' && a != 9 && a != '\n')
1218 if(a==EOF) return 0; //a = ' ';
1222 tmp_str->str = gaa_malloc((len) * sizeof(char));
1226 tmp_str->str[0] = '-';
1227 tmp_str->str[1] = '-';
1235 fseek(file,pos_ini, SEEK_SET);
1244 tmp_str->str[i] = a;
1247 while(a != ' ' && a != 9 && a != '\n' && i < len);
1249 tmp_str->str[i - 1] = 0;
1251 fseek(file,- 1, SEEK_CUR);
1252 /* printf("%d\n", ftell(file)); */
1257 int gaa_file(const char *name, gaainfo *gaaval)
1259 gaa_str_node *first_str, **tmp_str, *tmp_str2;
1265 gaa_processing_file = 1;
1267 if((file = fopen(name, "r")) == NULL)
1269 printf("Couldn't open '%s' configuration file for reading\n", name);
1273 tmp_str = &first_str;
1277 *tmp_str = gaa_malloc(sizeof(gaa_str_node));
1279 (*tmp_str)->str = NULL;
1280 (*tmp_str)->next = NULL;
1282 rval = gaa_internal_get_next_str(file, *tmp_str, argc);
1283 tmp_str = &((*tmp_str)->next);
1290 argv = gaa_malloc((1 + argc) * sizeof(char*));
1292 tmp_str2 = first_str;
1294 for(i = 1; i < argc; i++)
1296 argv[i] = tmp_str2->str;
1297 tmp_str2 = tmp_str2->next;
1300 rval = gaa(argc, argv, gaaval);
1301 gaa_processing_file = 0;