changed should_print so that C unions (VARNTs) aren't printed
[unix-history] / usr / src / old / make / dosys.c
index de5fdb9..77f39ee 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)dosys.c     4.4 (Berkeley) 82/06/17";
+static char *sccsid = "@(#)dosys.c     4.7 (Berkeley) 83/06/22";
 #include "defs"
 #include <signal.h>
 
 #include "defs"
 #include <signal.h>
 
@@ -91,13 +91,13 @@ for (od = firstod; od; od = od->nxtopendir)
 \f
 
 
 \f
 
 
-
+#define MAXARGV        400
 
 doexec(str)
 register char *str;
 {
 register char *t;
 
 doexec(str)
 register char *str;
 {
 register char *t;
-char *argv[200];
+char *argv[MAXARGV];
 register char **p;
 
 while( *str==' ' || *str=='\t' )
 register char **p;
 
 while( *str==' ' || *str=='\t' )
@@ -108,6 +108,8 @@ if( *str == '\0' )
 p = argv;
 for(t = str ; *t ; )
        {
 p = argv;
 for(t = str ; *t ; )
        {
+       if (p >= argv + MAXARGV)
+               fatal1("%s: Too many arguments.", str);
        *p++ = t;
        while(*t!=' ' && *t!='\t' && *t!='\0')
                ++t;
        *p++ = t;
        while(*t!=' ' && *t!='\t' && *t!='\0')
                ++t;
@@ -118,7 +120,7 @@ for(t = str ; *t ; )
 
 *p = NULL;
 
 
 *p = NULL;
 
-if((waitpid = vfork()) == 0)
+if((waitpid = fork()) == 0)
        {
        enbint(SIG_DFL);
        doclose();
        {
        enbint(SIG_DFL);
        doclose();
@@ -136,7 +138,6 @@ return( await() );
 
 
 
 
 
 
-
 touch(force, name)
 int force;
 char *name;
 touch(force, name)
 int force;
 char *name;