Module Name:    src
Committed By:   christos
Date:           Sun Jan 26 22:38:20 UTC 2014

Modified Files:
        src/bin/sh: eval.c jobs.c

Log Message:
explain why forks fail


To generate a diff of this commit:
cvs rdiff -u -r1.107 -r1.108 src/bin/sh/eval.c
cvs rdiff -u -r1.71 -r1.72 src/bin/sh/jobs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/sh/eval.c
diff -u src/bin/sh/eval.c:1.107 src/bin/sh/eval.c:1.108
--- src/bin/sh/eval.c:1.107	Thu Jun 27 19:22:04 2013
+++ src/bin/sh/eval.c	Sun Jan 26 17:38:20 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: eval.c,v 1.107 2013/06/27 23:22:04 yamt Exp $	*/
+/*	$NetBSD: eval.c,v 1.108 2014/01/26 22:38:20 christos Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)eval.c	8.9 (Berkeley) 6/8/95";
 #else
-__RCSID("$NetBSD: eval.c,v 1.107 2013/06/27 23:22:04 yamt Exp $");
+__RCSID("$NetBSD: eval.c,v 1.108 2014/01/26 22:38:20 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -845,15 +845,17 @@ evalcommand(union node *cmd, int flgs, s
 		 */
 		if (cmdentry.cmdtype == CMDNORMAL) {
 			pid_t	pid;
+			int serrno;
 
 			savelocalvars = localvars;
 			localvars = NULL;
 			vforked = 1;
 			switch (pid = vfork()) {
 			case -1:
-				TRACE(("Vfork failed, errno=%d\n", errno));
+				serrno = errno;
+				TRACE(("Vfork failed, errno=%d\n", serrno));
 				INTON;
-				error("Cannot vfork");
+				error("Cannot vfork (%s)", strerror(serrno));
 				break;
 			case 0:
 				/* Make sure that exceptions only unwind to

Index: src/bin/sh/jobs.c
diff -u src/bin/sh/jobs.c:1.71 src/bin/sh/jobs.c:1.72
--- src/bin/sh/jobs.c:1.71	Mon Dec 31 09:10:15 2012
+++ src/bin/sh/jobs.c	Sun Jan 26 17:38:20 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $	*/
+/*	$NetBSD: jobs.c,v 1.72 2014/01/26 22:38:20 christos Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)jobs.c	8.5 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $");
+__RCSID("$NetBSD: jobs.c,v 1.72 2014/01/26 22:38:20 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -858,14 +858,16 @@ makejob(union node *node, int nprocs)
 int
 forkshell(struct job *jp, union node *n, int mode)
 {
-	int pid;
+	pid_t pid;
+	int serrno;
 
 	TRACE(("forkshell(%%%d, %p, %d) called\n", jp - jobtab, n, mode));
 	switch ((pid = fork())) {
 	case -1:
-		TRACE(("Fork failed, errno=%d\n", errno));
+		serrno = errno;
+		TRACE(("Fork failed, errno=%d\n", serrno));
 		INTON;
-		error("Cannot fork");
+		error("Cannot fork (%s)", strerror(serrno));
 		break;
 	case 0:
 		forkchild(jp, n, mode, 0);

Reply via email to