Updating usr.bin/make
Change-Id: I66b137a0368cf99267cd47a9625da8a12d8a1df7
This commit is contained in:
parent
71c7dcb9ce
commit
2bc7c627ac
@ -121,7 +121,7 @@
|
|||||||
2012/02/10 16:16:12,usr.bin/login
|
2012/02/10 16:16:12,usr.bin/login
|
||||||
2012/10/17 12:00:00,usr.bin/lorder
|
2012/10/17 12:00:00,usr.bin/lorder
|
||||||
2012/10/17 12:00:00,usr.bin/m4
|
2012/10/17 12:00:00,usr.bin/m4
|
||||||
2012/03/31 00:12:24,usr.bin/make
|
2012/10/17 12:00:00,usr.bin/make
|
||||||
2012/10/17 12:00:00,usr.bin/Makefile
|
2012/10/17 12:00:00,usr.bin/Makefile
|
||||||
2012/10/17 12:00:00,usr.bin/Makefile.inc
|
2012/10/17 12:00:00,usr.bin/Makefile.inc
|
||||||
2010/07/07 21:24:34,usr.bin/man
|
2010/07/07 21:24:34,usr.bin/man
|
||||||
|
@ -25,13 +25,7 @@ COPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
|
|||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if defined(__MINIX)
|
.if defined(__MINIX)
|
||||||
CPPFLAGS+= -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP \
|
|
||||||
-DHAVE_STRFTIME -DHAVE_VSNPRINTF -DUSE_SELECT
|
|
||||||
|
|
||||||
CPPFLAGS+= -DMAKE_MACHINE=\"${MACHINE}\" -DMAKE_MACHINE_ARCH=\"${MACHINE_ARCH}\"
|
CPPFLAGS+= -DMAKE_MACHINE=\"${MACHINE}\" -DMAKE_MACHINE_ARCH=\"${MACHINE_ARCH}\"
|
||||||
|
|
||||||
# LSC Until it compiles cleanly...
|
|
||||||
NOGCCERROR:=yes
|
|
||||||
.endif #defined(__MINIX)
|
.endif #defined(__MINIX)
|
||||||
|
|
||||||
.PATH: ${.CURDIR}/lst.lib
|
.PATH: ${.CURDIR}/lst.lib
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: arch.c,v 1.62 2010/11/27 16:00:09 christos Exp $ */
|
/* $NetBSD: arch.c,v 1.63 2012/06/12 19:21:50 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: arch.c,v 1.62 2010/11/27 16:00:09 christos Exp $";
|
static char rcsid[] = "$NetBSD: arch.c,v 1.63 2012/06/12 19:21:50 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: arch.c,v 1.62 2010/11/27 16:00:09 christos Exp $");
|
__RCSID("$NetBSD: arch.c,v 1.63 2012/06/12 19:21:50 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -1029,7 +1029,7 @@ Arch_Touch(GNode *gn)
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
#if !defined(RANLIBMAG)
|
#if !defined(RANLIBMAG)
|
||||||
Arch_TouchLib(GNode *gn __unused)
|
Arch_TouchLib(GNode *gn MAKE_ATTR_UNUSED)
|
||||||
#else
|
#else
|
||||||
Arch_TouchLib(GNode *gn)
|
Arch_TouchLib(GNode *gn)
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: buf.c,v 1.24 2009/01/17 13:29:37 dsl Exp $ */
|
/* $NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: buf.c,v 1.24 2009/01/17 13:29:37 dsl Exp $";
|
static char rcsid[] = "$NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)buf.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)buf.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: buf.c,v 1.24 2009/01/17 13:29:37 dsl Exp $");
|
__RCSID("$NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -248,3 +248,44 @@ Buf_Destroy(Buffer *buf, Boolean freeData)
|
|||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-
|
||||||
|
*-----------------------------------------------------------------------
|
||||||
|
* Buf_DestroyCompact --
|
||||||
|
* Nuke a buffer and return its data.
|
||||||
|
*
|
||||||
|
* Input:
|
||||||
|
* buf Buffer to destroy
|
||||||
|
*
|
||||||
|
* Results:
|
||||||
|
* Data buffer
|
||||||
|
*
|
||||||
|
* Side Effects:
|
||||||
|
* If the buffer size is much greater than its content,
|
||||||
|
* a new buffer will be allocated and the old one freed.
|
||||||
|
*
|
||||||
|
*-----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef BUF_COMPACT_LIMIT
|
||||||
|
# define BUF_COMPACT_LIMIT 128 /* worthwhile saving */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Byte *
|
||||||
|
Buf_DestroyCompact(Buffer *buf)
|
||||||
|
{
|
||||||
|
#if BUF_COMPACT_LIMIT > 0
|
||||||
|
Byte *data;
|
||||||
|
|
||||||
|
if (buf->size - buf->count >= BUF_COMPACT_LIMIT) {
|
||||||
|
/* We trust realloc to be smart */
|
||||||
|
data = bmake_realloc(buf->buffer, buf->count + 1);
|
||||||
|
if (data) {
|
||||||
|
data[buf->count] = 0;
|
||||||
|
Buf_Destroy(buf, FALSE);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return Buf_Destroy(buf, FALSE);
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: buf.h,v 1.16 2009/01/17 13:55:42 dsl Exp $ */
|
/* $NetBSD: buf.h,v 1.17 2012/04/24 20:26:58 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -114,5 +114,6 @@ Byte *Buf_GetAll(Buffer *, int *);
|
|||||||
void Buf_Empty(Buffer *);
|
void Buf_Empty(Buffer *);
|
||||||
void Buf_Init(Buffer *, int);
|
void Buf_Init(Buffer *, int);
|
||||||
Byte *Buf_Destroy(Buffer *, Boolean);
|
Byte *Buf_Destroy(Buffer *, Boolean);
|
||||||
|
Byte *Buf_DestroyCompact(Buffer *);
|
||||||
|
|
||||||
#endif /* _BUF_H */
|
#endif /* _BUF_H */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: compat.c,v 1.84 2011/09/16 15:38:03 joerg Exp $ */
|
/* $NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: compat.c,v 1.84 2011/09/16 15:38:03 joerg Exp $";
|
static char rcsid[] = "$NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: compat.c,v 1.84 2011/09/16 15:38:03 joerg Exp $");
|
__RCSID("$NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -121,7 +121,7 @@ static char meta[256];
|
|||||||
|
|
||||||
static GNode *curTarg = NULL;
|
static GNode *curTarg = NULL;
|
||||||
static GNode *ENDNode;
|
static GNode *ENDNode;
|
||||||
static void CompatInterrupt(int) __dead;
|
static void CompatInterrupt(int);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Compat_Init(void)
|
Compat_Init(void)
|
||||||
@ -180,7 +180,10 @@ CompatInterrupt(int signo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
exit(signo);
|
if (signo == SIGQUIT)
|
||||||
|
_exit(signo);
|
||||||
|
bmake_signal(signo, SIG_DFL);
|
||||||
|
kill(myPid, signo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -241,7 +244,6 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||||||
|
|
||||||
if (*cmdStart == '\0') {
|
if (*cmdStart == '\0') {
|
||||||
free(cmdStart);
|
free(cmdStart);
|
||||||
Error("%s expands to empty string", cmd);
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
cmd = cmdStart;
|
cmd = cmdStart;
|
||||||
@ -276,6 +278,12 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||||||
while (isspace((unsigned char)*cmd))
|
while (isspace((unsigned char)*cmd))
|
||||||
cmd++;
|
cmd++;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we did not end up with a command, just skip it.
|
||||||
|
*/
|
||||||
|
if (!*cmd)
|
||||||
|
return (0);
|
||||||
|
|
||||||
#if !defined(MAKE_NATIVE)
|
#if !defined(MAKE_NATIVE)
|
||||||
/*
|
/*
|
||||||
* In a non-native build, the host environment might be weird enough
|
* In a non-native build, the host environment might be weird enough
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: cond.c,v 1.62 2011/03/29 17:19:22 sjg Exp $ */
|
/* $NetBSD: cond.c,v 1.64 2012/06/12 19:21:50 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: cond.c,v 1.62 2011/03/29 17:19:22 sjg Exp $";
|
static char rcsid[] = "$NetBSD: cond.c,v 1.64 2012/06/12 19:21:50 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: cond.c,v 1.62 2011/03/29 17:19:22 sjg Exp $");
|
__RCSID("$NetBSD: cond.c,v 1.64 2012/06/12 19:21:50 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -327,7 +327,7 @@ CondGetArg(char **linePtr, char **argPtr, const char *func)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoDefined(int argLen __unused, const char *arg)
|
CondDoDefined(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
||||||
{
|
{
|
||||||
char *p1;
|
char *p1;
|
||||||
Boolean result;
|
Boolean result;
|
||||||
@ -376,7 +376,7 @@ CondStrMatch(const void *string, const void *pattern)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoMake(int argLen __unused, const char *arg)
|
CondDoMake(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
||||||
{
|
{
|
||||||
return Lst_Find(create, arg, CondStrMatch) != NULL;
|
return Lst_Find(create, arg, CondStrMatch) != NULL;
|
||||||
}
|
}
|
||||||
@ -395,7 +395,7 @@ CondDoMake(int argLen __unused, const char *arg)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoExists(int argLen __unused, const char *arg)
|
CondDoExists(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
||||||
{
|
{
|
||||||
Boolean result;
|
Boolean result;
|
||||||
char *path;
|
char *path;
|
||||||
@ -428,7 +428,7 @@ CondDoExists(int argLen __unused, const char *arg)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoTarget(int argLen __unused, const char *arg)
|
CondDoTarget(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
||||||
{
|
{
|
||||||
GNode *gn;
|
GNode *gn;
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ CondDoTarget(int argLen __unused, const char *arg)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoCommands(int argLen __unused, const char *arg)
|
CondDoCommands(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
||||||
{
|
{
|
||||||
GNode *gn;
|
GNode *gn;
|
||||||
|
|
||||||
@ -790,7 +790,7 @@ done:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_mpt_arg(char **linePtr, char **argPtr, const char *func __unused)
|
get_mpt_arg(char **linePtr, char **argPtr, const char *func MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Use Var_Parse to parse the spec in parens and return
|
* Use Var_Parse to parse the spec in parens and return
|
||||||
@ -831,7 +831,7 @@ get_mpt_arg(char **linePtr, char **argPtr, const char *func __unused)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Boolean
|
static Boolean
|
||||||
CondDoEmpty(int arglen, const char *arg __unused)
|
CondDoEmpty(int arglen, const char *arg MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
return arglen == 1;
|
return arglen == 1;
|
||||||
}
|
}
|
||||||
@ -1227,7 +1227,7 @@ do_Cond_EvalExpression(Boolean *value)
|
|||||||
int
|
int
|
||||||
Cond_Eval(char *line)
|
Cond_Eval(char *line)
|
||||||
{
|
{
|
||||||
#define MAXIF 64 /* maximum depth of .if'ing */
|
#define MAXIF 128 /* maximum depth of .if'ing */
|
||||||
enum if_states {
|
enum if_states {
|
||||||
IF_ACTIVE, /* .if or .elif part active */
|
IF_ACTIVE, /* .if or .elif part active */
|
||||||
ELSE_ACTIVE, /* .else part active */
|
ELSE_ACTIVE, /* .else part active */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: dir.c,v 1.64 2012/04/07 18:29:08 christos Exp $ */
|
/* $NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: dir.c,v 1.64 2012/04/07 18:29:08 christos Exp $";
|
static char rcsid[] = "$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: dir.c,v 1.64 2012/04/07 18:29:08 christos Exp $");
|
__RCSID("$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -860,8 +860,8 @@ Dir_Expand(const char *word, Lst path, Lst expansions)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
DirLookup(Path *p, const char *name __unused, const char *cp,
|
DirLookup(Path *p, const char *name MAKE_ATTR_UNUSED, const char *cp,
|
||||||
Boolean hasSlash __unused)
|
Boolean hasSlash MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
char *file; /* the current filename to check */
|
char *file; /* the current filename to check */
|
||||||
|
|
||||||
@ -1004,7 +1004,7 @@ DirLookupAbs(Path *p, const char *name, const char *cp)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
DirFindDot(Boolean hasSlash __unused, const char *name, const char *cp)
|
DirFindDot(Boolean hasSlash MAKE_ATTR_UNUSED, const char *name, const char *cp)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (Hash_FindEntry(&dot->files, cp) != NULL) {
|
if (Hash_FindEntry(&dot->files, cp) != NULL) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: for.c,v 1.48 2010/12/25 04:57:07 dholland Exp $ */
|
/* $NetBSD: for.c,v 1.49 2012/06/03 04:29:40 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, The Regents of the University of California.
|
* Copyright (c) 1992, The Regents of the University of California.
|
||||||
@ -30,14 +30,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: for.c,v 1.48 2010/12/25 04:57:07 dholland Exp $";
|
static char rcsid[] = "$NetBSD: for.c,v 1.49 2012/06/03 04:29:40 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: for.c,v 1.48 2010/12/25 04:57:07 dholland Exp $");
|
__RCSID("$NetBSD: for.c,v 1.49 2012/06/03 04:29:40 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -151,6 +151,8 @@ For_Eval(char *line)
|
|||||||
int len;
|
int len;
|
||||||
int escapes;
|
int escapes;
|
||||||
unsigned char ch;
|
unsigned char ch;
|
||||||
|
char **words, *word_buf;
|
||||||
|
int n, nwords;
|
||||||
|
|
||||||
/* Skip the '.' and any following whitespace */
|
/* Skip the '.' and any following whitespace */
|
||||||
for (ptr++; *ptr && isspace((unsigned char) *ptr); ptr++)
|
for (ptr++; *ptr && isspace((unsigned char) *ptr); ptr++)
|
||||||
@ -216,35 +218,56 @@ For_Eval(char *line)
|
|||||||
*/
|
*/
|
||||||
sub = Var_Subst(NULL, ptr, VAR_GLOBAL, FALSE);
|
sub = Var_Subst(NULL, ptr, VAR_GLOBAL, FALSE);
|
||||||
|
|
||||||
for (ptr = sub;; ptr += len) {
|
/*
|
||||||
while (*ptr && isspace((unsigned char)*ptr))
|
* Split into words allowing for quoted strings.
|
||||||
ptr++;
|
*/
|
||||||
if (*ptr == 0)
|
words = brk_string(sub, &nwords, FALSE, &word_buf);
|
||||||
break;
|
|
||||||
escapes = 0;
|
|
||||||
for (len = 0; (ch = ptr[len]) != 0 && !isspace(ch); len++) {
|
|
||||||
if (ch == ':' || ch == '$' || ch == '\\')
|
|
||||||
escapes |= FOR_SUB_ESCAPE_CHAR;
|
|
||||||
else if (ch == ')')
|
|
||||||
escapes |= FOR_SUB_ESCAPE_PAREN;
|
|
||||||
else if (ch == /*{*/ '}')
|
|
||||||
escapes |= FOR_SUB_ESCAPE_BRACE;
|
|
||||||
}
|
|
||||||
strlist_add_str(&new_for->items, make_str(ptr, len), escapes);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(sub);
|
free(sub);
|
||||||
|
|
||||||
|
if (words != NULL) {
|
||||||
|
for (n = 0; n < nwords; n++) {
|
||||||
|
ptr = words[n];
|
||||||
|
if (!*ptr)
|
||||||
|
continue;
|
||||||
|
escapes = 0;
|
||||||
|
while ((ch = *ptr++)) {
|
||||||
|
switch(ch) {
|
||||||
|
case ':':
|
||||||
|
case '$':
|
||||||
|
case '\\':
|
||||||
|
escapes |= FOR_SUB_ESCAPE_CHAR;
|
||||||
|
break;
|
||||||
|
case ')':
|
||||||
|
escapes |= FOR_SUB_ESCAPE_PAREN;
|
||||||
|
break;
|
||||||
|
case /*{*/ '}':
|
||||||
|
escapes |= FOR_SUB_ESCAPE_BRACE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* We have to dup words[n] to maintain the semantics of
|
||||||
|
* strlist.
|
||||||
|
*/
|
||||||
|
strlist_add_str(&new_for->items, bmake_strdup(words[n]), escapes);
|
||||||
|
}
|
||||||
|
|
||||||
if (strlist_num(&new_for->items) % strlist_num(&new_for->vars)) {
|
free(words);
|
||||||
Parse_Error(PARSE_FATAL,
|
free(word_buf);
|
||||||
"Wrong number of words (%d) in .for substitution list"
|
|
||||||
" with %d vars",
|
if ((len = strlist_num(&new_for->items)) > 0 &&
|
||||||
strlist_num(&new_for->items), strlist_num(&new_for->vars));
|
len % (n = strlist_num(&new_for->vars))) {
|
||||||
/*
|
Parse_Error(PARSE_FATAL,
|
||||||
* Return 'success' so that the body of the .for loop is accumulated.
|
"Wrong number of words (%d) in .for substitution list"
|
||||||
* Remove all items so that the loop doesn't iterate.
|
" with %d vars", len, n);
|
||||||
*/
|
/*
|
||||||
strlist_clean(&new_for->items);
|
* Return 'success' so that the body of the .for loop is
|
||||||
|
* accumulated.
|
||||||
|
* Remove all items so that the loop doesn't iterate.
|
||||||
|
*/
|
||||||
|
strlist_clean(&new_for->items);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Buf_Init(&new_for->buf, 0);
|
Buf_Init(&new_for->buf, 0);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: job.c,v 1.161 2012/04/07 18:29:08 christos Exp $ */
|
/* $NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: job.c,v 1.161 2012/04/07 18:29:08 christos Exp $";
|
static char rcsid[] = "$NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: job.c,v 1.161 2012/04/07 18:29:08 christos Exp $");
|
__RCSID("$NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -352,7 +352,7 @@ static int JobStart(GNode *, int);
|
|||||||
static char *JobOutput(Job *, char *, char *, int);
|
static char *JobOutput(Job *, char *, char *, int);
|
||||||
static void JobDoOutput(Job *, Boolean);
|
static void JobDoOutput(Job *, Boolean);
|
||||||
static Shell *JobMatchShell(const char *);
|
static Shell *JobMatchShell(const char *);
|
||||||
static void JobInterrupt(int, int) __dead;
|
static void JobInterrupt(int, int) MAKE_ATTR_DEAD;
|
||||||
static void JobRestartJobs(void);
|
static void JobRestartJobs(void);
|
||||||
static void JobTokenAdd(void);
|
static void JobTokenAdd(void);
|
||||||
static void JobSigLock(sigset_t *);
|
static void JobSigLock(sigset_t *);
|
||||||
@ -475,7 +475,7 @@ JobCondPassSig(int signo)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
JobChildSig(int signo __unused)
|
JobChildSig(int signo MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
write(childExitJob.outPipe, CHILD_EXIT, 1);
|
write(childExitJob.outPipe, CHILD_EXIT, 1);
|
||||||
}
|
}
|
||||||
@ -498,7 +498,7 @@ JobChildSig(int signo __unused)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
JobContinueSig(int signo __unused)
|
JobContinueSig(int signo MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Defer sending to SIGCONT to our stopped children until we return
|
* Defer sending to SIGCONT to our stopped children until we return
|
||||||
@ -523,14 +523,14 @@ JobContinueSig(int signo __unused)
|
|||||||
*
|
*
|
||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
__dead static void
|
MAKE_ATTR_DEAD static void
|
||||||
JobPassSig_int(int signo)
|
JobPassSig_int(int signo)
|
||||||
{
|
{
|
||||||
/* Run .INTERRUPT target then exit */
|
/* Run .INTERRUPT target then exit */
|
||||||
JobInterrupt(TRUE, signo);
|
JobInterrupt(TRUE, signo);
|
||||||
}
|
}
|
||||||
|
|
||||||
__dead static void
|
MAKE_ATTR_DEAD static void
|
||||||
JobPassSig_term(int signo)
|
JobPassSig_term(int signo)
|
||||||
{
|
{
|
||||||
/* Dont run .INTERRUPT target then exit */
|
/* Dont run .INTERRUPT target then exit */
|
||||||
@ -2423,7 +2423,7 @@ Job_ParseShell(char *line)
|
|||||||
* If no path was given, the user wants one of the pre-defined shells,
|
* If no path was given, the user wants one of the pre-defined shells,
|
||||||
* yes? So we find the one s/he wants with the help of JobMatchShell
|
* yes? So we find the one s/he wants with the help of JobMatchShell
|
||||||
* and set things up the right way. shellPath will be set up by
|
* and set things up the right way. shellPath will be set up by
|
||||||
* Job_Init.
|
* Shell_Init.
|
||||||
*/
|
*/
|
||||||
if (newShell.name == NULL) {
|
if (newShell.name == NULL) {
|
||||||
Parse_Error(PARSE_FATAL, "Neither path nor name specified");
|
Parse_Error(PARSE_FATAL, "Neither path nor name specified");
|
||||||
@ -2438,6 +2438,12 @@ Job_ParseShell(char *line)
|
|||||||
}
|
}
|
||||||
commandShell = sh;
|
commandShell = sh;
|
||||||
shellName = newShell.name;
|
shellName = newShell.name;
|
||||||
|
if (shellPath) {
|
||||||
|
/* Shell_Init has already been called! Do it again. */
|
||||||
|
free(UNCONST(shellPath));
|
||||||
|
shellPath = NULL;
|
||||||
|
Shell_Init();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: main.c,v 1.198 2011/09/16 15:38:04 joerg Exp $ */
|
/* $NetBSD: main.c,v 1.203 2012/08/31 07:00:36 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,7 +69,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: main.c,v 1.198 2011/09/16 15:38:04 joerg Exp $";
|
static char rcsid[] = "$NetBSD: main.c,v 1.203 2012/08/31 07:00:36 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993\
|
|||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: main.c,v 1.198 2011/09/16 15:38:04 joerg Exp $");
|
__RCSID("$NetBSD: main.c,v 1.203 2012/08/31 07:00:36 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -159,6 +159,7 @@ int maxJobs; /* -j argument */
|
|||||||
static int maxJobTokens; /* -j argument */
|
static int maxJobTokens; /* -j argument */
|
||||||
Boolean compatMake; /* -B argument */
|
Boolean compatMake; /* -B argument */
|
||||||
int debug; /* -d argument */
|
int debug; /* -d argument */
|
||||||
|
Boolean debugVflag; /* -dV */
|
||||||
Boolean noExecute; /* -n flag */
|
Boolean noExecute; /* -n flag */
|
||||||
Boolean noRecursiveExecute; /* -N flag */
|
Boolean noRecursiveExecute; /* -N flag */
|
||||||
Boolean keepgoing; /* -k flag */
|
Boolean keepgoing; /* -k flag */
|
||||||
@ -178,7 +179,7 @@ static const char * tracefile;
|
|||||||
static char * Check_Cwd_av(int, char **, int);
|
static char * Check_Cwd_av(int, char **, int);
|
||||||
static void MainParseArgs(int, char **);
|
static void MainParseArgs(int, char **);
|
||||||
static int ReadMakefile(const void *, const void *);
|
static int ReadMakefile(const void *, const void *);
|
||||||
static void usage(void) __dead;
|
static void usage(void) MAKE_ATTR_DEAD;
|
||||||
|
|
||||||
static Boolean ignorePWD; /* if we use -C, PWD is meaningless */
|
static Boolean ignorePWD; /* if we use -C, PWD is meaningless */
|
||||||
static char objdir[MAXPATHLEN + 1]; /* where we chdir'ed to */
|
static char objdir[MAXPATHLEN + 1]; /* where we chdir'ed to */
|
||||||
@ -260,6 +261,9 @@ parse_debug_options(const char *argvalue)
|
|||||||
case 't':
|
case 't':
|
||||||
debug |= DEBUG_TARG;
|
debug |= DEBUG_TARG;
|
||||||
break;
|
break;
|
||||||
|
case 'V':
|
||||||
|
debugVflag = TRUE;
|
||||||
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
debug |= DEBUG_VAR;
|
debug |= DEBUG_VAR;
|
||||||
break;
|
break;
|
||||||
@ -269,9 +273,10 @@ parse_debug_options(const char *argvalue)
|
|||||||
case 'F':
|
case 'F':
|
||||||
if (debug_file != stdout && debug_file != stderr)
|
if (debug_file != stdout && debug_file != stderr)
|
||||||
fclose(debug_file);
|
fclose(debug_file);
|
||||||
if (*++modules == '+')
|
if (*++modules == '+') {
|
||||||
|
modules++;
|
||||||
mode = "a";
|
mode = "a";
|
||||||
else
|
} else
|
||||||
mode = "w";
|
mode = "w";
|
||||||
if (strcmp(modules, "stdout") == 0) {
|
if (strcmp(modules, "stdout") == 0) {
|
||||||
debug_file = stdout;
|
debug_file = stdout;
|
||||||
@ -706,7 +711,7 @@ str2Lst_Append(Lst lp, char *str, const char *sep)
|
|||||||
#ifdef SIGINFO
|
#ifdef SIGINFO
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static void
|
static void
|
||||||
siginfo(int signo __unused)
|
siginfo(int signo MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
char dir[MAXPATHLEN];
|
char dir[MAXPATHLEN];
|
||||||
char str[2 * MAXPATHLEN];
|
char str[2 * MAXPATHLEN];
|
||||||
@ -876,6 +881,7 @@ main(int argc, char **argv)
|
|||||||
create = Lst_Init(FALSE);
|
create = Lst_Init(FALSE);
|
||||||
makefiles = Lst_Init(FALSE);
|
makefiles = Lst_Init(FALSE);
|
||||||
printVars = FALSE;
|
printVars = FALSE;
|
||||||
|
debugVflag = FALSE;
|
||||||
variables = Lst_Init(FALSE);
|
variables = Lst_Init(FALSE);
|
||||||
beSilent = FALSE; /* Print commands as executed */
|
beSilent = FALSE; /* Print commands as executed */
|
||||||
ignoreErrors = FALSE; /* Pay attention to non-zero returns */
|
ignoreErrors = FALSE; /* Pay attention to non-zero returns */
|
||||||
@ -1213,7 +1219,12 @@ main(int argc, char **argv)
|
|||||||
/* print the values of any variables requested by the user */
|
/* print the values of any variables requested by the user */
|
||||||
if (printVars) {
|
if (printVars) {
|
||||||
LstNode ln;
|
LstNode ln;
|
||||||
|
Boolean expandVars;
|
||||||
|
|
||||||
|
if (debugVflag)
|
||||||
|
expandVars = FALSE;
|
||||||
|
else
|
||||||
|
expandVars = getBoolean(".MAKE.EXPAND_VARIABLES", FALSE);
|
||||||
for (ln = Lst_First(variables); ln != NULL;
|
for (ln = Lst_First(variables); ln != NULL;
|
||||||
ln = Lst_Succ(ln)) {
|
ln = Lst_Succ(ln)) {
|
||||||
char *var = (char *)Lst_Datum(ln);
|
char *var = (char *)Lst_Datum(ln);
|
||||||
@ -1221,6 +1232,13 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
if (strchr(var, '$')) {
|
if (strchr(var, '$')) {
|
||||||
value = p1 = Var_Subst(NULL, var, VAR_GLOBAL, 0);
|
value = p1 = Var_Subst(NULL, var, VAR_GLOBAL, 0);
|
||||||
|
} else if (expandVars) {
|
||||||
|
char tmp[128];
|
||||||
|
|
||||||
|
if (snprintf(tmp, sizeof(tmp), "${%s}", var) >= (int)(sizeof(tmp)))
|
||||||
|
Fatal("%s: variable name too big: %s",
|
||||||
|
progname, var);
|
||||||
|
value = p1 = Var_Subst(NULL, tmp, VAR_GLOBAL, 0);
|
||||||
} else {
|
} else {
|
||||||
value = Var_Value(var, VAR_GLOBAL, &p1);
|
value = Var_Value(var, VAR_GLOBAL, &p1);
|
||||||
}
|
}
|
||||||
@ -1300,7 +1318,7 @@ main(int argc, char **argv)
|
|||||||
* lots
|
* lots
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
ReadMakefile(const void *p, const void *q __unused)
|
ReadMakefile(const void *p, const void *q MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
const char *fname = p; /* makefile to read */
|
const char *fname = p; /* makefile to read */
|
||||||
int fd;
|
int fd;
|
||||||
@ -2018,3 +2036,49 @@ mkTempFile(const char *pattern, char **fnamep)
|
|||||||
}
|
}
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a Boolean based on setting of a knob.
|
||||||
|
*
|
||||||
|
* If the knob is not set, the supplied default is the return value.
|
||||||
|
* If set, anything that looks or smells like "No", "False", "Off", "0" etc,
|
||||||
|
* is FALSE, otherwise TRUE.
|
||||||
|
*/
|
||||||
|
Boolean
|
||||||
|
getBoolean(const char *name, Boolean bf)
|
||||||
|
{
|
||||||
|
char tmp[64];
|
||||||
|
char *cp;
|
||||||
|
|
||||||
|
if (snprintf(tmp, sizeof(tmp), "${%s:tl}", name) < (int)(sizeof(tmp))) {
|
||||||
|
cp = Var_Subst(NULL, tmp, VAR_GLOBAL, 0);
|
||||||
|
|
||||||
|
if (cp) {
|
||||||
|
switch(*cp) {
|
||||||
|
case '\0': /* not set - the default wins */
|
||||||
|
break;
|
||||||
|
case '0':
|
||||||
|
case 'f':
|
||||||
|
case 'n':
|
||||||
|
bf = FALSE;
|
||||||
|
break;
|
||||||
|
case 'o':
|
||||||
|
switch (cp[1]) {
|
||||||
|
case 'f':
|
||||||
|
bf = FALSE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
bf = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
bf = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
free(cp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (bf);
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" $NetBSD: make.1,v 1.202 2012/04/08 22:00:39 wiz Exp $
|
.\" $NetBSD: make.1,v 1.209 2012/10/08 15:09:48 christos Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1990, 1993
|
.\" Copyright (c) 1990, 1993
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
@ -29,7 +29,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||||
.\"
|
.\"
|
||||||
.Dd March 31, 2012
|
.Dd October 8, 2012
|
||||||
.Dt MAKE 1
|
.Dt MAKE 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -203,6 +203,10 @@ Print debugging information about makefile parsing.
|
|||||||
Print debugging information about suffix-transformation rules.
|
Print debugging information about suffix-transformation rules.
|
||||||
.It Ar t
|
.It Ar t
|
||||||
Print debugging information about target list maintenance.
|
Print debugging information about target list maintenance.
|
||||||
|
.It Ar V
|
||||||
|
Force the
|
||||||
|
.Fl V
|
||||||
|
option to print raw values of variables.
|
||||||
.It Ar v
|
.It Ar v
|
||||||
Print debugging information about variable assignment.
|
Print debugging information about variable assignment.
|
||||||
.It Ar x
|
.It Ar x
|
||||||
@ -675,6 +679,10 @@ and cannot be confused with the special target with the same name.
|
|||||||
Names the makefile (default
|
Names the makefile (default
|
||||||
.Ql Pa .depend )
|
.Ql Pa .depend )
|
||||||
from which generated dependencies are read.
|
from which generated dependencies are read.
|
||||||
|
.It Va .MAKE.EXPAND_VARIABLES
|
||||||
|
A boolean that controls the default behavior of the
|
||||||
|
.Fl V
|
||||||
|
option.
|
||||||
.It Va .MAKE.EXPORTED
|
.It Va .MAKE.EXPORTED
|
||||||
The list of variables exported by
|
The list of variables exported by
|
||||||
.Nm .
|
.Nm .
|
||||||
@ -2034,6 +2042,13 @@ or
|
|||||||
To be compatible with Makefiles that do this, one can use
|
To be compatible with Makefiles that do this, one can use
|
||||||
.Fl B
|
.Fl B
|
||||||
to disable this behavior.
|
to disable this behavior.
|
||||||
|
.Pp
|
||||||
|
In compatibility mode, each command is run in a separate process.
|
||||||
|
If the command contains any shell meta characters
|
||||||
|
.Pq Ql #=|^(){};&<>*?[]:$`\e\en
|
||||||
|
it will be passed to the shell, otherwise
|
||||||
|
.Nm
|
||||||
|
will attempt direct execution.
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr mkdep 1
|
.Xr mkdep 1
|
||||||
.Sh HISTORY
|
.Sh HISTORY
|
||||||
@ -2044,7 +2059,7 @@ command appeared in
|
|||||||
This
|
This
|
||||||
.Nm
|
.Nm
|
||||||
implementation is based on Adam De Boor's pmake program which was written
|
implementation is based on Adam De Boor's pmake program which was written
|
||||||
for Sprint at Berkeley.
|
for Sprite at Berkeley.
|
||||||
It was designed to be a parallel distributed make running jobs on different
|
It was designed to be a parallel distributed make running jobs on different
|
||||||
machines using a daemon called
|
machines using a daemon called
|
||||||
.Dq customs .
|
.Dq customs .
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make.c,v 1.85 2012/04/07 18:29:08 christos Exp $ */
|
/* $NetBSD: make.c,v 1.87 2012/06/12 19:21:51 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: make.c,v 1.85 2012/04/07 18:29:08 christos Exp $";
|
static char rcsid[] = "$NetBSD: make.c,v 1.87 2012/06/12 19:21:51 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: make.c,v 1.85 2012/04/07 18:29:08 christos Exp $");
|
__RCSID("$NetBSD: make.c,v 1.87 2012/06/12 19:21:51 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -139,7 +139,7 @@ static int MakeCheckOrder(void *, void *);
|
|||||||
static int MakeBuildChild(void *, void *);
|
static int MakeBuildChild(void *, void *);
|
||||||
static int MakeBuildParent(void *, void *);
|
static int MakeBuildParent(void *, void *);
|
||||||
|
|
||||||
__dead static void
|
MAKE_ATTR_DEAD static void
|
||||||
make_abort(GNode *gn, int line)
|
make_abort(GNode *gn, int line)
|
||||||
{
|
{
|
||||||
static int two = 2;
|
static int two = 2;
|
||||||
@ -221,7 +221,7 @@ Make_OODate(GNode *gn)
|
|||||||
* doesn't depend on their modification time...
|
* doesn't depend on their modification time...
|
||||||
*/
|
*/
|
||||||
if ((gn->type & (OP_JOIN|OP_USE|OP_USEBEFORE|OP_EXEC)) == 0) {
|
if ((gn->type & (OP_JOIN|OP_USE|OP_USEBEFORE|OP_EXEC)) == 0) {
|
||||||
(void)Dir_MTime(gn, 0);
|
(void)Dir_MTime(gn, 1);
|
||||||
if (DEBUG(MAKE)) {
|
if (DEBUG(MAKE)) {
|
||||||
if (gn->mtime != 0) {
|
if (gn->mtime != 0) {
|
||||||
fprintf(debug_file, "modified %s...", Targ_FmtTime(gn->mtime));
|
fprintf(debug_file, "modified %s...", Targ_FmtTime(gn->mtime));
|
||||||
@ -867,7 +867,7 @@ Make_Update(GNode *cgn)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
MakeUnmark(void *cgnp, void *pgnp __unused)
|
MakeUnmark(void *cgnp, void *pgnp MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
GNode *cgn = (GNode *)cgnp;
|
GNode *cgn = (GNode *)cgnp;
|
||||||
|
|
||||||
@ -1005,7 +1005,7 @@ Make_DoAllVar(GNode *gn)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
MakeCheckOrder(void *v_bn, void *ignore __unused)
|
MakeCheckOrder(void *v_bn, void *ignore MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
GNode *bn = v_bn;
|
GNode *bn = v_bn;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make.h,v 1.87 2011/09/16 15:38:04 joerg Exp $ */
|
/* $NetBSD: make.h,v 1.89 2012/06/12 19:21:51 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -93,26 +93,33 @@
|
|||||||
# include <sys/cdefs.h>
|
# include <sys/cdefs.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__GNUC_PREREQ__)
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#define __GNUC_PREREQ__(x, y) \
|
#define MAKE_GNUC_PREREQ(x, y) \
|
||||||
((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \
|
((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \
|
||||||
(__GNUC__ > (x)))
|
(__GNUC__ > (x)))
|
||||||
#else /* defined(__GNUC__) */
|
#else /* defined(__GNUC__) */
|
||||||
#define __GNUC_PREREQ__(x, y) 0
|
#define MAKE_GNUC_PREREQx, y) 0
|
||||||
#endif /* defined(__GNUC__) */
|
#endif /* defined(__GNUC__) */
|
||||||
#endif /* !defined(__GNUC_PREREQ__) */
|
|
||||||
|
|
||||||
#if !defined(__unused)
|
#if MAKE_GNUC_PREREQ(2, 7)
|
||||||
#if __GNUC_PREREQ__(2, 7)
|
#define MAKE_ATTR_UNUSED __attribute__((__unused__))
|
||||||
#define __unused __attribute__((__unused__))
|
|
||||||
#else
|
#else
|
||||||
#define __unused /* delete */
|
#define MAKE_ATTR_UNUSED /* delete */
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__dead)
|
#if MAKE_GNUC_PREREQ(2, 5)
|
||||||
#define __dead
|
#define MAKE_ATTR_DEAD __attribute__((__noreturn__))
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#define MAKE_ATTR_DEAD __volatile
|
||||||
|
#else
|
||||||
|
#define MAKE_ATTR_DEAD /* delete */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if MAKE_GNUC_PREREQ(2, 7)
|
||||||
|
#define MAKE_ATTR_PRINTFLIKE(fmtarg, firstvararg) \
|
||||||
|
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
|
||||||
|
#else
|
||||||
|
#define MAKE_ATTR_PRINTFLIKE(fmtarg, firstvararg) /* delete */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
@ -401,6 +408,7 @@ extern Lst defIncPath; /* The default include path. */
|
|||||||
extern char curdir[]; /* Startup directory */
|
extern char curdir[]; /* Startup directory */
|
||||||
extern char *progname; /* The program name */
|
extern char *progname; /* The program name */
|
||||||
extern char *makeDependfile; /* .depend */
|
extern char *makeDependfile; /* .depend */
|
||||||
|
extern char **savedEnv; /* if we replaced environ this will be non-NULL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We cannot vfork() in a child of vfork().
|
* We cannot vfork() in a child of vfork().
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make_malloc.c,v 1.6 2010/12/25 20:35:25 dholland Exp $ */
|
/* $NetBSD: make_malloc.c,v 1.10 2012/06/20 17:46:28 sjg Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
||||||
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#ifdef MAKE_NATIVE
|
#ifdef MAKE_NATIVE
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: make_malloc.c,v 1.6 2010/12/25 20:35:25 dholland Exp $");
|
__RCSID("$NetBSD: make_malloc.c,v 1.10 2012/06/20 17:46:28 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -36,9 +36,11 @@ __RCSID("$NetBSD: make_malloc.c,v 1.6 2010/12/25 20:35:25 dholland Exp $");
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "make_malloc.h"
|
#include "make.h"
|
||||||
|
|
||||||
#ifndef USE_EMALLOC
|
#ifndef USE_EMALLOC
|
||||||
|
static void enomem(void) MAKE_ATTR_DEAD;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* enomem --
|
* enomem --
|
||||||
* die when out of memory.
|
* die when out of memory.
|
||||||
@ -46,8 +48,6 @@ __RCSID("$NetBSD: make_malloc.c,v 1.6 2010/12/25 20:35:25 dholland Exp $");
|
|||||||
static void
|
static void
|
||||||
enomem(void)
|
enomem(void)
|
||||||
{
|
{
|
||||||
extern char *progname;
|
|
||||||
|
|
||||||
(void)fprintf(stderr, "%s: %s.\n", progname, strerror(ENOMEM));
|
(void)fprintf(stderr, "%s: %s.\n", progname, strerror(ENOMEM));
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: meta.c,v 1.24 2011/09/21 14:30:47 christos Exp $ */
|
/* $NetBSD: meta.c,v 1.25 2012/06/27 17:22:58 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implement 'meta' mode.
|
* Implement 'meta' mode.
|
||||||
@ -68,6 +68,7 @@ static Boolean metaSilent = FALSE; /* if we have a .meta be SILENT */
|
|||||||
|
|
||||||
extern Boolean forceJobs;
|
extern Boolean forceJobs;
|
||||||
extern Boolean comatMake;
|
extern Boolean comatMake;
|
||||||
|
extern char **environ;
|
||||||
|
|
||||||
#define MAKE_META_PREFIX ".MAKE.META.PREFIX"
|
#define MAKE_META_PREFIX ".MAKE.META.PREFIX"
|
||||||
|
|
||||||
@ -388,7 +389,6 @@ printCMD(void *cmdp, void *mfpp)
|
|||||||
static FILE *
|
static FILE *
|
||||||
meta_create(BuildMon *pbm, GNode *gn)
|
meta_create(BuildMon *pbm, GNode *gn)
|
||||||
{
|
{
|
||||||
extern char **environ;
|
|
||||||
meta_file_t mf;
|
meta_file_t mf;
|
||||||
char buf[MAXPATHLEN];
|
char buf[MAXPATHLEN];
|
||||||
char objdir[MAXPATHLEN];
|
char objdir[MAXPATHLEN];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: nonints.h,v 1.63 2011/09/16 15:38:04 joerg Exp $ */
|
/* $NetBSD: nonints.h,v 1.65 2012/08/30 21:17:05 sjg Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -72,11 +72,6 @@
|
|||||||
* from: @(#)nonints.h 8.3 (Berkeley) 3/19/94
|
* from: @(#)nonints.h 8.3 (Berkeley) 3/19/94
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
|
||||||
#undef __attribute__
|
|
||||||
#define __attribute__(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* arch.c */
|
/* arch.c */
|
||||||
ReturnStatus Arch_ParseArchive(char **, Lst, GNode *);
|
ReturnStatus Arch_ParseArchive(char **, Lst, GNode *);
|
||||||
void Arch_Touch(GNode *);
|
void Arch_Touch(GNode *);
|
||||||
@ -114,21 +109,19 @@ void Main_ParseArgLine(const char *);
|
|||||||
void MakeMode(const char *);
|
void MakeMode(const char *);
|
||||||
int main(int, char **);
|
int main(int, char **);
|
||||||
char *Cmd_Exec(const char *, const char **);
|
char *Cmd_Exec(const char *, const char **);
|
||||||
void Error(const char *, ...) __attribute__((__format__(__printf__, 1, 2)));
|
void Error(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2);
|
||||||
void Fatal(const char *, ...)
|
void Fatal(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2) MAKE_ATTR_DEAD;
|
||||||
__attribute__((__format__(__printf__, 1, 2),__noreturn__));
|
void Punt(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2) MAKE_ATTR_DEAD;
|
||||||
void Punt(const char *, ...)
|
void DieHorribly(void) MAKE_ATTR_DEAD;
|
||||||
__attribute__((__format__(__printf__, 1, 2),__noreturn__));
|
|
||||||
void DieHorribly(void) __attribute__((__noreturn__));
|
|
||||||
int PrintAddr(void *, void *);
|
int PrintAddr(void *, void *);
|
||||||
void Finish(int) __dead;
|
void Finish(int) MAKE_ATTR_DEAD;
|
||||||
int eunlink(const char *);
|
int eunlink(const char *);
|
||||||
void execError(const char *, const char *);
|
void execError(const char *, const char *);
|
||||||
char *getTmpdir(void);
|
char *getTmpdir(void);
|
||||||
|
Boolean getBoolean(const char *, Boolean);
|
||||||
|
|
||||||
/* parse.c */
|
/* parse.c */
|
||||||
void Parse_Error(int, const char *, ...)
|
void Parse_Error(int, const char *, ...) MAKE_ATTR_PRINTFLIKE(2, 3);
|
||||||
__attribute__((__format__(__printf__, 2, 3)));
|
|
||||||
Boolean Parse_AnyExport(void);
|
Boolean Parse_AnyExport(void);
|
||||||
Boolean Parse_IsVar(char *);
|
Boolean Parse_IsVar(char *);
|
||||||
void Parse_DoVar(char *, GNode *);
|
void Parse_DoVar(char *, GNode *);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: parse.c,v 1.182 2012/03/31 00:12:24 christos Exp $ */
|
/* $NetBSD: parse.c,v 1.185 2012/06/12 19:21:51 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: parse.c,v 1.182 2012/03/31 00:12:24 christos Exp $";
|
static char rcsid[] = "$NetBSD: parse.c,v 1.185 2012/06/12 19:21:51 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: parse.c,v 1.182 2012/03/31 00:12:24 christos Exp $");
|
__RCSID("$NetBSD: parse.c,v 1.185 2012/06/12 19:21:51 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -344,9 +344,9 @@ static const struct {
|
|||||||
|
|
||||||
static int ParseIsEscaped(const char *, const char *);
|
static int ParseIsEscaped(const char *, const char *);
|
||||||
static void ParseErrorInternal(const char *, size_t, int, const char *, ...)
|
static void ParseErrorInternal(const char *, size_t, int, const char *, ...)
|
||||||
__attribute__((__format__(__printf__, 4, 5)));
|
MAKE_ATTR_PRINTFLIKE(4,5);
|
||||||
static void ParseVErrorInternal(FILE *, const char *, size_t, int, const char *, va_list)
|
static void ParseVErrorInternal(FILE *, const char *, size_t, int, const char *, va_list)
|
||||||
__attribute__((__format__(__printf__, 5, 0)));
|
MAKE_ATTR_PRINTFLIKE(5, 0);
|
||||||
static int ParseFindKeyword(const char *);
|
static int ParseFindKeyword(const char *);
|
||||||
static int ParseLinkSrc(void *, void *);
|
static int ParseLinkSrc(void *, void *);
|
||||||
static int ParseDoOp(void *, void *);
|
static int ParseDoOp(void *, void *);
|
||||||
@ -430,6 +430,7 @@ loadedfile_nextbuf(void *x, size_t *len)
|
|||||||
return lf->buf;
|
return lf->buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __minix
|
||||||
/*
|
/*
|
||||||
* Try to get the size of a file.
|
* Try to get the size of a file.
|
||||||
*/
|
*/
|
||||||
@ -462,6 +463,7 @@ load_getsize(int fd, size_t *ret)
|
|||||||
*ret = (size_t) st.st_size;
|
*ret = (size_t) st.st_size;
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif /* ndef __minix */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read in a file.
|
* Read in a file.
|
||||||
@ -477,7 +479,9 @@ static struct loadedfile *
|
|||||||
loadfile(const char *path, int fd)
|
loadfile(const char *path, int fd)
|
||||||
{
|
{
|
||||||
struct loadedfile *lf;
|
struct loadedfile *lf;
|
||||||
|
#ifndef __minix
|
||||||
long pagesize;
|
long pagesize;
|
||||||
|
#endif
|
||||||
ssize_t result;
|
ssize_t result;
|
||||||
size_t bufpos;
|
size_t bufpos;
|
||||||
|
|
||||||
@ -536,6 +540,7 @@ loadfile(const char *path, int fd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* cannot mmap; load the traditional way */
|
/* cannot mmap; load the traditional way */
|
||||||
|
|
||||||
lf->maplen = 0;
|
lf->maplen = 0;
|
||||||
@ -567,7 +572,9 @@ loadfile(const char *path, int fd)
|
|||||||
lf->buf = bmake_realloc(lf->buf, lf->len);
|
lf->buf = bmake_realloc(lf->buf, lf->len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __minix
|
||||||
done:
|
done:
|
||||||
|
#endif /* !defined(__minix) */
|
||||||
if (path != NULL) {
|
if (path != NULL) {
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
@ -2408,7 +2415,7 @@ ParseTraditionalInclude(char *line)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SYSVINCLUDE
|
#ifdef GMAKEEXPORT
|
||||||
/*-
|
/*-
|
||||||
*---------------------------------------------------------------------
|
*---------------------------------------------------------------------
|
||||||
* ParseGmakeExport --
|
* ParseGmakeExport --
|
||||||
@ -2430,7 +2437,7 @@ ParseGmakeExport(char *line)
|
|||||||
char *value;
|
char *value;
|
||||||
|
|
||||||
if (DEBUG(PARSE)) {
|
if (DEBUG(PARSE)) {
|
||||||
fprintf(debug_file, "ParseTraditionalInclude: %s\n", variable);
|
fprintf(debug_file, "ParseGmakeExport: %s\n", variable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2444,13 +2451,12 @@ ParseGmakeExport(char *line)
|
|||||||
|
|
||||||
if (*value != '=') {
|
if (*value != '=') {
|
||||||
Parse_Error(PARSE_FATAL,
|
Parse_Error(PARSE_FATAL,
|
||||||
"Variable/Value missing from \"include\"");
|
"Variable/Value missing from \"export\"");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Substitute for any variables in the file name before trying to
|
* Expand the value before putting it in the environment.
|
||||||
* find the thing.
|
|
||||||
*/
|
*/
|
||||||
value = Var_Subst(NULL, value, VAR_CMD, FALSE);
|
value = Var_Subst(NULL, value, VAR_CMD, FALSE);
|
||||||
setenv(variable, value, 1);
|
setenv(variable, value, 1);
|
||||||
@ -2911,7 +2917,7 @@ Parse_File(const char *name, int fd)
|
|||||||
isspace((unsigned char) line[6]) &&
|
isspace((unsigned char) line[6]) &&
|
||||||
strchr(line, ':') == NULL) {
|
strchr(line, ':') == NULL) {
|
||||||
/*
|
/*
|
||||||
* It's an Gmake"export".
|
* It's a Gmake "export".
|
||||||
*/
|
*/
|
||||||
ParseGmakeExport(line);
|
ParseGmakeExport(line);
|
||||||
continue;
|
continue;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: targ.c,v 1.56 2010/11/25 21:31:09 christos Exp $ */
|
/* $NetBSD: targ.c,v 1.57 2012/06/12 19:21:51 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: targ.c,v 1.56 2010/11/25 21:31:09 christos Exp $";
|
static char rcsid[] = "$NetBSD: targ.c,v 1.57 2012/06/12 19:21:51 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: targ.c,v 1.56 2010/11/25 21:31:09 christos Exp $");
|
__RCSID("$NetBSD: targ.c,v 1.57 2012/06/12 19:21:51 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -512,7 +512,7 @@ Targ_SetMain(GNode *gn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
TargPrintName(void *gnp, void *pflags __unused)
|
TargPrintName(void *gnp, void *pflags MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
GNode *gn = (GNode *)gnp;
|
GNode *gn = (GNode *)gnp;
|
||||||
|
|
||||||
@ -717,7 +717,7 @@ Targ_PrintNode(void *gnp, void *passp)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
TargPrintOnlySrc(void *gnp, void *dummy __unused)
|
TargPrintOnlySrc(void *gnp, void *dummy MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
GNode *gn = (GNode *)gnp;
|
GNode *gn = (GNode *)gnp;
|
||||||
if (!OP_NOP(gn->type))
|
if (!OP_NOP(gn->type))
|
||||||
@ -790,7 +790,7 @@ Targ_PrintGraph(int pass)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
TargPropagateNode(void *gnp, void *junk __unused)
|
TargPropagateNode(void *gnp, void *junk MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
GNode *gn = (GNode *)gnp;
|
GNode *gn = (GNode *)gnp;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $NetBSD: Makefile,v 1.33 2011/09/29 23:38:04 sjg Exp $
|
# $NetBSD: Makefile,v 1.34 2012/06/19 23:25:53 sjg Exp $
|
||||||
#
|
#
|
||||||
# Unit tests for make(1)
|
# Unit tests for make(1)
|
||||||
# The main targets are:
|
# The main targets are:
|
||||||
@ -26,6 +26,7 @@ SUBFILES= \
|
|||||||
export-all \
|
export-all \
|
||||||
doterror \
|
doterror \
|
||||||
dotwait \
|
dotwait \
|
||||||
|
forloop \
|
||||||
forsubst \
|
forsubst \
|
||||||
hash \
|
hash \
|
||||||
misc \
|
misc \
|
||||||
|
45
usr.bin/make/unit-tests/forloop
Normal file
45
usr.bin/make/unit-tests/forloop
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# $Id: forloop,v 1.1 2012/06/19 23:25:53 sjg Exp $
|
||||||
|
|
||||||
|
all: for-loop
|
||||||
|
|
||||||
|
LIST = one "two and three" four "five"
|
||||||
|
|
||||||
|
.if make(for-fail)
|
||||||
|
for-fail:
|
||||||
|
|
||||||
|
XTRA_LIST = xtra
|
||||||
|
.else
|
||||||
|
|
||||||
|
.for x in ${LIST}
|
||||||
|
X!= echo 'x=$x' >&2; echo
|
||||||
|
.endfor
|
||||||
|
|
||||||
|
CFL = -I/this -I"This or that" -Ithat "-DTHIS=\"this and that\""
|
||||||
|
cfl=
|
||||||
|
.for x in ${CFL}
|
||||||
|
X!= echo 'x=$x' >&2; echo
|
||||||
|
.if empty(cfl)
|
||||||
|
cfl= $x
|
||||||
|
.else
|
||||||
|
cfl+= $x
|
||||||
|
.endif
|
||||||
|
.endfor
|
||||||
|
X!= echo 'cfl=${cfl}' >&2; echo
|
||||||
|
|
||||||
|
.if ${cfl} != ${CFL}
|
||||||
|
.error ${.newline}'${cfl}' != ${.newline}'${CFL}'
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.for a b in ${EMPTY}
|
||||||
|
X!= echo 'a=$a b=$b' >&2; echo
|
||||||
|
.endfor
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.for a b in ${LIST} ${LIST:tu} ${XTRA_LIST}
|
||||||
|
X!= echo 'a=$a b=$b' >&2; echo
|
||||||
|
.endfor
|
||||||
|
|
||||||
|
for-loop:
|
||||||
|
@echo We expect an error next:
|
||||||
|
@(cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} for-fail) && \
|
||||||
|
{ echo "Oops that should have failed!"; exit 1; } || echo OK
|
@ -80,6 +80,24 @@ make: Graph cycles through `cycle.2.98'
|
|||||||
make: Graph cycles through `cycle.2.97'
|
make: Graph cycles through `cycle.2.97'
|
||||||
cycle.1.99
|
cycle.1.99
|
||||||
cycle.1.99
|
cycle.1.99
|
||||||
|
x=one
|
||||||
|
x="two and three"
|
||||||
|
x=four
|
||||||
|
x="five"
|
||||||
|
x=-I/this
|
||||||
|
x=-I"This or that"
|
||||||
|
x=-Ithat
|
||||||
|
x="-DTHIS=\"this and that\""
|
||||||
|
cfl=-I/this -I"This or that" -Ithat "-DTHIS=\"this and that\""
|
||||||
|
a=one b="two and three"
|
||||||
|
a=four b="five"
|
||||||
|
a=ONE b="TWO AND THREE"
|
||||||
|
a=FOUR b="FIVE"
|
||||||
|
We expect an error next:
|
||||||
|
make: "forloop" line 38: Wrong number of words (9) in .for substitution list with 2 vars
|
||||||
|
make: Fatal errors encountered -- cannot continue
|
||||||
|
make: stopped in unit-tests
|
||||||
|
OK
|
||||||
.for with :S;... OK
|
.for with :S;... OK
|
||||||
b2af338b
|
b2af338b
|
||||||
3360ac65
|
3360ac65
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
/* $NetBSD: util.c,v 1.51 2011/04/02 07:58:30 mbalmer Exp $ */
|
/* $NetBSD: util.c,v 1.53 2012/06/04 22:45:05 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Missing stuff from OS's
|
* Missing stuff from OS's
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: util.c,v 1.51 2011/04/02 07:58:30 mbalmer Exp $";
|
static char rcsid[] = "$NetBSD: util.c,v 1.53 2012/06/04 22:45:05 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: util.c,v 1.51 2011/04/02 07:58:30 mbalmer Exp $");
|
__RCSID("$NetBSD: util.c,v 1.53 2012/06/04 22:45:05 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -48,11 +48,12 @@ findenv(const char *name, int *offset)
|
|||||||
size_t i, len;
|
size_t i, len;
|
||||||
char *p, *q;
|
char *p, *q;
|
||||||
|
|
||||||
|
len = strlen(name);
|
||||||
for (i = 0; (q = environ[i]); i++) {
|
for (i = 0; (q = environ[i]); i++) {
|
||||||
p = strchr(q, '=');
|
p = strchr(q, '=');
|
||||||
if (p == NULL)
|
if (p == NULL || p - q != len)
|
||||||
continue;
|
continue;
|
||||||
if (strncmp(name, q, len = p - q) == 0) {
|
if (strncmp(name, q, len) == 0) {
|
||||||
*offset = i;
|
*offset = i;
|
||||||
return q + len + 1;
|
return q + len + 1;
|
||||||
}
|
}
|
||||||
@ -61,6 +62,14 @@ findenv(const char *name, int *offset)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
getenv(const char *name)
|
||||||
|
{
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
return(findenv(name, &offset));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
unsetenv(const char *name)
|
unsetenv(const char *name)
|
||||||
{
|
{
|
||||||
@ -83,7 +92,6 @@ unsetenv(const char *name)
|
|||||||
int
|
int
|
||||||
setenv(const char *name, const char *value, int rewrite)
|
setenv(const char *name, const char *value, int rewrite)
|
||||||
{
|
{
|
||||||
static char **saveenv; /* copy of previously allocated space */
|
|
||||||
char *c, **newenv;
|
char *c, **newenv;
|
||||||
const char *cc;
|
const char *cc;
|
||||||
size_t l_value, size;
|
size_t l_value, size;
|
||||||
@ -106,20 +114,20 @@ setenv(const char *name, const char *value, int rewrite)
|
|||||||
goto copy;
|
goto copy;
|
||||||
} else { /* create new slot */
|
} else { /* create new slot */
|
||||||
size = sizeof(char *) * (offset + 2);
|
size = sizeof(char *) * (offset + 2);
|
||||||
if (saveenv == environ) { /* just increase size */
|
if (savedEnv == environ) { /* just increase size */
|
||||||
if ((newenv = realloc(saveenv, size)) == NULL)
|
if ((newenv = realloc(savedEnv, size)) == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
saveenv = newenv;
|
savedEnv = newenv;
|
||||||
} else { /* get new space */
|
} else { /* get new space */
|
||||||
/*
|
/*
|
||||||
* We don't free here because we don't know if
|
* We don't free here because we don't know if
|
||||||
* the first allocation is valid on all OS's
|
* the first allocation is valid on all OS's
|
||||||
*/
|
*/
|
||||||
if ((saveenv = malloc(size)) == NULL)
|
if ((savedEnv = malloc(size)) == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
(void)memcpy(saveenv, environ, size - sizeof(char *));
|
(void)memcpy(savedEnv, environ, size - sizeof(char *));
|
||||||
}
|
}
|
||||||
environ = saveenv;
|
environ = savedEnv;
|
||||||
environ[offset + 1] = NULL;
|
environ[offset + 1] = NULL;
|
||||||
}
|
}
|
||||||
for (cc = name; *cc && *cc != '='; ++cc) /* no `=' in name */
|
for (cc = name; *cc && *cc != '='; ++cc) /* no `=' in name */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: var.c,v 1.167 2011/06/03 21:10:42 sjg Exp $ */
|
/* $NetBSD: var.c,v 1.171 2012/06/12 19:21:51 joerg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: var.c,v 1.167 2011/06/03 21:10:42 sjg Exp $";
|
static char rcsid[] = "$NetBSD: var.c,v 1.171 2012/06/12 19:21:51 joerg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: var.c,v 1.167 2011/06/03 21:10:42 sjg Exp $");
|
__RCSID("$NetBSD: var.c,v 1.171 2012/06/12 19:21:51 joerg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -139,6 +139,12 @@ __RCSID("$NetBSD: var.c,v 1.167 2011/06/03 21:10:42 sjg Exp $");
|
|||||||
#include "dir.h"
|
#include "dir.h"
|
||||||
#include "job.h"
|
#include "job.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This lets us tell if we have replaced the original environ
|
||||||
|
* (which we cannot free).
|
||||||
|
*/
|
||||||
|
char **savedEnv = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is a harmless return value for Var_Parse that can be used by Var_Subst
|
* This is a harmless return value for Var_Parse that can be used by Var_Subst
|
||||||
* to determine if there was an error in parsing -- easier than returning
|
* to determine if there was an error in parsing -- easier than returning
|
||||||
@ -742,6 +748,8 @@ Var_Export(char *str, int isExport)
|
|||||||
/*
|
/*
|
||||||
* This is called when .unexport[-env] is seen.
|
* This is called when .unexport[-env] is seen.
|
||||||
*/
|
*/
|
||||||
|
extern char **environ;
|
||||||
|
|
||||||
void
|
void
|
||||||
Var_UnExport(char *str)
|
Var_UnExport(char *str)
|
||||||
{
|
{
|
||||||
@ -760,25 +768,23 @@ Var_UnExport(char *str)
|
|||||||
str += 8;
|
str += 8;
|
||||||
unexport_env = (strncmp(str, "-env", 4) == 0);
|
unexport_env = (strncmp(str, "-env", 4) == 0);
|
||||||
if (unexport_env) {
|
if (unexport_env) {
|
||||||
extern char **environ;
|
|
||||||
static char **savenv;
|
|
||||||
char **newenv;
|
char **newenv;
|
||||||
|
|
||||||
cp = getenv(MAKE_LEVEL); /* we should preserve this */
|
cp = getenv(MAKE_LEVEL); /* we should preserve this */
|
||||||
if (environ == savenv) {
|
if (environ == savedEnv) {
|
||||||
/* we have been here before! */
|
/* we have been here before! */
|
||||||
newenv = bmake_realloc(environ, 2 * sizeof(char *));
|
newenv = bmake_realloc(environ, 2 * sizeof(char *));
|
||||||
} else {
|
} else {
|
||||||
if (savenv) {
|
if (savedEnv) {
|
||||||
free(savenv);
|
free(savedEnv);
|
||||||
savenv = NULL;
|
savedEnv = NULL;
|
||||||
}
|
}
|
||||||
newenv = bmake_malloc(2 * sizeof(char *));
|
newenv = bmake_malloc(2 * sizeof(char *));
|
||||||
}
|
}
|
||||||
if (!newenv)
|
if (!newenv)
|
||||||
return;
|
return;
|
||||||
/* Note: we cannot safely free() the original environ. */
|
/* Note: we cannot safely free() the original environ. */
|
||||||
environ = savenv = newenv;
|
environ = savedEnv = newenv;
|
||||||
newenv[0] = NULL;
|
newenv[0] = NULL;
|
||||||
newenv[1] = NULL;
|
newenv[1] = NULL;
|
||||||
setenv(MAKE_LEVEL, cp, 1);
|
setenv(MAKE_LEVEL, cp, 1);
|
||||||
@ -1133,7 +1139,7 @@ Var_Value(const char *name, GNode *ctxt, char **frp)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarHead(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarHead(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *dummy)
|
void *dummy)
|
||||||
{
|
{
|
||||||
@ -1181,7 +1187,7 @@ VarHead(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarTail(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarTail(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *dummy)
|
void *dummy)
|
||||||
{
|
{
|
||||||
@ -1223,7 +1229,7 @@ VarTail(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarSuffix(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarSuffix(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *dummy)
|
void *dummy)
|
||||||
{
|
{
|
||||||
@ -1264,7 +1270,7 @@ VarSuffix(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarRoot(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarRoot(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *dummy)
|
void *dummy)
|
||||||
{
|
{
|
||||||
@ -1308,7 +1314,7 @@ VarRoot(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarMatch(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarMatch(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *pattern)
|
void *pattern)
|
||||||
{
|
{
|
||||||
@ -1399,7 +1405,7 @@ VarSYSVMatch(GNode *ctx, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarNoMatch(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarNoMatch(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *pattern)
|
void *pattern)
|
||||||
{
|
{
|
||||||
@ -1436,7 +1442,7 @@ VarNoMatch(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarSubstitute(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarSubstitute(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *patternp)
|
void *patternp)
|
||||||
{
|
{
|
||||||
@ -1632,7 +1638,8 @@ VarREError(int errnum, regex_t *pat, const char *str)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarRESubstitute(GNode *ctx __unused, Var_Parse_State *vpstate __unused,
|
VarRESubstitute(GNode *ctx MAKE_ATTR_UNUSED,
|
||||||
|
Var_Parse_State *vpstate MAKE_ATTR_UNUSED,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *patternp)
|
void *patternp)
|
||||||
{
|
{
|
||||||
@ -1772,7 +1779,8 @@ VarRESubstitute(GNode *ctx __unused, Var_Parse_State *vpstate __unused,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarLoopExpand(GNode *ctx __unused, Var_Parse_State *vpstate __unused,
|
VarLoopExpand(GNode *ctx MAKE_ATTR_UNUSED,
|
||||||
|
Var_Parse_State *vpstate MAKE_ATTR_UNUSED,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *loopp)
|
void *loopp)
|
||||||
{
|
{
|
||||||
@ -1815,7 +1823,7 @@ VarLoopExpand(GNode *ctx __unused, Var_Parse_State *vpstate __unused,
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
VarSelectWords(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarSelectWords(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
const char *str, VarSelectWords_t *seldata)
|
const char *str, VarSelectWords_t *seldata)
|
||||||
{
|
{
|
||||||
Buffer buf; /* Buffer for the new string */
|
Buffer buf; /* Buffer for the new string */
|
||||||
@ -1890,9 +1898,9 @@ VarSelectWords(GNode *ctx __unused, Var_Parse_State *vpstate,
|
|||||||
* if successful.
|
* if successful.
|
||||||
*/
|
*/
|
||||||
static Boolean
|
static Boolean
|
||||||
VarRealpath(GNode *ctx __unused, Var_Parse_State *vpstate,
|
VarRealpath(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
|
||||||
char *word, Boolean addSpace, Buffer *buf,
|
char *word, Boolean addSpace, Buffer *buf,
|
||||||
void *patternp __unused)
|
void *patternp MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char rbuf[MAXPATHLEN];
|
char rbuf[MAXPATHLEN];
|
||||||
@ -2115,7 +2123,7 @@ VarUniq(const char *str)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
VarGetPattern(GNode *ctxt, Var_Parse_State *vpstate __unused,
|
VarGetPattern(GNode *ctxt, Var_Parse_State *vpstate MAKE_ATTR_UNUSED,
|
||||||
int errnum, const char **tstr, int delim, int *flags,
|
int errnum, const char **tstr, int delim, int *flags,
|
||||||
int *length, VarPattern *pattern)
|
int *length, VarPattern *pattern)
|
||||||
{
|
{
|
||||||
@ -4075,7 +4083,7 @@ Var_Subst(const char *var, const char *str, GNode *ctxt, Boolean undefErr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Buf_Destroy(&buf, FALSE);
|
return Buf_DestroyCompact(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
Loading…
x
Reference in New Issue
Block a user