svn commit: r317281 - in projects/clang500-import: cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libzfs/common contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests gnu/usr.bin li...
Dimitry Andric
dim at FreeBSD.org
Sat Apr 22 11:30:10 UTC 2017
Author: dim
Date: Sat Apr 22 11:30:07 2017
New Revision: 317281
URL: https://svnweb.freebsd.org/changeset/base/317281
Log:
Merge ^/head r317216 through r317280.
Added:
projects/clang500-import/tools/build/options/WITHOUT_BSD_GREP_FASTMATCH
- copied unchanged from r317280, head/tools/build/options/WITHOUT_BSD_GREP_FASTMATCH
projects/clang500-import/tools/build/options/WITH_GNU_GREP_COMPAT
- copied unchanged from r317280, head/tools/build/options/WITH_GNU_GREP_COMPAT
Modified:
projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs.8
projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
projects/clang500-import/contrib/bmake/ChangeLog
projects/clang500-import/contrib/bmake/Makefile
projects/clang500-import/contrib/bmake/arch.c
projects/clang500-import/contrib/bmake/cond.c
projects/clang500-import/contrib/bmake/dir.c
projects/clang500-import/contrib/bmake/for.c
projects/clang500-import/contrib/bmake/job.c
projects/clang500-import/contrib/bmake/main.c
projects/clang500-import/contrib/bmake/make_malloc.c
projects/clang500-import/contrib/bmake/mk/ChangeLog
projects/clang500-import/contrib/bmake/mk/auto.obj.mk
projects/clang500-import/contrib/bmake/mk/install-mk
projects/clang500-import/contrib/bmake/parse.c
projects/clang500-import/contrib/bmake/str.c
projects/clang500-import/contrib/bmake/suff.c
projects/clang500-import/contrib/bmake/targ.c
projects/clang500-import/contrib/bmake/unit-tests/modmatch.exp
projects/clang500-import/contrib/bmake/unit-tests/modmatch.mk
projects/clang500-import/contrib/bmake/var.c
projects/clang500-import/gnu/usr.bin/Makefile
projects/clang500-import/lib/libgssapi/gss_buffer_set.c
projects/clang500-import/lib/libiconv_modules/ISO2022/citrus_iso2022.c
projects/clang500-import/lib/libthread_db/libpthread_db.c
projects/clang500-import/lib/libutil/gr_util.c
projects/clang500-import/lib/libutil/login_cap.c
projects/clang500-import/lib/libutil/pw_util.c
projects/clang500-import/sbin/geom/class/eli/geom_eli.c
projects/clang500-import/share/man/man5/src.conf.5
projects/clang500-import/share/mk/src.opts.mk
projects/clang500-import/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c
projects/clang500-import/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.h
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c
projects/clang500-import/sys/crypto/chacha20/chacha20.c
projects/clang500-import/sys/dev/syscons/scvgarndr.c
projects/clang500-import/sys/fs/fuse/fuse_node.c
projects/clang500-import/sys/fs/nfs/nfs_commonkrpc.c
projects/clang500-import/sys/fs/nfs/nfs_commonsubs.c
projects/clang500-import/sys/fs/nfsclient/nfs_clcomsubs.c
projects/clang500-import/sys/fs/nfsserver/nfs_nfsdport.c
projects/clang500-import/sys/geom/eli/g_eli.h
projects/clang500-import/sys/geom/eli/g_eli_ctl.c
projects/clang500-import/sys/net/if_lagg.c
projects/clang500-import/sys/net80211/ieee80211_proto.c
projects/clang500-import/sys/net80211/ieee80211_proto.h
projects/clang500-import/sys/netinet/tcp_syncache.c
projects/clang500-import/sys/sys/conf.h
projects/clang500-import/usr.bin/bmake/Makefile
projects/clang500-import/usr.bin/grep/Makefile
projects/clang500-import/usr.bin/grep/grep.c
projects/clang500-import/usr.bin/grep/grep.h
projects/clang500-import/usr.bin/grep/util.c
projects/clang500-import/usr.bin/systat/vmstat.c
projects/clang500-import/usr.bin/tip/tip/cu.1
projects/clang500-import/usr.bin/vmstat/vmstat.c
projects/clang500-import/usr.sbin/nfsuserd/nfsuserd.8
Directory Properties:
projects/clang500-import/ (props changed)
projects/clang500-import/cddl/ (props changed)
projects/clang500-import/cddl/contrib/opensolaris/ (props changed)
projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/ (props changed)
projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/ (props changed)
projects/clang500-import/contrib/bmake/ (props changed)
projects/clang500-import/sys/cddl/contrib/opensolaris/ (props changed)
Modified: projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs.8
==============================================================================
--- projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Sat Apr 22 11:30:07 2017 (r317281)
@@ -25,13 +25,13 @@
.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
.\" Copyright (c) 2013, Steven Hartland <smh at FreeBSD.org>
-.\" Copyright (c) 2014 Nexenta Systems, Inc. All Rights Reserved.
+.\" Copyright (c) 2016 Nexenta Systems, Inc. All Rights Reserved.
.\" Copyright (c) 2014, Xin LI <delphij at FreeBSD.org>
.\" Copyright (c) 2014-2015, The FreeBSD Foundation, All Rights Reserved.
.\"
.\" $FreeBSD$
.\"
-.Dd May 31, 2016
+.Dd September 16, 2016
.Dt ZFS 8
.Os
.Sh NAME
@@ -114,7 +114,7 @@
.Op Fl t Ar type Ns Oo , Ns type Ns Oc Ns ...
.Oo Fl s Ar property Oc Ns ...
.Oo Fl S Ar property Oc Ns ...
-.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot | Ns Ar bookmark Ns ...
.Nm
.Cm set
.Ar property Ns = Ns Ar value Oo Ar property Ns = Ns Ar value Oc Ns ...
@@ -2156,7 +2156,7 @@ section.
.Op Fl t Ar type Ns Oo , Ns Ar type Oc Ns ...
.Op Fl s Ar source Ns Oo , Ns Ar source Oc Ns ...
.Ar all | property Ns Oo , Ns Ar property Oc Ns ...
-.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Ns ...
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Ns | Ns Ar bookmark Ns ...
.Xc
.Pp
Displays properties for the given datasets. If no datasets are specified, then
Modified: projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
==============================================================================
--- projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -243,7 +243,7 @@ get_usage(zfs_help_t idx)
"[-o \"all\" | field[,...]]\n"
"\t [-t type[,...]] [-s source[,...]]\n"
"\t <\"all\" | property[,...]> "
- "[filesystem|volume|snapshot] ...\n"));
+ "[filesystem|volume|snapshot|bookmark] ...\n"));
case HELP_INHERIT:
return (gettext("\tinherit [-rS] <property> "
"<filesystem|volume|snapshot> ...\n"));
@@ -1622,7 +1622,7 @@ zfs_do_get(int argc, char **argv)
{
zprop_get_cbdata_t cb = { 0 };
int i, c, flags = ZFS_ITER_ARGS_CAN_BE_PATHS;
- int types = ZFS_TYPE_DATASET;
+ int types = ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK;
char *value, *fields;
int ret = 0;
int limit = 0;
Modified: projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
==============================================================================
--- projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -103,7 +103,7 @@ zfs_validate_name(libzfs_handle_t *hdl,
char what;
(void) zfs_prop_get_table();
- if (dataset_namecheck(path, &why, &what) != 0) {
+ if (entity_namecheck(path, &why, &what) != 0) {
if (hdl != NULL) {
switch (why) {
case NAME_ERR_TOOLONG:
@@ -132,9 +132,10 @@ zfs_validate_name(libzfs_handle_t *hdl,
"'%c' in name"), what);
break;
- case NAME_ERR_MULTIPLE_AT:
+ case NAME_ERR_MULTIPLE_DELIMITERS:
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
- "multiple '@' delimiters in name"));
+ "multiple '@' and/or '#' delimiters in "
+ "name"));
break;
case NAME_ERR_NOLETTER:
@@ -165,7 +166,7 @@ zfs_validate_name(libzfs_handle_t *hdl,
if (!(type & ZFS_TYPE_SNAPSHOT) && strchr(path, '@') != NULL) {
if (hdl != NULL)
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
- "snapshot delimiter '@' in filesystem name"));
+ "snapshot delimiter '@' is not expected here"));
return (0);
}
@@ -176,6 +177,20 @@ zfs_validate_name(libzfs_handle_t *hdl,
return (0);
}
+ if (!(type & ZFS_TYPE_BOOKMARK) && strchr(path, '#') != NULL) {
+ if (hdl != NULL)
+ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+ "bookmark delimiter '#' is not expected here"));
+ return (0);
+ }
+
+ if (type == ZFS_TYPE_BOOKMARK && strchr(path, '#') == NULL) {
+ if (hdl != NULL)
+ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+ "missing '#' delimiter in bookmark name"));
+ return (0);
+ }
+
if (modifying && strchr(path, '%') != NULL) {
if (hdl != NULL)
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
@@ -613,8 +628,36 @@ make_bookmark_handle(zfs_handle_t *paren
return (zhp);
}
+struct zfs_open_bookmarks_cb_data {
+ const char *path;
+ zfs_handle_t *zhp;
+};
+
+static int
+zfs_open_bookmarks_cb(zfs_handle_t *zhp, void *data)
+{
+ struct zfs_open_bookmarks_cb_data *dp = data;
+
+ /*
+ * Is it the one we are looking for?
+ */
+ if (strcmp(dp->path, zfs_get_name(zhp)) == 0) {
+ /*
+ * We found it. Save it and let the caller know we are done.
+ */
+ dp->zhp = zhp;
+ return (EEXIST);
+ }
+
+ /*
+ * Not found. Close the handle and ask for another one.
+ */
+ zfs_close(zhp);
+ return (0);
+}
+
/*
- * Opens the given snapshot, filesystem, or volume. The 'types'
+ * Opens the given snapshot, bookmark, filesystem, or volume. The 'types'
* argument is a mask of acceptable types. The function will print an
* appropriate error message and return NULL if it can't be opened.
*/
@@ -623,6 +666,7 @@ zfs_open(libzfs_handle_t *hdl, const cha
{
zfs_handle_t *zhp;
char errbuf[1024];
+ char *bookp;
(void) snprintf(errbuf, sizeof (errbuf),
dgettext(TEXT_DOMAIN, "cannot open '%s'"), path);
@@ -630,20 +674,68 @@ zfs_open(libzfs_handle_t *hdl, const cha
/*
* Validate the name before we even try to open it.
*/
- if (!zfs_validate_name(hdl, path, ZFS_TYPE_DATASET, B_FALSE)) {
- zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
- "invalid dataset name"));
+ if (!zfs_validate_name(hdl, path, types, B_FALSE)) {
(void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf);
return (NULL);
}
/*
- * Try to get stats for the dataset, which will tell us if it exists.
+ * Bookmarks needs to be handled separately.
*/
- errno = 0;
- if ((zhp = make_dataset_handle(hdl, path)) == NULL) {
- (void) zfs_standard_error(hdl, errno, errbuf);
- return (NULL);
+ bookp = strchr(path, '#');
+ if (bookp == NULL) {
+ /*
+ * Try to get stats for the dataset, which will tell us if it
+ * exists.
+ */
+ errno = 0;
+ if ((zhp = make_dataset_handle(hdl, path)) == NULL) {
+ (void) zfs_standard_error(hdl, errno, errbuf);
+ return (NULL);
+ }
+ } else {
+ char dsname[ZFS_MAX_DATASET_NAME_LEN];
+ zfs_handle_t *pzhp;
+ struct zfs_open_bookmarks_cb_data cb_data = {path, NULL};
+
+ /*
+ * We need to cut out '#' and everything after '#'
+ * to get the parent dataset name only.
+ */
+ assert(bookp - path < sizeof (dsname));
+ (void) strncpy(dsname, path, bookp - path);
+ dsname[bookp - path] = '\0';
+
+ /*
+ * Create handle for the parent dataset.
+ */
+ errno = 0;
+ if ((pzhp = make_dataset_handle(hdl, dsname)) == NULL) {
+ (void) zfs_standard_error(hdl, errno, errbuf);
+ return (NULL);
+ }
+
+ /*
+ * Iterate bookmarks to find the right one.
+ */
+ errno = 0;
+ if ((zfs_iter_bookmarks(pzhp, zfs_open_bookmarks_cb,
+ &cb_data) == 0) && (cb_data.zhp == NULL)) {
+ (void) zfs_error(hdl, EZFS_NOENT, errbuf);
+ zfs_close(pzhp);
+ return (NULL);
+ }
+ if (cb_data.zhp == NULL) {
+ (void) zfs_standard_error(hdl, errno, errbuf);
+ zfs_close(pzhp);
+ return (NULL);
+ }
+ zhp = cb_data.zhp;
+
+ /*
+ * Cleanup.
+ */
+ zfs_close(pzhp);
}
if (zhp == NULL) {
Modified: projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
==============================================================================
--- projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -947,9 +947,10 @@ zpool_name_valid(libzfs_handle_t *hdl, b
"trailing slash in name"));
break;
- case NAME_ERR_MULTIPLE_AT:
+ case NAME_ERR_MULTIPLE_DELIMITERS:
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
- "multiple '@' delimiters in name"));
+ "multiple '@' and/or '#' delimiters in "
+ "name"));
break;
default:
Modified: projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
==============================================================================
--- projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -718,7 +718,7 @@ zfs_get_pool_handle(const zfs_handle_t *
* Given a name, determine whether or not it's a valid path
* (starts with '/' or "./"). If so, walk the mnttab trying
* to match the device number. If not, treat the path as an
- * fs/vol/snap name.
+ * fs/vol/snap/bkmark name.
*/
zfs_handle_t *
zfs_path_to_zhandle(libzfs_handle_t *hdl, char *path, zfs_type_t argtype)
Modified: projects/clang500-import/contrib/bmake/ChangeLog
==============================================================================
--- projects/clang500-import/contrib/bmake/ChangeLog Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/ChangeLog Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,3 +1,29 @@
+2017-04-20 Simon J. Gerraty <sjg at bad.crufty.net>
+
+ * Makefile (_MAKE_VERSION): 20170420
+ Merge with NetBSD make, pick up
+ o main.c: only use -C arg "as is" if it contains no
+ relative component.
+
+2017-04-18 Simon J. Gerraty <sjg at bad.crufty.net>
+
+ * Makefile (_MAKE_VERSION): 20170418
+ Merge with NetBSD make, pick up
+ o main.c: fix Main_SetObjdir() for relative paths (eg obj).
+
+2017-04-17 Simon J. Gerraty <sjg at bad.crufty.net>
+
+ * Makefile (_MAKE_VERSION): 20170417
+ Merge with NetBSD make, pick up
+ o fixes a number of coverity complaints
+ - check return value of fseek, fcntl
+ - plug memory leak in Dir_FindFile, Var_LoopExpand,
+ JobPrintCommand, ParseTraditionalInclude
+ - use bmake_malloc() where NULL is not tollerated
+ - use MAKE_ATTR_UNUSED rather that kludges like
+ return(unused ? 0 : 0)
+ - use purge_cached_realpaths() rather than abuse cached_realpath()
+
2017-04-13 Simon J. Gerraty <sjg at bad.crufty.net>
* Makefile (_MAKE_VERSION): 20170413
Modified: projects/clang500-import/contrib/bmake/Makefile
==============================================================================
--- projects/clang500-import/contrib/bmake/Makefile Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/Makefile Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,7 +1,7 @@
-# $Id: Makefile,v 1.85 2017/04/13 16:29:40 sjg Exp $
+# $Id: Makefile,v 1.88 2017/04/20 14:51:14 sjg Exp $
# Base version on src date
-_MAKE_VERSION= 20170413
+_MAKE_VERSION= 20170420
PROG= bmake
Modified: projects/clang500-import/contrib/bmake/arch.c
==============================================================================
--- projects/clang500-import/contrib/bmake/arch.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/arch.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $ */
+/* $NetBSD: arch.c,v 1.70 2017/04/16 20:49:09 riastradh Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $";
+static char rcsid[] = "$NetBSD: arch.c,v 1.70 2017/04/16 20:49:09 riastradh Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94";
#else
-__RCSID("$NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $");
+__RCSID("$NetBSD: arch.c,v 1.70 2017/04/16 20:49:09 riastradh Exp $");
#endif
#endif /* not lint */
#endif
@@ -726,7 +726,8 @@ ArchStatMember(char *archive, char *memb
if (fread(memName, elen, 1, arch) != 1)
goto badarch;
memName[elen] = '\0';
- fseek(arch, -elen, SEEK_CUR);
+ if (fseek(arch, -elen, SEEK_CUR) != 0)
+ goto badarch;
if (DEBUG(ARCH) || DEBUG(MAKE)) {
fprintf(debug_file, "ArchStat: Extended format entry for %s\n", memName);
}
@@ -737,7 +738,8 @@ ArchStatMember(char *archive, char *memb
Hash_SetValue(he, bmake_malloc(sizeof(struct ar_hdr)));
memcpy(Hash_GetValue(he), &arh, sizeof(struct ar_hdr));
}
- fseek(arch, (size + 1) & ~1, SEEK_CUR);
+ if (fseek(arch, (size + 1) & ~1, SEEK_CUR) != 0)
+ goto badarch;
}
fclose(arch);
@@ -956,7 +958,10 @@ ArchFindMember(char *archive, char *memb
* the file at the actual member, rather than its header, but
* not here...
*/
- fseek(arch, -sizeof(struct ar_hdr), SEEK_CUR);
+ if (fseek(arch, -sizeof(struct ar_hdr), SEEK_CUR) != 0) {
+ fclose(arch);
+ return NULL;
+ }
return (arch);
}
} else
@@ -986,10 +991,17 @@ ArchFindMember(char *archive, char *memb
}
if (strncmp(ename, member, len) == 0) {
/* Found as extended name */
- fseek(arch, -sizeof(struct ar_hdr) - elen, SEEK_CUR);
+ if (fseek(arch, -sizeof(struct ar_hdr) - elen,
+ SEEK_CUR) != 0) {
+ fclose(arch);
+ return NULL;
+ }
return (arch);
}
- fseek(arch, -elen, SEEK_CUR);
+ if (fseek(arch, -elen, SEEK_CUR) != 0) {
+ fclose(arch);
+ return NULL;
+ }
goto skip;
} else
#endif
@@ -1002,9 +1014,12 @@ skip:
* extract the size of the file from the 'size' field of the
* header and round it up during the seek.
*/
- arhPtr->ar_size[sizeof(arhPtr->AR_SIZE)-1] = '\0';
+ arhPtr->AR_SIZE[sizeof(arhPtr->AR_SIZE)-1] = '\0';
size = (int)strtol(arhPtr->AR_SIZE, NULL, 10);
- fseek(arch, (size + 1) & ~1, SEEK_CUR);
+ if (fseek(arch, (size + 1) & ~1, SEEK_CUR) != 0) {
+ fclose(arch);
+ return NULL;
+ }
}
}
Modified: projects/clang500-import/contrib/bmake/cond.c
==============================================================================
--- projects/clang500-import/contrib/bmake/cond.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/cond.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: cond.c,v 1.74 2016/02/18 18:29:14 christos Exp $ */
+/* $NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: cond.c,v 1.74 2016/02/18 18:29:14 christos Exp $";
+static char rcsid[] = "$NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94";
#else
-__RCSID("$NetBSD: cond.c,v 1.74 2016/02/18 18:29:14 christos Exp $");
+__RCSID("$NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $");
#endif
#endif /* not lint */
#endif
@@ -91,6 +91,7 @@ __RCSID("$NetBSD: cond.c,v 1.74 2016/02/
*
*/
+#include <assert.h>
#include <ctype.h>
#include <errno.h> /* For strtoul() error checking */
@@ -1174,8 +1175,9 @@ Cond_EvalExpression(const struct If *inf
break;
dflt_info = info;
}
+ assert(info != NULL);
- if_info = info != NULL ? info : ifs + 4;
+ if_info = info;
condExpr = line;
condPushBack = TOK_NONE;
Modified: projects/clang500-import/contrib/bmake/dir.c
==============================================================================
--- projects/clang500-import/contrib/bmake/dir.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/dir.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.69 2017/01/31 06:54:23 sjg Exp $ */
+/* $NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.69 2017/01/31 06:54:23 sjg Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
#else
-__RCSID("$NetBSD: dir.c,v 1.69 2017/01/31 06:54:23 sjg Exp $");
+__RCSID("$NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $");
#endif
#endif /* not lint */
#endif
@@ -803,11 +803,11 @@ DirExpandInt(const char *word, Lst path,
*-----------------------------------------------------------------------
*/
static int
-DirPrintWord(void *word, void *dummy)
+DirPrintWord(void *word, void *dummy MAKE_ATTR_UNUSED)
{
fprintf(debug_file, "%s ", (char *)word);
- return(dummy ? 0 : 0);
+ return 0;
}
/*-
@@ -1315,8 +1315,14 @@ Dir_FindFile(const char *name, Lst path)
fprintf(debug_file, " Trying exact path matches...\n");
}
- if (!hasLastDot && cur && (file = DirLookupAbs(cur, name, cp)) != NULL)
- return *file?file:NULL;
+ if (!hasLastDot && cur && ((file = DirLookupAbs(cur, name, cp))
+ != NULL)) {
+ if (file[0] == '\0') {
+ free(file);
+ return NULL;
+ }
+ return file;
+ }
(void)Lst_Open(path);
while ((ln = Lst_Next(path)) != NULL) {
@@ -1325,13 +1331,23 @@ Dir_FindFile(const char *name, Lst path)
continue;
if ((file = DirLookupAbs(p, name, cp)) != NULL) {
Lst_Close(path);
- return *file?file:NULL;
+ if (file[0] == '\0') {
+ free(file);
+ return NULL;
+ }
+ return file;
}
}
Lst_Close(path);
- if (hasLastDot && cur && (file = DirLookupAbs(cur, name, cp)) != NULL)
- return *file?file:NULL;
+ if (hasLastDot && cur && ((file = DirLookupAbs(cur, name, cp))
+ != NULL)) {
+ if (file[0] == '\0') {
+ free(file);
+ return NULL;
+ }
+ return file;
+ }
}
/*
@@ -1851,10 +1867,10 @@ Dir_PrintDirectories(void)
}
static int
-DirPrintDir(void *p, void *dummy)
+DirPrintDir(void *p, void *dummy MAKE_ATTR_UNUSED)
{
fprintf(debug_file, "%s ", ((Path *)p)->name);
- return (dummy ? 0 : 0);
+ return 0;
}
void
Modified: projects/clang500-import/contrib/bmake/for.c
==============================================================================
--- projects/clang500-import/contrib/bmake/for.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/for.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: for.c,v 1.52 2016/02/18 18:29:14 christos Exp $ */
+/* $NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $ */
/*
* Copyright (c) 1992, The Regents of the University of California.
@@ -30,14 +30,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: for.c,v 1.52 2016/02/18 18:29:14 christos Exp $";
+static char rcsid[] = "$NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93";
#else
-__RCSID("$NetBSD: for.c,v 1.52 2016/02/18 18:29:14 christos Exp $");
+__RCSID("$NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $");
#endif
#endif /* not lint */
#endif
@@ -427,7 +427,7 @@ For_Iterate(void *v_arg, size_t *ret_len
for (cp = cmd_cp; (cp = strchr(cp, '$')) != NULL;) {
char ech;
ch = *++cp;
- if ((ch == '(' && (ech = ')')) || (ch == '{' && (ech = '}'))) {
+ if ((ch == '(' && (ech = ')', 1)) || (ch == '{' && (ech = '}', 1))) {
cp++;
/* Check variable name against the .for loop variables */
STRLIST_FOREACH(var, &arg->vars, i) {
Modified: projects/clang500-import/contrib/bmake/job.c
==============================================================================
--- projects/clang500-import/contrib/bmake/job.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/job.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: job.c,v 1.188 2016/08/26 23:28:39 dholland Exp $ */
+/* $NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.188 2016/08/26 23:28:39 dholland Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: job.c,v 1.188 2016/08/26 23:28:39 dholland Exp $");
+__RCSID("$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $");
#endif
#endif /* not lint */
#endif
@@ -443,7 +443,7 @@ static void JobSigUnlock(sigset_t *omask
static void
JobCreatePipe(Job *job, int minfd)
{
- int i, fd;
+ int i, fd, flags;
if (pipe(job->jobPipe) == -1)
Punt("Cannot create pipe: %s", strerror(errno));
@@ -458,8 +458,10 @@ JobCreatePipe(Job *job, int minfd)
}
/* Set close-on-exec flag for both */
- (void)fcntl(job->jobPipe[0], F_SETFD, FD_CLOEXEC);
- (void)fcntl(job->jobPipe[1], F_SETFD, FD_CLOEXEC);
+ if (fcntl(job->jobPipe[0], F_SETFD, FD_CLOEXEC) == -1)
+ Punt("Cannot set close-on-exec: %s", strerror(errno));
+ if (fcntl(job->jobPipe[1], F_SETFD, FD_CLOEXEC) == -1)
+ Punt("Cannot set close-on-exec: %s", strerror(errno));
/*
* We mark the input side of the pipe non-blocking; we poll(2) the
@@ -467,8 +469,12 @@ JobCreatePipe(Job *job, int minfd)
* race for the token when a new one becomes available, so the read
* from the pipe should not block.
*/
- fcntl(job->jobPipe[0], F_SETFL,
- fcntl(job->jobPipe[0], F_GETFL, 0) | O_NONBLOCK);
+ flags = fcntl(job->jobPipe[0], F_GETFL, 0);
+ if (flags == -1)
+ Punt("Cannot get flags: %s", strerror(errno));
+ flags |= O_NONBLOCK;
+ if (fcntl(job->jobPipe[0], F_SETFL, flags) == -1)
+ Punt("Cannot set flags: %s", strerror(errno));
}
/*-
@@ -770,6 +776,7 @@ JobPrintCommand(void *cmdp, void *jobp)
* but this one needs to be - use compat mode just for it.
*/
CompatRunCommand(cmdp, job->node);
+ free(cmdStart);
return 0;
}
break;
@@ -1398,16 +1405,28 @@ JobExec(Job *job, char **argv)
execError("dup2", "job->cmdFILE");
_exit(1);
}
- (void)fcntl(0, F_SETFD, 0);
- (void)lseek(0, (off_t)0, SEEK_SET);
+ if (fcntl(0, F_SETFD, 0) == -1) {
+ execError("fcntl clear close-on-exec", "stdin");
+ _exit(1);
+ }
+ if (lseek(0, (off_t)0, SEEK_SET) == -1) {
+ execError("lseek to 0", "stdin");
+ _exit(1);
+ }
if (Always_pass_job_queue ||
(job->node->type & (OP_MAKE | OP_SUBMAKE))) {
/*
* Pass job token pipe to submakes.
*/
- fcntl(tokenWaitJob.inPipe, F_SETFD, 0);
- fcntl(tokenWaitJob.outPipe, F_SETFD, 0);
+ if (fcntl(tokenWaitJob.inPipe, F_SETFD, 0) == -1) {
+ execError("clear close-on-exec", "tokenWaitJob.inPipe");
+ _exit(1);
+ }
+ if (fcntl(tokenWaitJob.outPipe, F_SETFD, 0) == -1) {
+ execError("clear close-on-exec", "tokenWaitJob.outPipe");
+ _exit(1);
+ }
}
/*
@@ -1424,7 +1443,10 @@ JobExec(Job *job, char **argv)
* it before routing the shell's error output to the same place as
* its standard output.
*/
- (void)fcntl(1, F_SETFD, 0);
+ if (fcntl(1, F_SETFD, 0) == -1) {
+ execError("clear close-on-exec", "stdout");
+ _exit(1);
+ }
if (dup2(1, 2) == -1) {
execError("dup2", "1, 2");
_exit(1);
Modified: projects/clang500-import/contrib/bmake/main.c
==============================================================================
--- projects/clang500-import/contrib/bmake/main.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/main.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.260 2017/04/13 13:55:23 christos Exp $ */
+/* $NetBSD: main.c,v 1.264 2017/04/20 03:57:27 sjg Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.260 2017/04/13 13:55:23 christos Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.264 2017/04/20 03:57:27 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.260 2017/04/13 13:55:23 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.264 2017/04/20 03:57:27 sjg Exp $");
#endif
#endif /* not lint */
#endif
@@ -187,6 +187,7 @@ static const char * tracefile;
static void MainParseArgs(int, char **);
static int ReadMakefile(const void *, const void *);
static void usage(void) MAKE_ATTR_DEAD;
+static void purge_cached_realpaths(void);
static Boolean ignorePWD; /* if we use -C, PWD is meaningless */
static char objdir[MAXPATHLEN + 1]; /* where we chdir'ed to */
@@ -336,7 +337,7 @@ parse_debug_options(const char *argvalue
goto debug_setbuf;
}
len = strlen(modules);
- fname = malloc(len + 20);
+ fname = bmake_malloc(len + 20);
memcpy(fname, modules, len + 1);
/* Let the filename be modified by the pid */
if (strcmp(fname + len - 3, ".%d") == 0)
@@ -367,6 +368,32 @@ debug_setbuf:
}
}
+/*
+ * does path contain any relative components
+ */
+static int
+is_relpath(const char *path)
+{
+ const char *cp;
+
+ if (path[0] != '/')
+ return TRUE;
+ cp = path;
+ do {
+ cp = strstr(cp, "/.");
+ if (!cp)
+ break;
+ cp += 2;
+ if (cp[0] == '/' || cp[0] == '\0')
+ return TRUE;
+ else if (cp[0] == '.') {
+ if (cp[1] == '/' || cp[1] == '\0')
+ return TRUE;
+ }
+ } while (cp);
+ return FALSE;
+}
+
/*-
* MainParseArgs --
* Parse a given argument vector. Called from main() and from
@@ -458,7 +485,7 @@ rearg:
(void)fprintf(stderr, "%s: %s.\n", progname, strerror(errno));
exit(2);
}
- if (argvalue[0] == '/' &&
+ if (!is_relpath(argvalue) &&
stat(argvalue, &sa) != -1 &&
stat(curdir, &sb) != -1 &&
sa.st_ino == sb.st_ino &&
@@ -732,8 +759,10 @@ Main_SetObjdir(const char *fmt, ...)
va_end(ap);
if (path[0] != '/') {
- snprintf(buf, MAXPATHLEN, "%s/%s", curdir, path);
- path = buf;
+ char buf2[MAXPATHLEN + 1];
+
+ snprintf(buf2, MAXPATHLEN, "%s/%s", curdir, path);
+ path = buf2;
}
/* look for the directory and try to chdir there */
@@ -746,7 +775,7 @@ Main_SetObjdir(const char *fmt, ...)
Var_Set(".OBJDIR", objdir, VAR_GLOBAL, 0);
setenv("PWD", objdir, 1);
Dir_InitDot();
- cached_realpath(".OBJDIR", NULL); /* purge */
+ purge_cached_realpaths();
rc = TRUE;
if (enterFlag && strcmp(objdir, curdir) != 0)
enterFlagObj = TRUE;
@@ -1907,42 +1936,56 @@ usage(void)
exit(2);
}
-
/*
* realpath(3) can get expensive, cache results...
*/
+static GNode *cached_realpaths = NULL;
+
+static GNode *
+get_cached_realpaths(void)
+{
+
+ if (!cached_realpaths) {
+ cached_realpaths = Targ_NewGN("Realpath");
+#ifndef DEBUG_REALPATH_CACHE
+ cached_realpaths->flags = INTERNAL;
+#endif
+ }
+
+ return cached_realpaths;
+}
+
+/* purge any relative paths */
+static void
+purge_cached_realpaths(void)
+{
+ GNode *cache = get_cached_realpaths();
+ Hash_Entry *he, *nhe;
+ Hash_Search hs;
+
+ he = Hash_EnumFirst(&cache->context, &hs);
+ while (he) {
+ nhe = Hash_EnumNext(&hs);
+ if (he->name[0] != '/') {
+ if (DEBUG(DIR))
+ fprintf(stderr, "cached_realpath: purging %s\n", he->name);
+ Hash_DeleteEntry(&cache->context, he);
+ }
+ he = nhe;
+ }
+}
+
char *
cached_realpath(const char *pathname, char *resolved)
{
- static GNode *cache;
+ GNode *cache;
char *rp, *cp;
if (!pathname || !pathname[0])
return NULL;
- if (!cache) {
- cache = Targ_NewGN("Realpath");
-#ifndef DEBUG_REALPATH_CACHE
- cache->flags = INTERNAL;
-#endif
- }
- if (resolved == NULL && strcmp(pathname, ".OBJDIR") == 0) {
- /* purge any relative paths */
- Hash_Entry *he, *nhe;
- Hash_Search hs;
-
- he = Hash_EnumFirst(&cache->context, &hs);
- while (he) {
- nhe = Hash_EnumNext(&hs);
- if (he->name[0] != '/') {
- if (DEBUG(DIR))
- fprintf(stderr, "cached_realpath: purging %s\n", he->name);
- Hash_DeleteEntry(&cache->context, he);
- }
- he = nhe;
- }
- return NULL;
- }
+ cache = get_cached_realpaths();
+
if ((rp = Var_Value(pathname, cache, &cp)) != NULL) {
/* a hit */
strlcpy(resolved, rp, MAXPATHLEN);
Modified: projects/clang500-import/contrib/bmake/make_malloc.c
==============================================================================
--- projects/clang500-import/contrib/bmake/make_malloc.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/make_malloc.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: make_malloc.c,v 1.10 2012/06/20 17:46:28 sjg Exp $ */
+/* $NetBSD: make_malloc.c,v 1.11 2017/04/16 20:20:24 dholland Exp $ */
/*-
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
#ifdef MAKE_NATIVE
#include <sys/cdefs.h>
-__RCSID("$NetBSD: make_malloc.c,v 1.10 2012/06/20 17:46:28 sjg Exp $");
+__RCSID("$NetBSD: make_malloc.c,v 1.11 2017/04/16 20:20:24 dholland Exp $");
#endif
#include <stdio.h>
@@ -39,13 +39,13 @@ __RCSID("$NetBSD: make_malloc.c,v 1.10 2
#include "make.h"
#ifndef USE_EMALLOC
-static void enomem(void) MAKE_ATTR_DEAD;
+static MAKE_ATTR_DEAD void enomem(void);
/*
* enomem --
* die when out of memory.
*/
-static void
+static MAKE_ATTR_DEAD void
enomem(void)
{
(void)fprintf(stderr, "%s: %s.\n", progname, strerror(ENOMEM));
Modified: projects/clang500-import/contrib/bmake/mk/ChangeLog
==============================================================================
--- projects/clang500-import/contrib/bmake/mk/ChangeLog Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/mk/ChangeLog Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,3 +1,10 @@
+2017-04-18 Simon J. Gerraty <sjg at bad.crufty.net>
+
+ * install-mk (MK_VERSION): 20170418
+
+ * auto.obj.mk: if using MAKEOBJDIRPREFIX check if it is a
+ prefix match for .CURDIR - in which case .CURDIR *is* __objdir.
+
2017-04-01 Simon J. Gerraty <sjg at bad.crufty.net>
* install-mk (MK_VERSION): 20170401
Modified: projects/clang500-import/contrib/bmake/mk/auto.obj.mk
==============================================================================
--- projects/clang500-import/contrib/bmake/mk/auto.obj.mk Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/mk/auto.obj.mk Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-# $Id: auto.obj.mk,v 1.13 2017/03/24 20:53:22 sjg Exp $
+# $Id: auto.obj.mk,v 1.14 2017/04/18 23:53:18 sjg Exp $
#
# @(#) Copyright (c) 2004, Simon J. Gerraty
#
@@ -41,6 +41,10 @@ MKOBJDIRS= auto
# Use __objdir here so it is easier to tweak without impacting
# the logic.
.if !empty(MAKEOBJDIRPREFIX)
+.if ${.CURDIR:M${MAKEOBJDIRPREFIX}/*} != ""
+# we are already in obj tree!
+__objdir?= ${.CURDIR}
+.endif
__objdir?= ${MAKEOBJDIRPREFIX}${.CURDIR}
.endif
__objdir?= ${MAKEOBJDIR:Uobj}
Modified: projects/clang500-import/contrib/bmake/mk/install-mk
==============================================================================
--- projects/clang500-import/contrib/bmake/mk/install-mk Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/mk/install-mk Sat Apr 22 11:30:07 2017 (r317281)
@@ -55,7 +55,7 @@
# Simon J. Gerraty <sjg at crufty.net>
# RCSid:
-# $Id: install-mk,v 1.140 2017/04/03 21:04:09 sjg Exp $
+# $Id: install-mk,v 1.141 2017/04/18 23:53:18 sjg Exp $
#
# @(#) Copyright (c) 1994 Simon J. Gerraty
#
@@ -70,7 +70,7 @@
# sjg at crufty.net
#
-MK_VERSION=20170401
+MK_VERSION=20170418
OWNER=
GROUP=
MODE=444
Modified: projects/clang500-import/contrib/bmake/parse.c
==============================================================================
--- projects/clang500-import/contrib/bmake/parse.c Sat Apr 22 09:38:43 2017 (r317280)
+++ projects/clang500-import/contrib/bmake/parse.c Sat Apr 22 11:30:07 2017 (r317281)
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.218 2017/03/01 16:39:49 sjg Exp $ */
+/* $NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: parse.c,v 1.218 2017/03/01 16:39:49 sjg Exp $";
+static char rcsid[] = "$NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: parse.c,v 1.218 2017/03/01 16:39:49 sjg Exp $");
+__RCSID("$NetBSD: parse.c,v 1.225 2017/04/17 13:29:07 maya Exp $");
#endif
#endif /* not lint */
#endif
@@ -130,6 +130,7 @@ __RCSID("$NetBSD: parse.c,v 1.218 2017/0
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdint.h>
#include "make.h"
#include "hash.h"
@@ -539,7 +540,7 @@ loadfile(const char *path, int fd)
if (lf->buf != MAP_FAILED) {
/* succeeded */
if (lf->len == lf->maplen && lf->buf[lf->len - 1] != '\n') {
- char *b = malloc(lf->len + 1);
+ char *b = bmake_malloc(lf->len + 1);
b[lf->len] = '\n';
memcpy(b, lf->buf, lf->len++);
munmap(lf->buf, lf->maplen);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list