Module Name:    src
Committed By:   sjg
Date:           Wed Aug 10 23:49:12 UTC 2016

Modified Files:
        src/usr.bin/make: main.c make.1

Log Message:
Set .ERROR_CMD if we can


To generate a diff of this commit:
cvs rdiff -u -r1.248 -r1.249 src/usr.bin/make/main.c
cvs rdiff -u -r1.259 -r1.260 src/usr.bin/make/make.1

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

Modified files:

Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.248 src/usr.bin/make/main.c:1.249
--- src/usr.bin/make/main.c:1.248	Tue Jun  7 03:04:45 2016
+++ src/usr.bin/make/main.c	Wed Aug 10 23:49:12 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.248 2016/06/07 03:04:45 christos Exp $	*/
+/*	$NetBSD: main.c,v 1.249 2016/08/10 23:49:12 sjg Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.248 2016/06/07 03:04:45 christos Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.249 2016/08/10 23:49:12 sjg Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
@@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.248 2016/06/07 03:04:45 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.249 2016/08/10 23:49:12 sjg Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1889,6 +1889,12 @@ PrintAddr(void *a, void *b)
 }
 
 
+static int
+addErrorCMD(void *cmdp, void *gnp)
+{
+    Var_Append(".ERROR_CMD", cmdp, VAR_GLOBAL);
+    return 0;
+}
 
 void
 PrintOnError(GNode *gn, const char *s)
@@ -1909,6 +1915,8 @@ PrintOnError(GNode *gn, const char *s)
 	 * We can print this even if there is no .ERROR target.
 	 */
 	Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL, 0);
+	Var_Delete(".ERROR_CMD", VAR_GLOBAL);
+	Lst_ForEach(gn->commands, addErrorCMD, gn);
     }
     strncpy(tmp, "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}",
 	    sizeof(tmp) - 1);

Index: src/usr.bin/make/make.1
diff -u src/usr.bin/make/make.1:1.259 src/usr.bin/make/make.1:1.260
--- src/usr.bin/make/make.1:1.259	Fri Jun  3 07:07:37 2016
+++ src/usr.bin/make/make.1	Wed Aug 10 23:49:12 2016
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.259 2016/06/03 07:07:37 wiz Exp $
+.\"	$NetBSD: make.1,v 1.260 2016/08/10 23:49:12 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd June 2, 2016
+.Dd August 10, 2016
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -973,7 +973,19 @@ per normal evaluation rules.
 .It Va MAKE_PRINT_VAR_ON_ERROR
 When
 .Nm
-stops due to an error, it prints its name and the value of
+stops due to an error, it sets
+.Ql Va .ERROR_TARGET
+to the name of the target that failed,
+.Ql Va .ERROR_CMD
+to the commands of the failed target,
+and in "meta" mode, it also sets
+.Ql Va .ERROR_CWD
+to the 
+.Xr getcwd 3 ,
+and
+.Ql Va .ERROR_META_FILE
+to the path of the meta file (if any) describing the failed target.
+It then prints its name and the value of
 .Ql Va .CURDIR
 as well as the value of any variables named in
 .Ql Va MAKE_PRINT_VAR_ON_ERROR .

Reply via email to