Permalink
Browse files

MFC r256687:

Upgrade to the latest version of mtree from NetBSD.  This revision
re-removes the printing of size for non-regular files, supports
type-less root (.) entries as seen in a couple ports, and corrects a bug
in -N that caused expanded Subversion $FreeBSD$ strings in comments to
be processed as /etc/group entries.

Includes one trivial portability fix (including <stdint.h> in three
files) that has been committed upstream.

Approved by:	re (glebius)
  • Loading branch information...
1 parent 8f0de93 commit caa64dbe94775328829119d3737c0b4e2bbd543c @brooksdavis brooksdavis committed Oct 23, 2013
Showing with 44 additions and 27 deletions.
  1. +9 −8 contrib/mtree/compare.c
  2. +12 −11 contrib/mtree/create.c
  3. +8 −2 contrib/mtree/getid.c
  4. +15 −6 contrib/mtree/spec.c
View
@@ -1,4 +1,4 @@
-/* $NetBSD: compare.c,v 1.55 2012/10/05 00:59:35 christos Exp $ */
+/* $NetBSD: compare.c,v 1.56 2013/09/09 23:27:43 christos Exp $ */
/*-
* Copyright (c) 1989, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)compare.c 8.1 (Berkeley) 6/6/93";
#else
-__RCSID("$NetBSD: compare.c,v 1.55 2012/10/05 00:59:35 christos Exp $");
+__RCSID("$NetBSD: compare.c,v 1.56 2013/09/09 23:27:43 christos Exp $");
#endif
#endif /* not lint */
@@ -47,6 +47,7 @@ __RCSID("$NetBSD: compare.c,v 1.55 2012/10/05 00:59:35 christos Exp $");
#include <errno.h>
#include <fcntl.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -192,9 +193,9 @@ typeerr: LABEL;
(s->type == F_BLOCK || s->type == F_CHAR) &&
s->st_rdev != p->fts_statp->st_rdev) {
LABEL;
- printf("%sdevice (%#llx, %#llx",
- tab, (long long)s->st_rdev,
- (long long)p->fts_statp->st_rdev);
+ printf("%sdevice (%#jx, %#jx",
+ tab, (uintmax_t)s->st_rdev,
+ (uintmax_t)p->fts_statp->st_rdev);
if (uflag) {
if ((unlink(p->fts_accpath) == -1) ||
(mknod(p->fts_accpath,
@@ -283,9 +284,9 @@ typeerr: LABEL;
}
if (s->flags & F_SIZE && s->st_size != p->fts_statp->st_size) {
LABEL;
- printf("%ssize (%lld, %lld)\n",
- tab, (long long)s->st_size,
- (long long)p->fts_statp->st_size);
+ printf("%ssize (%ju, %ju)\n",
+ tab, (uintmax_t)s->st_size,
+ (uintmax_t)p->fts_statp->st_size);
tab = "\t";
}
/*
View
@@ -1,4 +1,4 @@
-/* $NetBSD: create.c,v 1.69 2013/02/03 19:15:17 christos Exp $ */
+/* $NetBSD: create.c,v 1.71 2013/10/16 17:24:20 christos Exp $ */
/*-
* Copyright (c) 1989, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)create.c 8.1 (Berkeley) 6/6/93";
#else
-__RCSID("$NetBSD: create.c,v 1.69 2013/02/03 19:15:17 christos Exp $");
+__RCSID("$NetBSD: create.c,v 1.71 2013/10/16 17:24:20 christos Exp $");
#endif
#endif /* not lint */
@@ -53,6 +53,7 @@ __RCSID("$NetBSD: create.c,v 1.69 2013/02/03 19:15:17 christos Exp $");
#include <fcntl.h>
#include <grp.h>
#include <pwd.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
@@ -216,22 +217,22 @@ statf(int indent, FTSENT *p)
p->fts_statp->st_mode & MBITS);
if (keys & F_DEV &&
(S_ISBLK(p->fts_statp->st_mode) || S_ISCHR(p->fts_statp->st_mode)))
- output(indent, &offset, "device=%#llx",
- (long long)p->fts_statp->st_rdev);
+ output(indent, &offset, "device=%#jx",
+ (uintmax_t)p->fts_statp->st_rdev);
if (keys & F_NLINK && p->fts_statp->st_nlink != 1)
output(indent, &offset, "nlink=%u", p->fts_statp->st_nlink);
if (keys & F_SIZE &&
- (flavor != F_NETBSD6 || S_ISREG(p->fts_statp->st_mode)))
- output(indent, &offset, "size=%lld",
- (long long)p->fts_statp->st_size);
+ (flavor == F_FREEBSD9 || S_ISREG(p->fts_statp->st_mode)))
+ output(indent, &offset, "size=%ju",
+ (uintmax_t)p->fts_statp->st_size);
if (keys & F_TIME)
#if defined(BSD4_4) && !defined(HAVE_NBTOOL_CONFIG_H)
- output(indent, &offset, "time=%ld.%09ld",
- (long)p->fts_statp->st_mtimespec.tv_sec,
+ output(indent, &offset, "time=%jd.%09ld",
+ (intmax_t)p->fts_statp->st_mtimespec.tv_sec,
p->fts_statp->st_mtimespec.tv_nsec);
#else
- output(indent, &offset, "time=%ld.%09ld",
- (long)p->fts_statp->st_mtime, (long)0);
+ output(indent, &offset, "time=%jd.%09ld",
+ (intmax_t)p->fts_statp->st_mtime, (long)0);
#endif
if (keys & F_CKSUM && S_ISREG(p->fts_statp->st_mode)) {
if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 ||
View
@@ -1,4 +1,4 @@
-/* $NetBSD: getid.c,v 1.7 2008/04/28 20:24:17 martin Exp $ */
+/* $NetBSD: getid.c,v 1.8 2013/10/16 17:27:42 christos Exp $ */
/* from: NetBSD: getpwent.c,v 1.48 2000/10/03 03:22:26 enami Exp */
/* from: NetBSD: getgrent.c,v 1.41 2002/01/12 23:51:30 lukem Exp */
@@ -65,7 +65,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: getid.c,v 1.7 2008/04/28 20:24:17 martin Exp $");
+__RCSID("$NetBSD: getid.c,v 1.8 2013/10/16 17:27:42 christos Exp $");
#include <sys/param.h>
@@ -230,6 +230,9 @@ grscan(int search, gid_t gid, const char *name)
;
continue;
}
+ /* skip comments */
+ if (pwline[0] == '#')
+ continue;
if (grmatchline(search, gid, name))
return 1;
}
@@ -371,6 +374,9 @@ pwscan(int search, uid_t uid, const char *name)
;
continue;
}
+ /* skip comments */
+ if (pwline[0] == '#')
+ continue;
if (pwmatchline(search, uid, name))
return 1;
}
View
@@ -1,4 +1,4 @@
-/* $NetBSD: spec.c,v 1.85 2012/12/20 16:43:16 christos Exp $ */
+/* $NetBSD: spec.c,v 1.87 2013/10/16 17:26:14 christos Exp $ */
/*-
* Copyright (c) 1989, 1993
@@ -67,7 +67,7 @@
#if 0
static char sccsid[] = "@(#)spec.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: spec.c,v 1.85 2012/12/20 16:43:16 christos Exp $");
+__RCSID("$NetBSD: spec.c,v 1.87 2013/10/16 17:26:14 christos Exp $");
#endif
#endif /* not lint */
@@ -80,6 +80,7 @@ __RCSID("$NetBSD: spec.c,v 1.85 2012/12/20 16:43:16 christos Exp $");
#include <grp.h>
#include <pwd.h>
#include <stdarg.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -217,6 +218,12 @@ noparent: mtree_err("no parent node");
/*
* empty tree
*/
+ /*
+ * Allow a bare "." root node by forcing it to
+ * type=dir for compatibility with FreeBSD.
+ */
+ if (strcmp(centry->name, ".") == 0 && centry->type == 0)
+ centry->type = F_DIR;
if (strcmp(centry->name, ".") != 0 ||
centry->type != F_DIR)
mtree_err(
@@ -350,16 +357,18 @@ dump_nodes(const char *dir, NODE *root, int pathlast)
appendfield(pathlast, "mode=%#o", cur->st_mode);
if (MATCHFLAG(F_DEV) &&
(cur->type == F_BLOCK || cur->type == F_CHAR))
- appendfield(pathlast, "device=%#llx", (long long)cur->st_rdev);
+ appendfield(pathlast, "device=%#jx",
+ (uintmax_t)cur->st_rdev);
if (MATCHFLAG(F_NLINK))
appendfield(pathlast, "nlink=%d", cur->st_nlink);
if (MATCHFLAG(F_SLINK))
appendfield(pathlast, "link=%s", vispath(cur->slink));
if (MATCHFLAG(F_SIZE))
- appendfield(pathlast, "size=%lld", (long long)cur->st_size);
+ appendfield(pathlast, "size=%ju",
+ (uintmax_t)cur->st_size);
if (MATCHFLAG(F_TIME))
- appendfield(pathlast, "time=%lld.%09ld",
- (long long)cur->st_mtimespec.tv_sec,
+ appendfield(pathlast, "time=%jd.%09ld",
+ (intmax_t)cur->st_mtimespec.tv_sec,
cur->st_mtimespec.tv_nsec);
if (MATCHFLAG(F_CKSUM))
appendfield(pathlast, "cksum=%lu", cur->cksum);

0 comments on commit caa64db

Please sign in to comment.