add EGP
[unix-history] / usr / src / old / make / dosys.c
index e36f580..aa750ec 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)dosys.c     4.6 (Berkeley) 83/05/22";
+static char *sccsid = "@(#)dosys.c     4.8 (Berkeley) 84/03/21";
 #include "defs"
 #include <signal.h>
 
 #include "defs"
 #include <signal.h>
 
@@ -36,10 +36,9 @@ char *getenv(), *rindex();
 char *shellcom = getenv("SHELL");
 char *shellstr;
 #endif
 char *shellcom = getenv("SHELL");
 char *shellstr;
 #endif
-if((waitpid = fork()) == 0)
+if((waitpid = vfork()) == 0)
        {
        enbint(SIG_DFL);
        {
        enbint(SIG_DFL);
-       doclose();
 
 #ifdef SHELLENV
        if (shellcom == 0) shellcom = SHELLCOM;
 
 #ifdef SHELLENV
        if (shellcom == 0) shellcom = SHELLCOM;
@@ -72,22 +71,6 @@ waitpid = 0;
 enbint(intrupt);
 return(status);
 }
 enbint(intrupt);
 return(status);
 }
-
-
-
-
-
-
-doclose()      /* Close open directory files before exec'ing */
-{
-register struct dirhdr *od;
-
-for (od = firstod; od; od = od->nxtopendir)
-       if (od->dirfc != NULL) {
-               closedir(od->dirfc);
-               od->dirfc = NULL;
-       }
-}
 \f
 
 
 \f
 
 
@@ -120,10 +103,9 @@ for(t = str ; *t ; )
 
 *p = NULL;
 
 
 *p = NULL;
 
-if((waitpid = fork()) == 0)
+if((waitpid = vfork()) == 0)
        {
        enbint(SIG_DFL);
        {
        enbint(SIG_DFL);
-       doclose();
        enbint(intrupt);
        execvp(str, argv);
        fatal1("Cannot load %s",str);
        enbint(intrupt);
        execvp(str, argv);
        fatal1("Cannot load %s",str);
@@ -138,7 +120,6 @@ return( await() );
 
 
 
 
 
 
-
 touch(force, name)
 int force;
 char *name;
 touch(force, name)
 int force;
 char *name;