]> Cypherpunks repositories - gostls13.git/commitdiff
5a/6a/8a/5c/6c/8c: remove fixed-size arrays for -I and -D options
authorDean Prichard <dean.prichard@gmail.com>
Fri, 5 Feb 2010 09:40:58 +0000 (01:40 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 5 Feb 2010 09:40:58 +0000 (01:40 -0800)
R=rsc
CC=golang-dev
https://golang.org/cl/198044

src/cmd/5a/a.h
src/cmd/5a/lex.c
src/cmd/6a/a.h
src/cmd/6a/lex.c
src/cmd/8a/a.h
src/cmd/8a/lex.c
src/cmd/cc/cc.h
src/cmd/cc/lex.c
src/cmd/cc/lexbody

index a6b75e2b7e52d124ba71a28b6d80fbe02da691ee..6cd5af8c6b31bc145c48a6458b72643eafb022b0 100644 (file)
@@ -54,7 +54,6 @@ typedef       struct  Hist    Hist;
 #define        NSYMB           8192
 #define        BUFSIZ          8192
 #define        HISTSZ          20
-#define        NINCLUDE        10
 #define        NHUNK           10000
 #define        EOF             (-1)
 #define        IGN             (-2)
@@ -128,13 +127,13 @@ enum
 
 EXTERN char    debug[256];
 EXTERN Sym*    hash[NHASH];
-EXTERN char*   Dlist[30];
+EXTERN char**  Dlist;
 EXTERN int     nDlist;
 EXTERN Hist*   ehist;
 EXTERN int     newflag;
 EXTERN Hist*   hist;
 EXTERN char*   hunk;
-EXTERN char*   include[NINCLUDE];
+EXTERN char**  include;
 EXTERN Io*     iofree;
 EXTERN Io*     ionext;
 EXTERN Io*     iostack;
index 53ffab28315109b232091fc6d1921ae18cfd6b45..e0235d4e67963a8da7af69768c36603e7d98001d 100644 (file)
@@ -62,7 +62,7 @@ main(int argc, char *argv[])
        memset(debug, 0, sizeof(debug));
        cinit();
        outfile = 0;
-       include[ninclude++] = ".";
+       setinclude(".");
        ARGBEGIN {
        default:
                c = ARGC();
@@ -76,8 +76,12 @@ main(int argc, char *argv[])
 
        case 'D':
                p = ARGF();
-               if(p)
+               if(p) {
+                       if (nDlist%8 == 0) 
+                               Dlist = allocn(Dlist, nDlist*sizeof(char *), 
+                                       8*sizeof(char *));
                        Dlist[nDlist++] = p;
+               }
                break;
 
        case 'I':
index 34b69b6ea7c1530242ef520bdbd6bc7360547339..a713acc9f2b21930380e1283d93f565fcec7cda4 100644 (file)
@@ -57,7 +57,6 @@ typedef       struct  Gen2    Gen2;
 #define        NSYMB           500
 #define        BUFSIZ          8192
 #define        HISTSZ          20
-#define        NINCLUDE        10
 #define        NHUNK           10000
 #define        EOF             (-1)
 #define        IGN             (-2)
@@ -141,13 +140,13 @@ enum
 
 EXTERN char    debug[256];
 EXTERN Sym*    hash[NHASH];
-EXTERN char*   Dlist[30];
+EXTERN char**  Dlist;
 EXTERN int     nDlist;
 EXTERN Hist*   ehist;
 EXTERN int     newflag;
 EXTERN Hist*   hist;
 EXTERN char*   hunk;
-EXTERN char*   include[NINCLUDE];
+EXTERN char**  include;
 EXTERN Io*     iofree;
 EXTERN Io*     ionext;
 EXTERN Io*     iostack;
index f5e99342f89cbf0872389aa70c11edc4d8ed97eb..81273b29756dd3e99391c5c196441837d183558f 100644 (file)
@@ -65,7 +65,7 @@ main(int argc, char *argv[])
        memset(debug, 0, sizeof(debug));
        cinit();
        outfile = 0;
-       include[ninclude++] = ".";
+       setinclude(".");
        ARGBEGIN {
        default:
                c = ARGC();
@@ -79,8 +79,12 @@ main(int argc, char *argv[])
 
        case 'D':
                p = ARGF();
-               if(p)
+               if(p) {
+                       if (nDlist%8 == 0)
+                               Dlist = allocn(Dlist, nDlist*sizeof(char *), 
+                                       8*sizeof(char *));
                        Dlist[nDlist++] = p;
+               }
                break;
 
        case 'I':
index 9b38f5fbd184a5fef1ec86a660cb35ce21c1b4b1..035db25514d2974173a43d7db4203c469be05392 100644 (file)
@@ -57,7 +57,6 @@ typedef       struct  Gen2    Gen2;
 #define        NSYMB           500
 #define        BUFSIZ          8192
 #define        HISTSZ          20
-#define        NINCLUDE        10
 #define        NHUNK           10000
 #define        EOF             (-1)
 #define        IGN             (-2)
@@ -142,13 +141,13 @@ enum
 
 EXTERN char    debug[256];
 EXTERN Sym*    hash[NHASH];
-EXTERN char*   Dlist[30];
+EXTERN char**  Dlist;
 EXTERN int     nDlist;
 EXTERN Hist*   ehist;
 EXTERN int     newflag;
 EXTERN Hist*   hist;
 EXTERN char*   hunk;
-EXTERN char*   include[NINCLUDE];
+EXTERN char**  include;
 EXTERN Io*     iofree;
 EXTERN Io*     ionext;
 EXTERN Io*     iostack;
index 41d9c519048febc90e33f44a1765762307f78641..6903e2c66a071ab2f96c529efd56135226b09df3 100644 (file)
@@ -65,7 +65,7 @@ main(int argc, char *argv[])
        memset(debug, 0, sizeof(debug));
        cinit();
        outfile = 0;
-       include[ninclude++] = ".";
+       setinclude(".");
        ARGBEGIN {
        default:
                c = ARGC();
@@ -79,8 +79,12 @@ main(int argc, char *argv[])
 
        case 'D':
                p = ARGF();
-               if(p)
+               if(p) {
+                       if (nDlist%8 == 0)
+                               Dlist = allocn(Dlist, nDlist*sizeof(char *), 
+                                       8*sizeof(char *));
                        Dlist[nDlist++] = p;
+               }
                break;
 
        case 'I':
index 62a33ae5e75b5535c6fed362a5090e5c5f073ec1..6098bc53ac2e4fbd5e9fc3b5ebc6143ecae87159 100644 (file)
@@ -475,7 +475,7 @@ EXTERN      Decl*   firstdcl;
 EXTERN int     fperror;
 EXTERN Sym*    hash[NHASH];
 EXTERN char*   hunk;
-EXTERN char*   include[20];
+EXTERN char**  include;
 EXTERN Io*     iofree;
 EXTERN Io*     ionext;
 EXTERN Io*     iostack;
index b722ab15f65520aec589d194773946002ce27483..63916e2a144e60b80ddad94de75bdd76dbbbda08 100644 (file)
@@ -82,7 +82,7 @@ pathchar(void)
 void
 main(int argc, char *argv[])
 {
-       char *defs[50], *p;
+       char **defs, *p;
        int nproc, nout, i, c, ndef;
 
        ensuresymb(NSYMB);
@@ -94,8 +94,9 @@ main(int argc, char *argv[])
 
        tufield = simplet((1L<<tfield->etype) | BUNSIGNED);
        ndef = 0;
+       defs = nil;
        outfile = 0;
-       include[ninclude++] = ".";
+       setinclude(".");
        ARGBEGIN {
        default:
                c = ARGC();
@@ -119,6 +120,9 @@ main(int argc, char *argv[])
        case 'D':
                p = ARGF();
                if(p) {
+                       if(ndef%8 == 0)
+                               defs = allocn(defs, ndef*sizeof(char *), 
+                                       8*sizeof(char *));
                        defs[ndef++] = p;
                        dodefine(p);
                }
@@ -193,7 +197,7 @@ int
 compile(char *file, char **defs, int ndef)
 {
        char *ofile, incfile[20];
-       char *p, *av[100], opt[256];
+       char *p, **av, opt[256];
        int i, c, fd[2];
        static int first = 1;
 
@@ -283,6 +287,7 @@ compile(char *file, char **defs, int ndef)
                        close(fd[0]);
                        dup(fd[1], 1);
                        close(fd[1]);
+                       av = alloc((ndef+ninclude+5)*sizeof(char *));
                        av[0] = CPP;
                        i = 1;
                        if(debug['.']){
@@ -1548,14 +1553,10 @@ setinclude(char *p)
                        if(strcmp(p, include[i]) == 0)
                                return;
 
-               if(i >= ninclude)
-                       include[ninclude++] = p;
-
-               if(ninclude > nelem(include)) {
-                       diag(Z, "ninclude too small %d", nelem(include));
-                       exits("ninclude");
-               }
-
+               if(ninclude%8 == 0)
+                       include = allocn(include, ninclude*sizeof(char *), 
+                               8*sizeof(char *));
+               include[ninclude++] = p;
        }
 }
 
index 6be2bce92f9fc5f5b85964dfdcb96aa440b3b40d..c026a8d23947d06e460adb6af33b10372f21535a 100644 (file)
@@ -149,11 +149,10 @@ setinclude(char *p)
        for(i=1; i < ninclude; i++)
                if(strcmp(p, include[i]) == 0)
                        return;
-
-       if(ninclude >= nelem(include)) {
-               yyerror("ninclude too small %d", nelem(include));
-               exits("ninclude");
-       }
+       
+       if(ninclude%8 == 0)
+               include = allocn(include, ninclude*sizeof(char *), 
+                       8*sizeof(char *));
        include[ninclude++] = p;
 }