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)
This commit is contained in:
parent
8f0de93313
commit
caa64dbe94
@ -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";
|
||||
}
|
||||
/*
|
||||
|
@ -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 ||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user