aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorJuli Mallett <jmallett@FreeBSD.org>2002-10-03 04:32:47 +0000
committerJuli Mallett <jmallett@FreeBSD.org>2002-10-03 04:32:47 +0000
commit80ce40f3944b613854d90687a8b426a6693ac173 (patch)
tree699248aab8226c738e764858c07dd30ddab43f23 /usr.bin
parenta723033a4dda06e0688f81202a984da4bbec0f40 (diff)
Notes
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/make/main.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/usr.bin/make/main.c b/usr.bin/make/main.c
index 846c8ca64aeb2..3002ef091aa89 100644
--- a/usr.bin/make/main.c
+++ b/usr.bin/make/main.c
@@ -102,6 +102,8 @@ __FBSDID("$FreeBSD$");
#include "job.h"
#include "pathnames.h"
+#define WANT_ENV_MKLVL 1
+
#ifndef DEFMAXLOCAL
#define DEFMAXLOCAL DEFMAXJOBS
#endif /* DEFMAXLOCAL */
@@ -454,6 +456,12 @@ main(argc, argv)
Boolean outOfDate = TRUE; /* FALSE if all targets up to date */
struct stat sa;
char *p, *p1, *path, *pathp;
+#ifdef WANT_ENV_MKLVL
+#define MKLVL_MAXVAL 500
+#define MKLVL_ENVVAR "__MKLVL__"
+ int iMkLvl = 0;
+ char *szMkLvl = getenv(MKLVL_ENVVAR);
+#endif /* WANT_ENV_MKLVL */
char mdpath[MAXPATHLEN];
char obpath[MAXPATHLEN];
char cdpath[MAXPATHLEN];
@@ -465,6 +473,19 @@ main(argc, argv)
/* avoid faults on read-only strings */
static char syspath[] = _PATH_DEFSYSPATH;
+#ifdef WANT_ENV_MKLVL
+ if ((iMkLvl = szMkLvl ? atoi(szMkLvl) : 0) < 0) {
+ iMkLvl = 0;
+ }
+ if (iMkLvl++ > MKLVL_MAXVAL) {
+ errc(2, EAGAIN,
+ "Max recursion level (%d) exceeded.", MKLVL_MAXVAL);
+ }
+ bzero(szMkLvl = emalloc(32), 32);
+ sprintf(szMkLvl, "%d", iMkLvl);
+ setenv(MKLVL_ENVVAR, szMkLvl, 1);
+#endif /* WANT_ENV_MKLVL */
+
#if DEFSHELL == 2
/*
* Turn off ENV to make ksh happier.