~ubuntu-branches/ubuntu/quantal/gnutls26/quantal

« back to all changes in this revision

Viewing changes to src/serv-gaa.c

  • Committer: Bazaar Package Importer
  • Author(s): Steve Langasek
  • Date: 2011-05-20 13:07:18 UTC
  • mfrom: (12.1.11 sid)
  • Revision ID: james.westby@ubuntu.com-20110520130718-db41dybbanzfvlji
Tags: 2.10.5-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Fix build failure with --no-add-needed.
  - Build for multiarch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
124
124
 
125
125
void gaa_help(void)
126
126
{
127
 
        printf("GNU TLS test server\nUsage: gnutls-serv [options]\n\n\n");
 
127
        printf("GnuTLS test server\nUsage: gnutls-serv [options]\n\n\n");
128
128
        __gaa_helpsingle('d', "debug", "integer ", "Enable debugging");
129
 
        __gaa_helpsingle('g', "generate", "", "Generate Diffie-Hellman Parameters.");
 
129
        __gaa_helpsingle('g', "generate", "", "Generate Diffie-Hellman and RSA-EXPORT Parameters.");
130
130
        __gaa_helpsingle('p', "port", "integer ", "The port to connect to.");
131
131
        __gaa_helpsingle('q', "quiet", "", "Suppress some messages.");
132
132
        __gaa_helpsingle(0, "nodb", "", "Does not use the resume database.");
 
133
        __gaa_helpsingle(0, "noticket", "", "Does not issue session tickets.");
133
134
        __gaa_helpsingle(0, "http", "", "Act as an HTTP Server.");
134
135
        __gaa_helpsingle(0, "echo", "", "Act as an Echo Server.");
135
136
        __gaa_helpsingle(0, "dhparams", "FILE ", "DH params file to use.");
175
176
 
176
177
struct _gaainfo
177
178
{
 
179
#line 115 "serv.gaa"
 
180
        char *priorities;
178
181
#line 112 "serv.gaa"
179
 
        char *priorities;
180
 
#line 109 "serv.gaa"
181
182
        char **ctype;
 
183
#line 111 "serv.gaa"
 
184
        int nctype;
182
185
#line 108 "serv.gaa"
183
 
        int nctype;
184
 
#line 105 "serv.gaa"
185
186
        char **kx;
 
187
#line 107 "serv.gaa"
 
188
        int nkx;
186
189
#line 104 "serv.gaa"
187
 
        int nkx;
188
 
#line 101 "serv.gaa"
189
190
        char **macs;
 
191
#line 103 "serv.gaa"
 
192
        int nmacs;
190
193
#line 100 "serv.gaa"
191
 
        int nmacs;
192
 
#line 97 "serv.gaa"
193
194
        char **comp;
 
195
#line 99 "serv.gaa"
 
196
        int ncomp;
194
197
#line 96 "serv.gaa"
195
 
        int ncomp;
196
 
#line 93 "serv.gaa"
197
198
        char **proto;
 
199
#line 95 "serv.gaa"
 
200
        int nproto;
198
201
#line 92 "serv.gaa"
199
 
        int nproto;
200
 
#line 89 "serv.gaa"
201
202
        char **ciphers;
 
203
#line 91 "serv.gaa"
 
204
        int nciphers;
202
205
#line 88 "serv.gaa"
203
 
        int nciphers;
 
206
        char *opaque_prf_input;
204
207
#line 85 "serv.gaa"
205
 
        char *opaque_prf_input;
 
208
        char *srp_passwd_conf;
206
209
#line 82 "serv.gaa"
207
 
        char *srp_passwd_conf;
 
210
        char *srp_passwd;
208
211
#line 79 "serv.gaa"
209
 
        char *srp_passwd;
 
212
        char *psk_hint;
210
213
#line 76 "serv.gaa"
211
 
        char *psk_hint;
 
214
        char *psk_passwd;
212
215
#line 73 "serv.gaa"
213
 
        char *psk_passwd;
 
216
        int disable_client_cert;
214
217
#line 70 "serv.gaa"
215
 
        int disable_client_cert;
 
218
        int require_cert;
216
219
#line 67 "serv.gaa"
217
 
        int require_cert;
 
220
        char *x509_dsacertfile;
218
221
#line 64 "serv.gaa"
219
 
        char *x509_dsacertfile;
 
222
        char *x509_dsakeyfile;
220
223
#line 61 "serv.gaa"
221
 
        char *x509_dsakeyfile;
 
224
        char *x509_certfile;
222
225
#line 58 "serv.gaa"
223
 
        char *x509_certfile;
 
226
        char *x509_keyfile;
224
227
#line 55 "serv.gaa"
225
 
        char *x509_keyfile;
 
228
        char *pgp_subkey;
226
229
#line 52 "serv.gaa"
227
 
        char *pgp_subkey;
 
230
        char *pgp_certfile;
228
231
#line 49 "serv.gaa"
229
 
        char *pgp_certfile;
 
232
        char *pgp_keyfile;
230
233
#line 46 "serv.gaa"
231
 
        char *pgp_keyfile;
 
234
        char *pgp_keyring;
232
235
#line 43 "serv.gaa"
233
 
        char *pgp_keyring;
 
236
        char *x509_crlfile;
234
237
#line 40 "serv.gaa"
235
 
        char *x509_crlfile;
 
238
        char *x509_cafile;
236
239
#line 37 "serv.gaa"
237
 
        char *x509_cafile;
 
240
        int fmtder;
238
241
#line 34 "serv.gaa"
239
 
        int fmtder;
240
 
#line 31 "serv.gaa"
241
242
        char *dh_params_file;
 
243
#line 30 "serv.gaa"
 
244
        int http;
242
245
#line 27 "serv.gaa"
243
 
        int http;
 
246
        int noticket;
244
247
#line 24 "serv.gaa"
245
248
        int nodb;
246
249
#line 21 "serv.gaa"
305
308
#define GAA_MULTIPLE_OPTION     3
306
309
 
307
310
#define GAA_REST                0
308
 
#define GAA_NB_OPTION           36
 
311
#define GAA_NB_OPTION           37
309
312
#define GAAOPTID_version        1
310
313
#define GAAOPTID_help   2
311
314
#define GAAOPTID_list   3
337
340
#define GAAOPTID_dhparams       29
338
341
#define GAAOPTID_echo   30
339
342
#define GAAOPTID_http   31
340
 
#define GAAOPTID_nodb   32
341
 
#define GAAOPTID_quiet  33
342
 
#define GAAOPTID_port   34
343
 
#define GAAOPTID_generate       35
344
 
#define GAAOPTID_debug  36
 
343
#define GAAOPTID_noticket       32
 
344
#define GAAOPTID_nodb   33
 
345
#define GAAOPTID_quiet  34
 
346
#define GAAOPTID_port   35
 
347
#define GAAOPTID_generate       36
 
348
#define GAAOPTID_debug  37
345
349
 
346
350
#line 168 "gaa.skel"
347
351
 
501
505
    return tmp;
502
506
}
503
507
 
 
508
static char gaa_getchar(char *arg)
 
509
{
 
510
    if(strlen(arg) != 1)
 
511
    {
 
512
        printf("Option %s: '%s' isn't an character\n", gaa_current_option, arg);
 
513
        GAAERROR(-1);
 
514
    }
 
515
    return arg[0];
 
516
}
504
517
 
505
518
static char* gaa_getstr(char *arg)
506
519
{
507
520
    return arg;
508
521
}
509
 
 
 
522
static float gaa_getfloat(char *arg)
 
523
{
 
524
    float tmp;
 
525
    char a;
 
526
    if(sscanf(arg, "%f%c", &tmp, &a) < 1)
 
527
    {
 
528
        printf("Option %s: '%s' isn't a float number\n", gaa_current_option, arg);
 
529
        GAAERROR(-1);
 
530
    }
 
531
    return tmp;
 
532
}
510
533
/* option structures */
511
534
 
512
535
struct GAAOPTION_priority 
723
746
                        GAA_CHECK1STR("", GAAOPTID_x509fmtder);
724
747
                        GAA_CHECK1STR("", GAAOPTID_echo);
725
748
                        GAA_CHECK1STR("", GAAOPTID_http);
 
749
                        GAA_CHECK1STR("", GAAOPTID_noticket);
726
750
                        GAA_CHECK1STR("", GAAOPTID_nodb);
727
751
                        GAA_CHECK1STR("q", GAAOPTID_quiet);
728
752
                        GAA_CHECK1STR("g", GAAOPTID_generate);
761
785
                        GAA_CHECKSTR("dhparams", GAAOPTID_dhparams);
762
786
                        GAA_CHECKSTR("echo", GAAOPTID_echo);
763
787
                        GAA_CHECKSTR("http", GAAOPTID_http);
 
788
                        GAA_CHECKSTR("noticket", GAAOPTID_noticket);
764
789
                        GAA_CHECKSTR("nodb", GAAOPTID_nodb);
765
790
                        GAA_CHECKSTR("quiet", GAAOPTID_quiet);
766
791
                        GAA_CHECKSTR("port", GAAOPTID_port);
825
850
    {
826
851
        case GAAOPTID_version:
827
852
        OK = 0;
828
 
#line 118 "serv.gaa"
 
853
#line 121 "serv.gaa"
829
854
{ serv_version(); exit(0); ;};
830
855
 
831
856
                return GAA_OK;
832
857
                break;
833
858
        case GAAOPTID_help:
834
859
        OK = 0;
835
 
#line 116 "serv.gaa"
 
860
#line 119 "serv.gaa"
836
861
{ gaa_help(); exit(0); ;};
837
862
 
838
863
                return GAA_OK;
839
864
                break;
840
865
        case GAAOPTID_list:
841
866
        OK = 0;
842
 
#line 115 "serv.gaa"
 
867
#line 118 "serv.gaa"
843
868
{ print_list(0); exit(0); ;};
844
869
 
845
870
                return GAA_OK;
849
874
                GAA_TESTMOREARGS;
850
875
                GAA_FILL(GAATMP_priority.arg1, gaa_getstr, GAATMP_priority.size1);
851
876
                gaa_index++;
852
 
#line 113 "serv.gaa"
 
877
#line 116 "serv.gaa"
853
878
{ gaaval->priorities = GAATMP_priority.arg1 ;};
854
879
 
855
880
                return GAA_OK;
857
882
        case GAAOPTID_ctypes:
858
883
        OK = 0;
859
884
                GAA_LIST_FILL(GAATMP_ctypes.arg1, gaa_getstr, char*, GAATMP_ctypes.size1);
860
 
#line 110 "serv.gaa"
 
885
#line 113 "serv.gaa"
861
886
{ gaaval->ctype = GAATMP_ctypes.arg1; gaaval->nctype = GAATMP_ctypes.size1 ;};
862
887
 
863
888
                return GAA_OK;
865
890
        case GAAOPTID_kx:
866
891
        OK = 0;
867
892
                GAA_LIST_FILL(GAATMP_kx.arg1, gaa_getstr, char*, GAATMP_kx.size1);
868
 
#line 106 "serv.gaa"
 
893
#line 109 "serv.gaa"
869
894
{ gaaval->kx = GAATMP_kx.arg1; gaaval->nkx = GAATMP_kx.size1 ;};
870
895
 
871
896
                return GAA_OK;
873
898
        case GAAOPTID_macs:
874
899
        OK = 0;
875
900
                GAA_LIST_FILL(GAATMP_macs.arg1, gaa_getstr, char*, GAATMP_macs.size1);
876
 
#line 102 "serv.gaa"
 
901
#line 105 "serv.gaa"
877
902
{ gaaval->macs = GAATMP_macs.arg1; gaaval->nmacs = GAATMP_macs.size1 ;};
878
903
 
879
904
                return GAA_OK;
881
906
        case GAAOPTID_comp:
882
907
        OK = 0;
883
908
                GAA_LIST_FILL(GAATMP_comp.arg1, gaa_getstr, char*, GAATMP_comp.size1);
884
 
#line 98 "serv.gaa"
 
909
#line 101 "serv.gaa"
885
910
{ gaaval->comp = GAATMP_comp.arg1; gaaval->ncomp = GAATMP_comp.size1 ;};
886
911
 
887
912
                return GAA_OK;
889
914
        case GAAOPTID_protocols:
890
915
        OK = 0;
891
916
                GAA_LIST_FILL(GAATMP_protocols.arg1, gaa_getstr, char*, GAATMP_protocols.size1);
892
 
#line 94 "serv.gaa"
 
917
#line 97 "serv.gaa"
893
918
{ gaaval->proto = GAATMP_protocols.arg1; gaaval->nproto = GAATMP_protocols.size1 ;};
894
919
 
895
920
                return GAA_OK;
897
922
        case GAAOPTID_ciphers:
898
923
        OK = 0;
899
924
                GAA_LIST_FILL(GAATMP_ciphers.arg1, gaa_getstr, char*, GAATMP_ciphers.size1);
900
 
#line 90 "serv.gaa"
 
925
#line 93 "serv.gaa"
901
926
{ gaaval->ciphers = GAATMP_ciphers.arg1; gaaval->nciphers = GAATMP_ciphers.size1 ;};
902
927
 
903
928
                return GAA_OK;
907
932
                GAA_TESTMOREARGS;
908
933
                GAA_FILL(GAATMP_opaque_prf_input.arg1, gaa_getstr, GAATMP_opaque_prf_input.size1);
909
934
                gaa_index++;
910
 
#line 86 "serv.gaa"
 
935
#line 89 "serv.gaa"
911
936
{ gaaval->opaque_prf_input = GAATMP_opaque_prf_input.arg1 ;};
912
937
 
913
938
                return GAA_OK;
917
942
                GAA_TESTMOREARGS;
918
943
                GAA_FILL(GAATMP_srppasswdconf.arg1, gaa_getstr, GAATMP_srppasswdconf.size1);
919
944
                gaa_index++;
920
 
#line 83 "serv.gaa"
 
945
#line 86 "serv.gaa"
921
946
{ gaaval->srp_passwd_conf = GAATMP_srppasswdconf.arg1 ;};
922
947
 
923
948
                return GAA_OK;
927
952
                GAA_TESTMOREARGS;
928
953
                GAA_FILL(GAATMP_srppasswd.arg1, gaa_getstr, GAATMP_srppasswd.size1);
929
954
                gaa_index++;
930
 
#line 80 "serv.gaa"
 
955
#line 83 "serv.gaa"
931
956
{ gaaval->srp_passwd = GAATMP_srppasswd.arg1 ;};
932
957
 
933
958
                return GAA_OK;
937
962
                GAA_TESTMOREARGS;
938
963
                GAA_FILL(GAATMP_pskhint.arg1, gaa_getstr, GAATMP_pskhint.size1);
939
964
                gaa_index++;
940
 
#line 77 "serv.gaa"
 
965
#line 80 "serv.gaa"
941
966
{ gaaval->psk_hint = GAATMP_pskhint.arg1 ;};
942
967
 
943
968
                return GAA_OK;
947
972
                GAA_TESTMOREARGS;
948
973
                GAA_FILL(GAATMP_pskpasswd.arg1, gaa_getstr, GAATMP_pskpasswd.size1);
949
974
                gaa_index++;
950
 
#line 74 "serv.gaa"
 
975
#line 77 "serv.gaa"
951
976
{ gaaval->psk_passwd = GAATMP_pskpasswd.arg1 ;};
952
977
 
953
978
                return GAA_OK;
954
979
                break;
955
980
        case GAAOPTID_disable_client_cert:
956
981
        OK = 0;
957
 
#line 71 "serv.gaa"
 
982
#line 74 "serv.gaa"
958
983
{ gaaval->disable_client_cert = 1 ;};
959
984
 
960
985
                return GAA_OK;
961
986
                break;
962
987
        case GAAOPTID_require_cert:
963
988
        OK = 0;
964
 
#line 68 "serv.gaa"
 
989
#line 71 "serv.gaa"
965
990
{ gaaval->require_cert = 1 ;};
966
991
 
967
992
                return GAA_OK;
971
996
                GAA_TESTMOREARGS;
972
997
                GAA_FILL(GAATMP_x509dsacertfile.arg1, gaa_getstr, GAATMP_x509dsacertfile.size1);
973
998
                gaa_index++;
974
 
#line 65 "serv.gaa"
 
999
#line 68 "serv.gaa"
975
1000
{ gaaval->x509_dsacertfile = GAATMP_x509dsacertfile.arg1 ;};
976
1001
 
977
1002
                return GAA_OK;
981
1006
                GAA_TESTMOREARGS;
982
1007
                GAA_FILL(GAATMP_x509dsakeyfile.arg1, gaa_getstr, GAATMP_x509dsakeyfile.size1);
983
1008
                gaa_index++;
984
 
#line 62 "serv.gaa"
 
1009
#line 65 "serv.gaa"
985
1010
{ gaaval->x509_dsakeyfile = GAATMP_x509dsakeyfile.arg1 ;};
986
1011
 
987
1012
                return GAA_OK;
991
1016
                GAA_TESTMOREARGS;
992
1017
                GAA_FILL(GAATMP_x509certfile.arg1, gaa_getstr, GAATMP_x509certfile.size1);
993
1018
                gaa_index++;
994
 
#line 59 "serv.gaa"
 
1019
#line 62 "serv.gaa"
995
1020
{ gaaval->x509_certfile = GAATMP_x509certfile.arg1 ;};
996
1021
 
997
1022
                return GAA_OK;
1001
1026
                GAA_TESTMOREARGS;
1002
1027
                GAA_FILL(GAATMP_x509keyfile.arg1, gaa_getstr, GAATMP_x509keyfile.size1);
1003
1028
                gaa_index++;
1004
 
#line 56 "serv.gaa"
 
1029
#line 59 "serv.gaa"
1005
1030
{ gaaval->x509_keyfile = GAATMP_x509keyfile.arg1 ;};
1006
1031
 
1007
1032
                return GAA_OK;
1011
1036
                GAA_TESTMOREARGS;
1012
1037
                GAA_FILL(GAATMP_pgpsubkey.arg1, gaa_getstr, GAATMP_pgpsubkey.size1);
1013
1038
                gaa_index++;
1014
 
#line 53 "serv.gaa"
 
1039
#line 56 "serv.gaa"
1015
1040
{ gaaval->pgp_subkey = GAATMP_pgpsubkey.arg1 ;};
1016
1041
 
1017
1042
                return GAA_OK;
1021
1046
                GAA_TESTMOREARGS;
1022
1047
                GAA_FILL(GAATMP_pgpcertfile.arg1, gaa_getstr, GAATMP_pgpcertfile.size1);
1023
1048
                gaa_index++;
1024
 
#line 50 "serv.gaa"
 
1049
#line 53 "serv.gaa"
1025
1050
{ gaaval->pgp_certfile = GAATMP_pgpcertfile.arg1 ;};
1026
1051
 
1027
1052
                return GAA_OK;
1031
1056
                GAA_TESTMOREARGS;
1032
1057
                GAA_FILL(GAATMP_pgpkeyfile.arg1, gaa_getstr, GAATMP_pgpkeyfile.size1);
1033
1058
                gaa_index++;
1034
 
#line 47 "serv.gaa"
 
1059
#line 50 "serv.gaa"
1035
1060
{ gaaval->pgp_keyfile = GAATMP_pgpkeyfile.arg1 ;};
1036
1061
 
1037
1062
                return GAA_OK;
1041
1066
                GAA_TESTMOREARGS;
1042
1067
                GAA_FILL(GAATMP_pgpkeyring.arg1, gaa_getstr, GAATMP_pgpkeyring.size1);
1043
1068
                gaa_index++;
1044
 
#line 44 "serv.gaa"
 
1069
#line 47 "serv.gaa"
1045
1070
{ gaaval->pgp_keyring = GAATMP_pgpkeyring.arg1 ;};
1046
1071
 
1047
1072
                return GAA_OK;
1051
1076
                GAA_TESTMOREARGS;
1052
1077
                GAA_FILL(GAATMP_x509crlfile.arg1, gaa_getstr, GAATMP_x509crlfile.size1);
1053
1078
                gaa_index++;
1054
 
#line 41 "serv.gaa"
 
1079
#line 44 "serv.gaa"
1055
1080
{ gaaval->x509_crlfile = GAATMP_x509crlfile.arg1 ;};
1056
1081
 
1057
1082
                return GAA_OK;
1061
1086
                GAA_TESTMOREARGS;
1062
1087
                GAA_FILL(GAATMP_x509cafile.arg1, gaa_getstr, GAATMP_x509cafile.size1);
1063
1088
                gaa_index++;
1064
 
#line 38 "serv.gaa"
 
1089
#line 41 "serv.gaa"
1065
1090
{ gaaval->x509_cafile = GAATMP_x509cafile.arg1 ;};
1066
1091
 
1067
1092
                return GAA_OK;
1068
1093
                break;
1069
1094
        case GAAOPTID_x509fmtder:
1070
1095
        OK = 0;
1071
 
#line 35 "serv.gaa"
 
1096
#line 38 "serv.gaa"
1072
1097
{ gaaval->fmtder = 1 ;};
1073
1098
 
1074
1099
                return GAA_OK;
1078
1103
                GAA_TESTMOREARGS;
1079
1104
                GAA_FILL(GAATMP_dhparams.arg1, gaa_getstr, GAATMP_dhparams.size1);
1080
1105
                gaa_index++;
1081
 
#line 32 "serv.gaa"
 
1106
#line 35 "serv.gaa"
1082
1107
{ gaaval->dh_params_file = GAATMP_dhparams.arg1 ;};
1083
1108
 
1084
1109
                return GAA_OK;
1085
1110
                break;
1086
1111
        case GAAOPTID_echo:
1087
1112
        OK = 0;
1088
 
#line 29 "serv.gaa"
 
1113
#line 32 "serv.gaa"
1089
1114
{ gaaval->http = 0 ;};
1090
1115
 
1091
1116
                return GAA_OK;
1092
1117
                break;
1093
1118
        case GAAOPTID_http:
1094
1119
        OK = 0;
 
1120
#line 31 "serv.gaa"
 
1121
{ gaaval->http = 1 ;};
 
1122
 
 
1123
                return GAA_OK;
 
1124
                break;
 
1125
        case GAAOPTID_noticket:
 
1126
        OK = 0;
1095
1127
#line 28 "serv.gaa"
1096
 
{ gaaval->http = 1 ;};
 
1128
{ gaaval->noticket = 1 ;};
1097
1129
 
1098
1130
                return GAA_OK;
1099
1131
                break;
1148
1180
int gaa(int argc, char **argv, gaainfo *gaaval)
1149
1181
{
1150
1182
    int tmp1, tmp2;
1151
 
    int l;
1152
 
    size_t i, j, k;
 
1183
    int i, j, k;
1153
1184
    char *opt_list;
1154
1185
 
1155
 
    i = 0;
1156
 
 
1157
1186
    GAAargv = argv;
1158
1187
    GAAargc = argc;
1159
1188
 
1160
1189
    opt_list = (char*) gaa_malloc(GAA_NB_OPTION + 1);
1161
1190
 
1162
 
    for(l = 0; l < GAA_NB_OPTION + 1; l++)
1163
 
        opt_list[l] = 0;
 
1191
    for(i = 0; i < GAA_NB_OPTION + 1; i++)
 
1192
        opt_list[i] = 0;
1164
1193
    /* initialization */
1165
1194
    if(inited == 0)
1166
1195
    {
1167
1196
 
1168
 
#line 122 "serv.gaa"
 
1197
#line 125 "serv.gaa"
1169
1198
{ gaaval->generate=0; gaaval->port=5556; gaaval->http=0; gaaval->ciphers=NULL;
1170
1199
        gaaval->kx=NULL; gaaval->comp=NULL; gaaval->macs=NULL; gaaval->ctype=NULL; gaaval->nciphers=0;
1171
 
        gaaval->nkx=0; gaaval->ncomp=0; gaaval->nmacs=0; gaaval->nctype = 0; gaaval->nodb = 0;
 
1200
        gaaval->nkx=0; gaaval->ncomp=0; gaaval->nmacs=0; gaaval->nctype = 0; gaaval->nodb = 0; gaaval->noticket = 0;
1172
1201
        gaaval->x509_cafile = NULL; gaaval->pgp_keyfile=NULL; gaaval->pgp_certfile=NULL;
1173
1202
        gaaval->x509_keyfile=NULL; gaaval->x509_certfile=NULL; gaaval->x509_crlfile = NULL;
1174
1203
        gaaval->x509_dsakeyfile=NULL; gaaval->x509_dsacertfile=NULL; 
1187
1216
      gaa_arg_used = gaa_malloc(argc * sizeof(char));
1188
1217
    }
1189
1218
 
1190
 
    for(l = 1; l < argc; l++)
1191
 
        gaa_arg_used[l] = 0;
1192
 
    for(l = 1; l < argc; l++)
 
1219
    for(i = 1; i < argc; i++)
 
1220
        gaa_arg_used[i] = 0;
 
1221
    for(i = 1; i < argc; i++)
1193
1222
    {
1194
 
        if(gaa_arg_used[l] == 0)
 
1223
        if(gaa_arg_used[i] == 0)
1195
1224
        {
1196
1225
            j = 0;
1197
 
            tmp1 = gaa_is_an_argument(GAAargv[l]);
 
1226
            tmp1 = gaa_is_an_argument(GAAargv[i]);
1198
1227
            switch(tmp1)
1199
1228
            {
1200
1229
            case GAA_WORD_OPTION:
1201
1230
                j++;
1202
1231
            case GAA_LETTER_OPTION:
1203
1232
                j++;
1204
 
                tmp2 = gaa_get_option_num(argv[l]+j, tmp1);
 
1233
                tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1205
1234
                if(tmp2 == GAA_ERROR_NOMATCH)
1206
1235
                {
1207
 
                    printf("Invalid option '%s'\n", argv[l]+j);
 
1236
                    printf("Invalid option '%s'\n", argv[i]+j);
1208
1237
                    return 0;
1209
1238
                }
1210
 
                switch(gaa_try(tmp2, l+1, gaaval, opt_list))
 
1239
                switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1211
1240
                {
1212
1241
                case GAA_ERROR_NOTENOUGH_ARGS:
1213
1242
                    printf("'%s': not enough arguments\n",gaa_current_option);
1220
1249
                default:
1221
1250
                    printf("Unknown error\n");
1222
1251
                }
1223
 
                gaa_arg_used[l] = 1;
 
1252
                gaa_arg_used[i] = 1;
1224
1253
                break;
1225
1254
            case GAA_MULTIPLE_OPTION:
1226
 
                for(j = 1; j < strlen(argv[l]); j++)
 
1255
                for(j = 1; j < strlen(argv[i]); j++)
1227
1256
                {
1228
 
                    tmp2 = gaa_get_option_num(argv[l]+j, tmp1);
 
1257
                    tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1229
1258
                    if(tmp2 == GAA_ERROR_NOMATCH)
1230
1259
                    {
1231
 
                        printf("Invalid option '%c'\n", *(argv[l]+j));
 
1260
                        printf("Invalid option '%c'\n", *(argv[i]+j));
1232
1261
                        return 0;
1233
1262
                    }
1234
 
                    switch(gaa_try(tmp2, l+1, gaaval, opt_list))
 
1263
                    switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1235
1264
                    {
1236
1265
                    case GAA_ERROR_NOTENOUGH_ARGS:
1237
1266
                        printf("'%s': not enough arguments\n",gaa_current_option);
1245
1274
                        printf("Unknown error\n");
1246
1275
                    }
1247
1276
                }
1248
 
                gaa_arg_used[l] = 1;
 
1277
                gaa_arg_used[i] = 1;
1249
1278
                break;
1250
1279
            default: break;
1251
1280
            }
1272
1301
    }
1273
1302
#endif
1274
1303
}
1275
 
    for(l = 1; l < argc; l++)
 
1304
    for(i = 1; i < argc; i++)
1276
1305
    {
1277
 
        if(gaa_arg_used[l] == 0)
 
1306
        if(gaa_arg_used[i] == 0)
1278
1307
        {
1279
1308
            printf("Too many arguments\n");
1280
1309
            return 0;
1325
1354
 
1326
1355
        len++;
1327
1356
        a = fgetc( file);
1328
 
        if(a==EOF) return 0; /* a = ' '; */
 
1357
        if(a==EOF) return 0; //a = ' ';
1329
1358
    }
1330
1359
 
1331
1360
    len += 1;