svn commit: r236346 - head/usr.bin/make
David E. O'Brien
obrien at FreeBSD.org
Thu May 31 00:36:57 UTC 2012
Author: obrien
Date: Thu May 31 00:36:56 2012
New Revision: 236346
URL: http://svn.freebsd.org/changeset/base/236346
Log:
Add "-V '${VAR}'" variable expansion from Portable Berkeley Make.
Submitted by: Simon Gerraty <sjg at juniper.net>
Modified:
head/usr.bin/make/make.1
head/usr.bin/make/var.c
Modified: head/usr.bin/make/make.1
==============================================================================
--- head/usr.bin/make/make.1 Wed May 30 23:42:48 2012 (r236345)
+++ head/usr.bin/make/make.1 Thu May 31 00:36:56 2012 (r236346)
@@ -320,6 +320,11 @@ Do not build any targets.
Multiple instances of this option may be specified;
the variables will be printed one per line,
with a blank line for each null or undefined variable.
+If
+.Ar variable
+contains a
+.Sq Ic $
+then the value will be expanded before printing.
.It Fl v
Be extra verbose.
Print any extra information.
Modified: head/usr.bin/make/var.c
==============================================================================
--- head/usr.bin/make/var.c Wed May 30 23:42:48 2012 (r236345)
+++ head/usr.bin/make/var.c Thu May 31 00:36:56 2012 (r236346)
@@ -2593,7 +2593,7 @@ void
Var_Print(Lst *vlist, Boolean expandVars)
{
LstNode *n;
- const char *name;
+ char *name;
LST_FOREACH(n, vlist) {
name = Lst_Datum(n);
@@ -2601,13 +2601,17 @@ Var_Print(Lst *vlist, Boolean expandVars
char *value;
char *v;
- v = emalloc(strlen(name) + 1 + 3);
- sprintf(v, "${%s}", name);
-
+ if (*name == '$') {
+ v = name;
+ } else {
+ v = emalloc(strlen(name) + 1 + 3);
+ sprintf(v, "${%s}", name);
+ }
value = Buf_Peel(Var_Subst(v, VAR_GLOBAL, FALSE));
printf("%s\n", value);
- free(v);
+ if (v != name)
+ free(v);
free(value);
} else {
const char *value = Var_Value(name, VAR_GLOBAL);
More information about the svn-src-head
mailing list