Fri Mar 11 15:12:39 2016 UTC ()
$% is $(.MEMBER) and not $(.ARCHIVE), $! is $(.ARCHIVE) and not $(.MEMBER)


(matthias)
diff -r1.206 -r1.207 src/usr.bin/make/var.c

cvs diff -r1.206 -r1.207 src/usr.bin/make/var.c (expand / switch to unified diff)

--- src/usr.bin/make/var.c 2016/03/07 20:20:35 1.206
+++ src/usr.bin/make/var.c 2016/03/11 15:12:39 1.207
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: var.c,v 1.206 2016/03/07 20:20:35 sjg Exp $ */ 1/* $NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1988, 1989, 1990, 1993 4 * Copyright (c) 1988, 1989, 1990, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to Berkeley by 7 * This code is derived from software contributed to Berkeley by
8 * Adam de Boor. 8 * Adam de Boor.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -59,34 +59,34 @@ @@ -59,34 +59,34 @@
59 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 59 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
60 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 60 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
61 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 61 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
62 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 62 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
63 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 63 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
64 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 64 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
65 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 65 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
66 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 66 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
67 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 67 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
68 * SUCH DAMAGE. 68 * SUCH DAMAGE.
69 */ 69 */
70 70
71#ifndef MAKE_NATIVE 71#ifndef MAKE_NATIVE
72static char rcsid[] = "$NetBSD: var.c,v 1.206 2016/03/07 20:20:35 sjg Exp $"; 72static char rcsid[] = "$NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias Exp $";
73#else 73#else
74#include <sys/cdefs.h> 74#include <sys/cdefs.h>
75#ifndef lint 75#ifndef lint
76#if 0 76#if 0
77static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94"; 77static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
78#else 78#else
79__RCSID("$NetBSD: var.c,v 1.206 2016/03/07 20:20:35 sjg Exp $"); 79__RCSID("$NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias Exp $");
80#endif 80#endif
81#endif /* not lint */ 81#endif /* not lint */
82#endif 82#endif
83 83
84/*- 84/*-
85 * var.c -- 85 * var.c --
86 * Variable-handling functions 86 * Variable-handling functions
87 * 87 *
88 * Interface: 88 * Interface:
89 * Var_Set Set the value of a variable in the given 89 * Var_Set Set the value of a variable in the given
90 * context. The variable is created if it doesn't 90 * context. The variable is created if it doesn't
91 * yet exist. The value and variable name need not 91 * yet exist. The value and variable name need not
92 * be preserved. 92 * be preserved.
@@ -3690,31 +3690,31 @@ Var_Parse(const char *str, GNode *ctxt,  @@ -3690,31 +3690,31 @@ Var_Parse(const char *str, GNode *ctxt,
3690 /* 3690 /*
3691 * If substituting a local variable in a non-local context, 3691 * If substituting a local variable in a non-local context,
3692 * assume it's for dynamic source stuff. We have to handle 3692 * assume it's for dynamic source stuff. We have to handle
3693 * this specially and return the longhand for the variable 3693 * this specially and return the longhand for the variable
3694 * with the dollar sign escaped so it makes it back to the 3694 * with the dollar sign escaped so it makes it back to the
3695 * caller. Only four of the local variables are treated 3695 * caller. Only four of the local variables are treated
3696 * specially as they are the only four that will be set 3696 * specially as they are the only four that will be set
3697 * when dynamic sources are expanded. 3697 * when dynamic sources are expanded.
3698 */ 3698 */
3699 switch (str[1]) { 3699 switch (str[1]) {
3700 case '@': 3700 case '@':
3701 return UNCONST("$(.TARGET)"); 3701 return UNCONST("$(.TARGET)");
3702 case '%': 3702 case '%':
3703 return UNCONST("$(.ARCHIVE)"); 3703 return UNCONST("$(.MEMBER)");
3704 case '*': 3704 case '*':
3705 return UNCONST("$(.PREFIX)"); 3705 return UNCONST("$(.PREFIX)");
3706 case '!': 3706 case '!':
3707 return UNCONST("$(.MEMBER)"); 3707 return UNCONST("$(.ARCHIVE)");
3708 } 3708 }
3709 } 3709 }
3710 /* 3710 /*
3711 * Error 3711 * Error
3712 */ 3712 */
3713 return (flags & VARF_UNDEFERR) ? var_Error : varNoError; 3713 return (flags & VARF_UNDEFERR) ? var_Error : varNoError;
3714 } else { 3714 } else {
3715 haveModifier = FALSE; 3715 haveModifier = FALSE;
3716 tstr = &str[1]; 3716 tstr = &str[1];
3717 endc = str[1]; 3717 endc = str[1];
3718 } 3718 }
3719 } else { 3719 } else {
3720 Buffer buf; /* Holds the variable name */ 3720 Buffer buf; /* Holds the variable name */