~ubuntu-branches/ubuntu/oneiric/gnutls26/oneiric

« back to all changes in this revision

Viewing changes to src/certtool-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:
151
151
        __gaa_helpsingle(0, "pgp-ring-info", "", "Print information on a keyring structure.");
152
152
        __gaa_helpsingle('l', "crl-info", "", "Print information on a CRL.");
153
153
        __gaa_helpsingle(0, "crq-info", "", "Print information on a Certificate Request.");
 
154
        __gaa_helpsingle(0, "no-crq-extensions", "", "Do not use extensions in certificate requests.");
154
155
        __gaa_helpsingle(0, "p12-info", "", "Print information on a PKCS #12 structure.");
155
156
        __gaa_helpsingle(0, "p7-info", "", "Print information on a PKCS #7 structure.");
156
157
        __gaa_helpsingle(0, "smime-to-p7", "", "Convert S/MIME to PKCS #7 structure.");
173
174
        __gaa_helpsingle(0, "outfile", "FILE ", "Output file.");
174
175
        __gaa_helpsingle(0, "infile", "FILE ", "Input file.");
175
176
        __gaa_helpsingle(0, "template", "FILE ", "Template file to use for non interactive operation.");
 
177
        __gaa_helpsingle(0, "pkcs-cipher", "CIPHER ", "Cipher to use for pkcs operations (3des,3des-pkcs12,aes-128,aes-192,aes-256,rc2-40,arcfour).");
176
178
        __gaa_helpsingle('d', "debug", "LEVEL ", "specify the debug level. Default is 1.");
177
179
        __gaa_helpsingle('h', "help", "", "shows this help text");
178
180
        __gaa_helpsingle('v', "version", "", "shows the program's version");
190
192
 
191
193
struct _gaainfo
192
194
{
193
 
#line 125 "certtool.gaa"
 
195
#line 131 "certtool.gaa"
194
196
        int debug;
 
197
#line 127 "certtool.gaa"
 
198
        char *pkcs_cipher;
 
199
#line 124 "certtool.gaa"
 
200
        char *template;
195
201
#line 121 "certtool.gaa"
196
 
        char *template;
 
202
        char *infile;
197
203
#line 118 "certtool.gaa"
198
 
        char *infile;
 
204
        char *outfile;
199
205
#line 115 "certtool.gaa"
200
 
        char *outfile;
 
206
        int quick_random;
201
207
#line 112 "certtool.gaa"
202
 
        int quick_random;
203
 
#line 109 "certtool.gaa"
204
208
        int bits;
205
 
#line 105 "certtool.gaa"
 
209
#line 108 "certtool.gaa"
206
210
        int outcert_format;
 
211
#line 104 "certtool.gaa"
 
212
        int incert_format;
207
213
#line 101 "certtool.gaa"
208
 
        int incert_format;
 
214
        int export;
209
215
#line 98 "certtool.gaa"
210
 
        int export;
 
216
        char *hash;
211
217
#line 95 "certtool.gaa"
212
 
        char *hash;
 
218
        int dsa;
213
219
#line 92 "certtool.gaa"
214
 
        int dsa;
215
 
#line 89 "certtool.gaa"
216
220
        int pkcs8;
 
221
#line 85 "certtool.gaa"
 
222
        int v1_cert;
217
223
#line 82 "certtool.gaa"
218
 
        int v1_cert;
219
 
#line 79 "certtool.gaa"
220
224
        int fix_key;
 
225
#line 67 "certtool.gaa"
 
226
        int crq_extensions;
221
227
#line 54 "certtool.gaa"
222
228
        char *pass;
223
229
#line 51 "certtool.gaa"
288
294
#define GAA_MULTIPLE_OPTION     3
289
295
 
290
296
#define GAA_REST                0
291
 
#define GAA_NB_OPTION           47
 
297
#define GAA_NB_OPTION           49
292
298
#define GAAOPTID_version        1
293
299
#define GAAOPTID_help   2
294
300
#define GAAOPTID_debug  3
295
 
#define GAAOPTID_template       4
296
 
#define GAAOPTID_infile 5
297
 
#define GAAOPTID_outfile        6
298
 
#define GAAOPTID_disable_quick_random   7
299
 
#define GAAOPTID_bits   8
300
 
#define GAAOPTID_outraw 9
301
 
#define GAAOPTID_outder 10
302
 
#define GAAOPTID_inraw  11
303
 
#define GAAOPTID_inder  12
304
 
#define GAAOPTID_export_ciphers 13
305
 
#define GAAOPTID_hash   14
306
 
#define GAAOPTID_dsa    15
307
 
#define GAAOPTID_pkcs8  16
308
 
#define GAAOPTID_to_p8  17
309
 
#define GAAOPTID_to_p12 18
310
 
#define GAAOPTID_v1     19
311
 
#define GAAOPTID_fix_key        20
312
 
#define GAAOPTID_pgp_key_info   21
313
 
#define GAAOPTID_key_info       22
314
 
#define GAAOPTID_smime_to_p7    23
315
 
#define GAAOPTID_p7_info        24
316
 
#define GAAOPTID_p12_info       25
317
 
#define GAAOPTID_crq_info       26
318
 
#define GAAOPTID_crl_info       27
319
 
#define GAAOPTID_pgp_ring_info  28
320
 
#define GAAOPTID_pgp_certificate_info   29
321
 
#define GAAOPTID_certificate_info       30
322
 
#define GAAOPTID_password       31
323
 
#define GAAOPTID_load_ca_certificate    32
324
 
#define GAAOPTID_load_ca_privkey        33
325
 
#define GAAOPTID_load_certificate       34
326
 
#define GAAOPTID_load_request   35
327
 
#define GAAOPTID_load_privkey   36
328
 
#define GAAOPTID_get_dh_params  37
329
 
#define GAAOPTID_generate_dh_params     38
330
 
#define GAAOPTID_verify_crl     39
331
 
#define GAAOPTID_verify_chain   40
332
 
#define GAAOPTID_generate_request       41
333
 
#define GAAOPTID_generate_privkey       42
334
 
#define GAAOPTID_update_certificate     43
335
 
#define GAAOPTID_generate_crl   44
336
 
#define GAAOPTID_generate_proxy 45
337
 
#define GAAOPTID_generate_certificate   46
338
 
#define GAAOPTID_generate_self_signed   47
 
301
#define GAAOPTID_pkcs_cipher    4
 
302
#define GAAOPTID_template       5
 
303
#define GAAOPTID_infile 6
 
304
#define GAAOPTID_outfile        7
 
305
#define GAAOPTID_disable_quick_random   8
 
306
#define GAAOPTID_bits   9
 
307
#define GAAOPTID_outraw 10
 
308
#define GAAOPTID_outder 11
 
309
#define GAAOPTID_inraw  12
 
310
#define GAAOPTID_inder  13
 
311
#define GAAOPTID_export_ciphers 14
 
312
#define GAAOPTID_hash   15
 
313
#define GAAOPTID_dsa    16
 
314
#define GAAOPTID_pkcs8  17
 
315
#define GAAOPTID_to_p8  18
 
316
#define GAAOPTID_to_p12 19
 
317
#define GAAOPTID_v1     20
 
318
#define GAAOPTID_fix_key        21
 
319
#define GAAOPTID_pgp_key_info   22
 
320
#define GAAOPTID_key_info       23
 
321
#define GAAOPTID_smime_to_p7    24
 
322
#define GAAOPTID_p7_info        25
 
323
#define GAAOPTID_p12_info       26
 
324
#define GAAOPTID_no_crq_extensions      27
 
325
#define GAAOPTID_crq_info       28
 
326
#define GAAOPTID_crl_info       29
 
327
#define GAAOPTID_pgp_ring_info  30
 
328
#define GAAOPTID_pgp_certificate_info   31
 
329
#define GAAOPTID_certificate_info       32
 
330
#define GAAOPTID_password       33
 
331
#define GAAOPTID_load_ca_certificate    34
 
332
#define GAAOPTID_load_ca_privkey        35
 
333
#define GAAOPTID_load_certificate       36
 
334
#define GAAOPTID_load_request   37
 
335
#define GAAOPTID_load_privkey   38
 
336
#define GAAOPTID_get_dh_params  39
 
337
#define GAAOPTID_generate_dh_params     40
 
338
#define GAAOPTID_verify_crl     41
 
339
#define GAAOPTID_verify_chain   42
 
340
#define GAAOPTID_generate_request       43
 
341
#define GAAOPTID_generate_privkey       44
 
342
#define GAAOPTID_update_certificate     45
 
343
#define GAAOPTID_generate_crl   46
 
344
#define GAAOPTID_generate_proxy 47
 
345
#define GAAOPTID_generate_certificate   48
 
346
#define GAAOPTID_generate_self_signed   49
339
347
 
340
348
#line 168 "gaa.skel"
341
349
 
495
503
    return tmp;
496
504
}
497
505
 
 
506
static char gaa_getchar(char *arg)
 
507
{
 
508
    if(strlen(arg) != 1)
 
509
    {
 
510
        printf("Option %s: '%s' isn't an character\n", gaa_current_option, arg);
 
511
        GAAERROR(-1);
 
512
    }
 
513
    return arg[0];
 
514
}
498
515
 
499
516
static char* gaa_getstr(char *arg)
500
517
{
501
518
    return arg;
502
519
}
503
 
 
 
520
static float gaa_getfloat(char *arg)
 
521
{
 
522
    float tmp;
 
523
    char a;
 
524
    if(sscanf(arg, "%f%c", &tmp, &a) < 1)
 
525
    {
 
526
        printf("Option %s: '%s' isn't a float number\n", gaa_current_option, arg);
 
527
        GAAERROR(-1);
 
528
    }
 
529
    return tmp;
 
530
}
504
531
/* option structures */
505
532
 
506
533
struct GAAOPTION_debug 
509
536
        int size1;
510
537
};
511
538
 
 
539
struct GAAOPTION_pkcs_cipher 
 
540
{
 
541
        char* arg1;
 
542
        int size1;
 
543
};
 
544
 
512
545
struct GAAOPTION_template 
513
546
{
514
547
        char* arg1;
605
638
        {
606
639
        case GAA_LETTER_OPTION:
607
640
                        GAA_CHECK1STR("d", GAAOPTID_debug);
 
641
                        GAA_CHECK1STR("", GAAOPTID_pkcs_cipher);
608
642
                        GAA_CHECK1STR("", GAAOPTID_template);
609
643
                        GAA_CHECK1STR("", GAAOPTID_infile);
610
644
                        GAA_CHECK1STR("", GAAOPTID_outfile);
637
671
                        GAA_CHECK1STR("", GAAOPTID_smime_to_p7);
638
672
                        GAA_CHECK1STR("", GAAOPTID_p7_info);
639
673
                        GAA_CHECK1STR("", GAAOPTID_p12_info);
 
674
                        GAA_CHECK1STR("", GAAOPTID_no_crq_extensions);
640
675
                        GAA_CHECK1STR("", GAAOPTID_crq_info);
641
676
                        GAA_CHECK1STR("l", GAAOPTID_crl_info);
642
677
                        GAA_CHECK1STR("", GAAOPTID_pgp_ring_info);
660
695
                        GAA_CHECKSTR("version", GAAOPTID_version);
661
696
                        GAA_CHECKSTR("help", GAAOPTID_help);
662
697
                        GAA_CHECKSTR("debug", GAAOPTID_debug);
 
698
                        GAA_CHECKSTR("pkcs-cipher", GAAOPTID_pkcs_cipher);
663
699
                        GAA_CHECKSTR("template", GAAOPTID_template);
664
700
                        GAA_CHECKSTR("infile", GAAOPTID_infile);
665
701
                        GAA_CHECKSTR("outfile", GAAOPTID_outfile);
682
718
                        GAA_CHECKSTR("smime-to-p7", GAAOPTID_smime_to_p7);
683
719
                        GAA_CHECKSTR("p7-info", GAAOPTID_p7_info);
684
720
                        GAA_CHECKSTR("p12-info", GAAOPTID_p12_info);
 
721
                        GAA_CHECKSTR("no-crq-extensions", GAAOPTID_no_crq_extensions);
685
722
                        GAA_CHECKSTR("crq-info", GAAOPTID_crq_info);
686
723
                        GAA_CHECKSTR("crl-info", GAAOPTID_crl_info);
687
724
                        GAA_CHECKSTR("pgp-ring-info", GAAOPTID_pgp_ring_info);
717
754
    int OK = 0;
718
755
    int gaa_last_non_option;
719
756
        struct GAAOPTION_debug GAATMP_debug;
 
757
        struct GAAOPTION_pkcs_cipher GAATMP_pkcs_cipher;
720
758
        struct GAAOPTION_template GAATMP_template;
721
759
        struct GAAOPTION_infile GAATMP_infile;
722
760
        struct GAAOPTION_outfile GAATMP_outfile;
750
788
    {
751
789
        case GAAOPTID_version:
752
790
        OK = 0;
753
 
#line 130 "certtool.gaa"
 
791
#line 136 "certtool.gaa"
754
792
{ certtool_version(); exit(0); ;};
755
793
 
756
794
                return GAA_OK;
757
795
                break;
758
796
        case GAAOPTID_help:
759
797
        OK = 0;
760
 
#line 128 "certtool.gaa"
 
798
#line 134 "certtool.gaa"
761
799
{ gaa_help(); exit(0); ;};
762
800
 
763
801
                return GAA_OK;
767
805
                GAA_TESTMOREARGS;
768
806
                GAA_FILL(GAATMP_debug.arg1, gaa_getint, GAATMP_debug.size1);
769
807
                gaa_index++;
770
 
#line 126 "certtool.gaa"
 
808
#line 132 "certtool.gaa"
771
809
{ gaaval->debug = GAATMP_debug.arg1 ;};
772
810
 
773
811
                return GAA_OK;
774
812
                break;
 
813
        case GAAOPTID_pkcs_cipher:
 
814
        OK = 0;
 
815
                GAA_TESTMOREARGS;
 
816
                GAA_FILL(GAATMP_pkcs_cipher.arg1, gaa_getstr, GAATMP_pkcs_cipher.size1);
 
817
                gaa_index++;
 
818
#line 128 "certtool.gaa"
 
819
{ gaaval->pkcs_cipher = GAATMP_pkcs_cipher.arg1 ;};
 
820
 
 
821
                return GAA_OK;
 
822
                break;
775
823
        case GAAOPTID_template:
776
824
        OK = 0;
777
825
                GAA_TESTMOREARGS;
778
826
                GAA_FILL(GAATMP_template.arg1, gaa_getstr, GAATMP_template.size1);
779
827
                gaa_index++;
780
 
#line 122 "certtool.gaa"
 
828
#line 125 "certtool.gaa"
781
829
{ gaaval->template = GAATMP_template.arg1 ;};
782
830
 
783
831
                return GAA_OK;
787
835
                GAA_TESTMOREARGS;
788
836
                GAA_FILL(GAATMP_infile.arg1, gaa_getstr, GAATMP_infile.size1);
789
837
                gaa_index++;
790
 
#line 119 "certtool.gaa"
 
838
#line 122 "certtool.gaa"
791
839
{ gaaval->infile = GAATMP_infile.arg1 ;};
792
840
 
793
841
                return GAA_OK;
797
845
                GAA_TESTMOREARGS;
798
846
                GAA_FILL(GAATMP_outfile.arg1, gaa_getstr, GAATMP_outfile.size1);
799
847
                gaa_index++;
800
 
#line 116 "certtool.gaa"
 
848
#line 119 "certtool.gaa"
801
849
{ gaaval->outfile = GAATMP_outfile.arg1 ;};
802
850
 
803
851
                return GAA_OK;
804
852
                break;
805
853
        case GAAOPTID_disable_quick_random:
806
854
        OK = 0;
807
 
#line 113 "certtool.gaa"
 
855
#line 116 "certtool.gaa"
808
856
{ gaaval->quick_random = 0; ;};
809
857
 
810
858
                return GAA_OK;
814
862
                GAA_TESTMOREARGS;
815
863
                GAA_FILL(GAATMP_bits.arg1, gaa_getint, GAATMP_bits.size1);
816
864
                gaa_index++;
817
 
#line 110 "certtool.gaa"
 
865
#line 113 "certtool.gaa"
818
866
{ gaaval->bits = GAATMP_bits.arg1 ;};
819
867
 
820
868
                return GAA_OK;
821
869
                break;
822
870
        case GAAOPTID_outraw:
823
871
        OK = 0;
824
 
#line 107 "certtool.gaa"
 
872
#line 110 "certtool.gaa"
825
873
{ gaaval->outcert_format=1 ;};
826
874
 
827
875
                return GAA_OK;
828
876
                break;
829
877
        case GAAOPTID_outder:
830
878
        OK = 0;
 
879
#line 109 "certtool.gaa"
 
880
{ gaaval->outcert_format=1 ;};
 
881
 
 
882
                return GAA_OK;
 
883
                break;
 
884
        case GAAOPTID_inraw:
 
885
        OK = 0;
831
886
#line 106 "certtool.gaa"
832
 
{ gaaval->outcert_format=1 ;};
833
 
 
834
 
                return GAA_OK;
835
 
                break;
836
 
        case GAAOPTID_inraw:
837
 
        OK = 0;
838
 
#line 103 "certtool.gaa"
839
887
{ gaaval->incert_format=1 ;};
840
888
 
841
889
                return GAA_OK;
842
890
                break;
843
891
        case GAAOPTID_inder:
844
892
        OK = 0;
 
893
#line 105 "certtool.gaa"
 
894
{ gaaval->incert_format=1 ;};
 
895
 
 
896
                return GAA_OK;
 
897
                break;
 
898
        case GAAOPTID_export_ciphers:
 
899
        OK = 0;
845
900
#line 102 "certtool.gaa"
846
 
{ gaaval->incert_format=1 ;};
847
 
 
848
 
                return GAA_OK;
849
 
                break;
850
 
        case GAAOPTID_export_ciphers:
851
 
        OK = 0;
852
 
#line 99 "certtool.gaa"
853
901
{ gaaval->export=1 ;};
854
902
 
855
903
                return GAA_OK;
859
907
                GAA_TESTMOREARGS;
860
908
                GAA_FILL(GAATMP_hash.arg1, gaa_getstr, GAATMP_hash.size1);
861
909
                gaa_index++;
862
 
#line 96 "certtool.gaa"
 
910
#line 99 "certtool.gaa"
863
911
{ gaaval->hash = GAATMP_hash.arg1 ;};
864
912
 
865
913
                return GAA_OK;
866
914
                break;
867
915
        case GAAOPTID_dsa:
868
916
        OK = 0;
869
 
#line 93 "certtool.gaa"
 
917
#line 96 "certtool.gaa"
870
918
{ gaaval->dsa=1 ;};
871
919
 
872
920
                return GAA_OK;
873
921
                break;
874
922
        case GAAOPTID_pkcs8:
875
923
        OK = 0;
876
 
#line 90 "certtool.gaa"
 
924
#line 93 "certtool.gaa"
877
925
{ gaaval->pkcs8=1 ;};
878
926
 
879
927
                return GAA_OK;
880
928
                break;
881
929
        case GAAOPTID_to_p8:
882
930
        OK = 0;
883
 
#line 87 "certtool.gaa"
 
931
#line 90 "certtool.gaa"
884
932
{ gaaval->action = ACTION_GENERATE_PKCS8; ;};
885
933
 
886
934
                return GAA_OK;
887
935
                break;
888
936
        case GAAOPTID_to_p12:
889
937
        OK = 0;
890
 
#line 85 "certtool.gaa"
 
938
#line 88 "certtool.gaa"
891
939
{ gaaval->action = ACTION_TO_PKCS12; ;};
892
940
 
893
941
                return GAA_OK;
894
942
                break;
895
943
        case GAAOPTID_v1:
896
944
        OK = 0;
897
 
#line 83 "certtool.gaa"
 
945
#line 86 "certtool.gaa"
898
946
{ gaaval->v1_cert = 1; ;};
899
947
 
900
948
                return GAA_OK;
901
949
                break;
902
950
        case GAAOPTID_fix_key:
903
951
        OK = 0;
904
 
#line 80 "certtool.gaa"
 
952
#line 83 "certtool.gaa"
905
953
{ gaaval->privkey_op=1; gaaval->fix_key = 1; ;};
906
954
 
907
955
                return GAA_OK;
908
956
                break;
909
957
        case GAAOPTID_pgp_key_info:
910
958
        OK = 0;
911
 
#line 77 "certtool.gaa"
 
959
#line 80 "certtool.gaa"
912
960
{ gaaval->privkey_op=1; gaaval->action = ACTION_PGP_PRIVKEY_INFO; ;};
913
961
 
914
962
                return GAA_OK;
915
963
                break;
916
964
        case GAAOPTID_key_info:
917
965
        OK = 0;
918
 
#line 75 "certtool.gaa"
 
966
#line 78 "certtool.gaa"
919
967
{ gaaval->privkey_op=1; gaaval->action = ACTION_PRIVKEY_INFO; ;};
920
968
 
921
969
                return GAA_OK;
922
970
                break;
923
971
        case GAAOPTID_smime_to_p7:
924
972
        OK = 0;
925
 
#line 71 "certtool.gaa"
 
973
#line 74 "certtool.gaa"
926
974
{ gaaval->action = ACTION_SMIME_TO_P7; ;};
927
975
 
928
976
                return GAA_OK;
929
977
                break;
930
978
        case GAAOPTID_p7_info:
931
979
        OK = 0;
932
 
#line 69 "certtool.gaa"
 
980
#line 72 "certtool.gaa"
933
981
{ gaaval->action = ACTION_P7_INFO; ;};
934
982
 
935
983
                return GAA_OK;
936
984
                break;
937
985
        case GAAOPTID_p12_info:
938
986
        OK = 0;
939
 
#line 67 "certtool.gaa"
 
987
#line 70 "certtool.gaa"
940
988
{ gaaval->action = ACTION_PKCS12_INFO; ;};
941
989
 
942
990
                return GAA_OK;
943
991
                break;
 
992
        case GAAOPTID_no_crq_extensions:
 
993
        OK = 0;
 
994
#line 68 "certtool.gaa"
 
995
{ gaaval->crq_extensions = 0; ;};
 
996
 
 
997
                return GAA_OK;
 
998
                break;
944
999
        case GAAOPTID_crq_info:
945
1000
        OK = 0;
946
1001
#line 65 "certtool.gaa"
1123
1178
int gaa(int argc, char **argv, gaainfo *gaaval)
1124
1179
{
1125
1180
    int tmp1, tmp2;
1126
 
    int l;
1127
 
    size_t i, j;
 
1181
    int i, j;
1128
1182
    char *opt_list;
1129
1183
 
1130
 
    i = 0;
1131
 
 
1132
1184
    GAAargv = argv;
1133
1185
    GAAargc = argc;
1134
1186
 
1135
1187
    opt_list = (char*) gaa_malloc(GAA_NB_OPTION + 1);
1136
1188
 
1137
 
    for(l = 0; l < GAA_NB_OPTION + 1; l++)
1138
 
        opt_list[l] = 0;
 
1189
    for(i = 0; i < GAA_NB_OPTION + 1; i++)
 
1190
        opt_list[i] = 0;
1139
1191
    /* initialization */
1140
1192
    if(inited == 0)
1141
1193
    {
1142
1194
 
1143
 
#line 132 "certtool.gaa"
 
1195
#line 138 "certtool.gaa"
1144
1196
{ gaaval->bits = 2048; gaaval->pkcs8 = 0; gaaval->privkey = NULL; gaaval->ca=NULL; gaaval->ca_privkey = NULL; 
1145
1197
        gaaval->debug=1; gaaval->request = NULL; gaaval->infile = NULL; gaaval->outfile = NULL; gaaval->cert = NULL; 
1146
1198
        gaaval->incert_format = 0; gaaval->outcert_format = 0; gaaval->action=-1; gaaval->pass = NULL; gaaval->v1_cert = 0;
1147
1199
        gaaval->export = 0; gaaval->template = NULL; gaaval->hash=NULL; gaaval->fix_key = 0; gaaval->quick_random=1; 
1148
 
        gaaval->privkey_op = 0; ;};
 
1200
        gaaval->privkey_op = 0; gaaval->pkcs_cipher = "aes-128"; gaaval->crq_extensions=1; ;};
1149
1201
 
1150
1202
    }
1151
1203
    inited = 1;
1156
1208
      gaa_arg_used = gaa_malloc(argc * sizeof(char));
1157
1209
    }
1158
1210
 
1159
 
    for(l = 1; l < argc; l++)
1160
 
        gaa_arg_used[l] = 0;
1161
 
    for(l = 1; l < argc; l++)
 
1211
    for(i = 1; i < argc; i++)
 
1212
        gaa_arg_used[i] = 0;
 
1213
    for(i = 1; i < argc; i++)
1162
1214
    {
1163
 
        if(gaa_arg_used[l] == 0)
 
1215
        if(gaa_arg_used[i] == 0)
1164
1216
        {
1165
1217
            j = 0;
1166
 
            tmp1 = gaa_is_an_argument(GAAargv[l]);
 
1218
            tmp1 = gaa_is_an_argument(GAAargv[i]);
1167
1219
            switch(tmp1)
1168
1220
            {
1169
1221
            case GAA_WORD_OPTION:
1170
1222
                j++;
1171
1223
            case GAA_LETTER_OPTION:
1172
1224
                j++;
1173
 
                tmp2 = gaa_get_option_num(argv[l]+j, tmp1);
 
1225
                tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1174
1226
                if(tmp2 == GAA_ERROR_NOMATCH)
1175
1227
                {
1176
 
                    printf("Invalid option '%s'\n", argv[l]+j);
 
1228
                    printf("Invalid option '%s'\n", argv[i]+j);
1177
1229
                    return 0;
1178
1230
                }
1179
 
                switch(gaa_try(tmp2, l+1, gaaval, opt_list))
 
1231
                switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1180
1232
                {
1181
1233
                case GAA_ERROR_NOTENOUGH_ARGS:
1182
1234
                    printf("'%s': not enough arguments\n",gaa_current_option);
1189
1241
                default:
1190
1242
                    printf("Unknown error\n");
1191
1243
                }
1192
 
                gaa_arg_used[l] = 1;
 
1244
                gaa_arg_used[i] = 1;
1193
1245
                break;
1194
1246
            case GAA_MULTIPLE_OPTION:
1195
 
                for(j = 1; j < strlen(argv[l]); j++)
 
1247
                for(j = 1; j < strlen(argv[i]); j++)
1196
1248
                {
1197
 
                    tmp2 = gaa_get_option_num(argv[l]+j, tmp1);
 
1249
                    tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1198
1250
                    if(tmp2 == GAA_ERROR_NOMATCH)
1199
1251
                    {
1200
 
                        printf("Invalid option '%c'\n", *(argv[l]+j));
 
1252
                        printf("Invalid option '%c'\n", *(argv[i]+j));
1201
1253
                        return 0;
1202
1254
                    }
1203
 
                    switch(gaa_try(tmp2, l+1, gaaval, opt_list))
 
1255
                    switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1204
1256
                    {
1205
1257
                    case GAA_ERROR_NOTENOUGH_ARGS:
1206
1258
                        printf("'%s': not enough arguments\n",gaa_current_option);
1214
1266
                        printf("Unknown error\n");
1215
1267
                    }
1216
1268
                }
1217
 
                gaa_arg_used[l] = 1;
 
1269
                gaa_arg_used[i] = 1;
1218
1270
                break;
1219
1271
            default: break;
1220
1272
            }
1240
1292
    }
1241
1293
#endif
1242
1294
}
1243
 
    for(l = 1; l < argc; l++)
 
1295
    for(i = 1; i < argc; i++)
1244
1296
    {
1245
 
        if(gaa_arg_used[l] == 0)
 
1297
        if(gaa_arg_used[i] == 0)
1246
1298
        {
1247
1299
            printf("Too many arguments\n");
1248
1300
            return 0;
1293
1345
 
1294
1346
        len++;
1295
1347
        a = fgetc( file);
1296
 
        if(a==EOF) return 0; /* a = ' '; */
 
1348
        if(a==EOF) return 0; //a = ' ';
1297
1349
    }
1298
1350
 
1299
1351
    len += 1;