Deleted Added
full compact
var.c (246223) var.c (249033)
1/* $NetBSD: var.c,v 1.172 2012/11/15 16:42:26 christos Exp $ */
1/* $NetBSD: var.c,v 1.173 2013/02/24 19:43:37 christos Exp $ */
2
3/*
4 * Copyright (c) 1988, 1989, 1990, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Adam de Boor.
9 *

--- 54 unchanged lines hidden (view full) ---

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
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
68 * SUCH DAMAGE.
69 */
70
71#ifndef MAKE_NATIVE
2
3/*
4 * Copyright (c) 1988, 1989, 1990, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Adam de Boor.
9 *

--- 54 unchanged lines hidden (view full) ---

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
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
68 * SUCH DAMAGE.
69 */
70
71#ifndef MAKE_NATIVE
72static char rcsid[] = "$NetBSD: var.c,v 1.172 2012/11/15 16:42:26 christos Exp $";
72static char rcsid[] = "$NetBSD: var.c,v 1.173 2013/02/24 19:43:37 christos Exp $";
73#else
74#include <sys/cdefs.h>
75#ifndef lint
76#if 0
77static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
78#else
73#else
74#include <sys/cdefs.h>
75#ifndef lint
76#if 0
77static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
78#else
79__RCSID("$NetBSD: var.c,v 1.172 2012/11/15 16:42:26 christos Exp $");
79__RCSID("$NetBSD: var.c,v 1.173 2013/02/24 19:43:37 christos Exp $");
80#endif
81#endif /* not lint */
82#endif
83
84/*-
85 * var.c --
86 * Variable-handling functions
87 *

--- 216 unchanged lines hidden (view full) ---

304static Boolean VarSubstitute(GNode *, Var_Parse_State *,
305 char *, Boolean, Buffer *, void *);
306static Boolean VarLoopExpand(GNode *, Var_Parse_State *,
307 char *, Boolean, Buffer *, void *);
308static char *VarGetPattern(GNode *, Var_Parse_State *,
309 int, const char **, int, int *, int *,
310 VarPattern *);
311static char *VarQuote(char *);
80#endif
81#endif /* not lint */
82#endif
83
84/*-
85 * var.c --
86 * Variable-handling functions
87 *

--- 216 unchanged lines hidden (view full) ---

304static Boolean VarSubstitute(GNode *, Var_Parse_State *,
305 char *, Boolean, Buffer *, void *);
306static Boolean VarLoopExpand(GNode *, Var_Parse_State *,
307 char *, Boolean, Buffer *, void *);
308static char *VarGetPattern(GNode *, Var_Parse_State *,
309 int, const char **, int, int *, int *,
310 VarPattern *);
311static char *VarQuote(char *);
312static char *VarChangeCase(char *, int);
313static char *VarHash(char *);
314static char *VarModify(GNode *, Var_Parse_State *,
315 const char *,
316 Boolean (*)(GNode *, Var_Parse_State *, char *, Boolean, Buffer *, void *),
317 void *);
318static char *VarOrder(const char *, const char);
319static char *VarUniq(const char *);
320static int VarWordCompare(const void *, const void *);

--- 2024 unchanged lines hidden (view full) ---

2345 for (len = 0; len < 8; ++len) {
2346 Buf_AddByte(&buf, hexdigits[h & 15]);
2347 h >>= 4;
2348 }
2349
2350 return Buf_Destroy(&buf, FALSE);
2351}
2352
312static char *VarHash(char *);
313static char *VarModify(GNode *, Var_Parse_State *,
314 const char *,
315 Boolean (*)(GNode *, Var_Parse_State *, char *, Boolean, Buffer *, void *),
316 void *);
317static char *VarOrder(const char *, const char);
318static char *VarUniq(const char *);
319static int VarWordCompare(const void *, const void *);

--- 2024 unchanged lines hidden (view full) ---

2344 for (len = 0; len < 8; ++len) {
2345 Buf_AddByte(&buf, hexdigits[h & 15]);
2346 h >>= 4;
2347 }
2348
2349 return Buf_Destroy(&buf, FALSE);
2350}
2351
2353/*-
2354 *-----------------------------------------------------------------------
2355 * VarChangeCase --
2356 * Change the string to all uppercase or all lowercase
2357 *
2358 * Input:
2359 * str String to modify
2360 * upper TRUE -> uppercase, else lowercase
2361 *
2362 * Results:
2363 * The string with case changed
2364 *
2365 * Side Effects:
2366 * None.
2367 *
2368 *-----------------------------------------------------------------------
2369 */
2370static char *
2352static char *
2371VarChangeCase(char *str, int upper)
2372{
2373 Buffer buf;
2374 int (*modProc)(int);
2375
2376 modProc = (upper ? toupper : tolower);
2377 Buf_Init(&buf, 0);
2378 for (; *str ; str++) {
2379 Buf_AddByte(&buf, modProc(*str));
2380 }
2381 return Buf_Destroy(&buf, FALSE);
2382}
2383
2384static char *
2385VarStrftime(const char *fmt, int zulu)
2386{
2387 char buf[BUFSIZ];
2388 time_t utc;
2389
2390 time(&utc);
2391 if (!*fmt)
2392 fmt = "%c";

--- 659 unchanged lines hidden (view full) ---

3052 * Check for two-character options:
3053 * ":tu", ":tl"
3054 */
3055 if (tstr[1] == 'A') { /* absolute path */
3056 newStr = VarModify(ctxt, &parsestate, nstr,
3057 VarRealpath, NULL);
3058 cp = tstr + 2;
3059 termc = *cp;
2353VarStrftime(const char *fmt, int zulu)
2354{
2355 char buf[BUFSIZ];
2356 time_t utc;
2357
2358 time(&utc);
2359 if (!*fmt)
2360 fmt = "%c";

--- 659 unchanged lines hidden (view full) ---

3020 * Check for two-character options:
3021 * ":tu", ":tl"
3022 */
3023 if (tstr[1] == 'A') { /* absolute path */
3024 newStr = VarModify(ctxt, &parsestate, nstr,
3025 VarRealpath, NULL);
3026 cp = tstr + 2;
3027 termc = *cp;
3060 } else if (tstr[1] == 'u' || tstr[1] == 'l') {
3061 newStr = VarChangeCase(nstr, (tstr[1] == 'u'));
3028 } else if (tstr[1] == 'u') {
3029 char *dp = bmake_strdup(nstr);
3030 for (newStr = dp; *dp; dp++)
3031 *dp = toupper((unsigned char)*dp);
3062 cp = tstr + 2;
3063 termc = *cp;
3032 cp = tstr + 2;
3033 termc = *cp;
3034 } else if (tstr[1] == 'l') {
3035 char *dp = bmake_strdup(nstr);
3036 for (newStr = dp; *dp; dp++)
3037 *dp = tolower((unsigned char)*dp);
3038 cp = tstr + 2;
3039 termc = *cp;
3064 } else if (tstr[1] == 'W' || tstr[1] == 'w') {
3065 parsestate.oneBigWord = (tstr[1] == 'W');
3066 newStr = nstr;
3067 cp = tstr + 2;
3068 termc = *cp;
3069 } else {
3070 /* Found ":t<unrecognised>:" or
3071 * ":t<unrecognised><endc>". */

--- 1127 unchanged lines hidden ---
3040 } else if (tstr[1] == 'W' || tstr[1] == 'w') {
3041 parsestate.oneBigWord = (tstr[1] == 'W');
3042 newStr = nstr;
3043 cp = tstr + 2;
3044 termc = *cp;
3045 } else {
3046 /* Found ":t<unrecognised>:" or
3047 * ":t<unrecognised><endc>". */

--- 1127 unchanged lines hidden ---