projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cleanup, add manual pages
[unix-history]
/
usr
/
src
/
old
/
make
/
dosys.c
diff --git
a/usr/src/old/make/dosys.c
b/usr/src/old/make/dosys.c
index
de5fdb9
..
738fb70
100644
(file)
--- a/
usr/src/old/make/dosys.c
+++ b/
usr/src/old/make/dosys.c
@@
-1,4
+1,4
@@
-static char *sccsid = "@(#)dosys.c 4.
4 (Berkeley) 82/06/17
";
+static char *sccsid = "@(#)dosys.c 4.
11 (Berkeley) %G%
";
#include "defs"
#include <signal.h>
#include "defs"
#include <signal.h>
@@
-73,31
+73,32
@@
enbint(intrupt);
return(status);
}
return(status);
}
-
-
-
-
-
-doclose() /* Close open directory files before exec'ing */
+/*
+ * Close open directory files before exec'ing
+ */
+doclose()
{
register struct dirhdr *od;
for (od = firstod; od; od = od->nxtopendir)
{
register struct dirhdr *od;
for (od = firstod; od; od = od->nxtopendir)
- if (od->dirfc != NULL) {
- closedir(od->dirfc);
- od->dirfc = NULL;
- }
+ if (od->dirfc != NULL)
+ /*
+ * vfork kludge...
+ * we cannot call closedir since this will modify
+ * the parents data space; just call close directly.
+ */
+ (void)close(dirfd(od->dirfc));
}
\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
+109,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;
@@
-136,7
+139,6
@@
return( await() );
-
touch(force, name)
int force;
char *name;
touch(force, name)
int force;
char *name;