From Brooks Davis:
When comparing a directory to an mtree file NetBSD mtree has output like this: xxx: size (4, 5) md5digest (0x6de9439834c9147569741d3c9c9fc010, 0xa5d119ab8edcda0ef7f381da8= f52f92f) =2E/yyy missing FreeBSD's historical behavior is this: xxx changed size expected 4 found 5 md5digest expected 6de9439834c9147569741d3c9c9fc010 found a5d119ab8edcda0e= f7f381da8f52f92f =2E/yyy missing FreeBSD's mergemaster -U command depends on the latter behavior so the following patch alters the freebsd9 mode of mtree to output that format. I don't think programs should rely on this output one way or another since it's clearly meant for humans, but this seems like the easiest short term fix.
This commit is contained in:
parent
9e14bd8cd4
commit
905fa31223
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: compare.c,v 1.57 2013/10/17 17:22:59 christos Exp $ */
|
||||
/* $NetBSD: compare.c,v 1.58 2013/11/21 18:39:50 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.57 2013/10/17 17:22:59 christos Exp $");
|
||||
__RCSID("$NetBSD: compare.c,v 1.58 2013/11/21 18:39:50 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -72,13 +72,18 @@ __RCSID("$NetBSD: compare.c,v 1.57 2013/10/17 17:22:59 christos Exp $");
|
|||
#define INDENTNAMELEN 8
|
||||
#define MARK \
|
||||
do { \
|
||||
len = printf("%s: ", RP(p)); \
|
||||
if (len > INDENTNAMELEN) { \
|
||||
if (flavor == F_FREEBSD9) { \
|
||||
len = printf("%s changed\n", RP(p)); \
|
||||
tab = "\t"; \
|
||||
printf("\n"); \
|
||||
} else { \
|
||||
tab = ""; \
|
||||
printf("%*s", INDENTNAMELEN - (int)len, ""); \
|
||||
len = printf("%s: ", RP(p)); \
|
||||
if (len > INDENTNAMELEN) { \
|
||||
tab = "\t"; \
|
||||
printf("\n"); \
|
||||
} else { \
|
||||
tab = ""; \
|
||||
printf("%*s", INDENTNAMELEN - (int)len, ""); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
#define LABEL if (!label++) MARK
|
||||
|
@ -171,7 +176,8 @@ compare(NODE *s, FTSENT *p)
|
|||
break;
|
||||
#endif
|
||||
typeerr: LABEL;
|
||||
printf("\ttype (%s, %s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"\ttype expected %s found %s\n" : "\ttype (%s, %s)\n",
|
||||
nodetype(s->type), inotype(p->fts_statp->st_mode));
|
||||
return (label);
|
||||
}
|
||||
|
@ -193,7 +199,9 @@ typeerr: LABEL;
|
|||
(s->type == F_BLOCK || s->type == F_CHAR) &&
|
||||
s->st_rdev != p->fts_statp->st_rdev) {
|
||||
LABEL;
|
||||
printf("%sdevice (%#jx, %#jx",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%sdevice expected %#jx found %#jx" :
|
||||
"%sdevice (%#jx, %#jx",
|
||||
tab, (uintmax_t)s->st_rdev,
|
||||
(uintmax_t)p->fts_statp->st_rdev);
|
||||
if (uflag) {
|
||||
|
@ -203,10 +211,12 @@ typeerr: LABEL;
|
|||
s->st_rdev) == -1) ||
|
||||
(lchown(p->fts_accpath, p->fts_statp->st_uid,
|
||||
p->fts_statp->st_gid) == -1) )
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
} else
|
||||
printf(")\n");
|
||||
tab = "\t";
|
||||
|
@ -214,28 +224,34 @@ typeerr: LABEL;
|
|||
/* Set the uid/gid first, then set the mode. */
|
||||
if (s->flags & (F_UID | F_UNAME) && s->st_uid != p->fts_statp->st_uid) {
|
||||
LABEL;
|
||||
printf("%suser (%lu, %lu",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%suser expected %lu found %lu" : "%suser (%lu, %lu",
|
||||
tab, (u_long)s->st_uid, (u_long)p->fts_statp->st_uid);
|
||||
if (uflag) {
|
||||
if (lchown(p->fts_accpath, s->st_uid, -1))
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
} else
|
||||
printf(")\n");
|
||||
tab = "\t";
|
||||
}
|
||||
if (s->flags & (F_GID | F_GNAME) && s->st_gid != p->fts_statp->st_gid) {
|
||||
LABEL;
|
||||
printf("%sgid (%lu, %lu",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%sgid expected %lu found %lu" : "%sgid (%lu, %lu",
|
||||
tab, (u_long)s->st_gid, (u_long)p->fts_statp->st_gid);
|
||||
if (uflag) {
|
||||
if (lchown(p->fts_accpath, -1, s->st_gid))
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
}
|
||||
else
|
||||
printf(")\n");
|
||||
|
@ -260,15 +276,19 @@ typeerr: LABEL;
|
|||
}
|
||||
|
||||
LABEL;
|
||||
printf("%spermissions (%#lo, %#lo",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%spermissions expcted %#lo found %#lo" :
|
||||
"%spermissions (%#lo, %#lo",
|
||||
tab, (u_long)s->st_mode,
|
||||
(u_long)p->fts_statp->st_mode & MBITS);
|
||||
if (uflag) {
|
||||
if (lchmod(p->fts_accpath, s->st_mode))
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
}
|
||||
else
|
||||
printf(")\n");
|
||||
|
@ -278,13 +298,16 @@ typeerr: LABEL;
|
|||
if (s->flags & F_NLINK && s->type != F_DIR &&
|
||||
s->st_nlink != p->fts_statp->st_nlink) {
|
||||
LABEL;
|
||||
printf("%slink count (%lu, %lu)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%slink count expected %lu found %lu\n" :
|
||||
"%slink count (%lu, %lu)\n",
|
||||
tab, (u_long)s->st_nlink, (u_long)p->fts_statp->st_nlink);
|
||||
tab = "\t";
|
||||
}
|
||||
if (s->flags & F_SIZE && s->st_size != p->fts_statp->st_size) {
|
||||
LABEL;
|
||||
printf("%ssize (%ju, %ju)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%ssize expected %ju found %ju\n" : "%ssize (%ju, %ju)\n",
|
||||
tab, (uintmax_t)s->st_size,
|
||||
(uintmax_t)p->fts_statp->st_size);
|
||||
tab = "\t";
|
||||
|
@ -319,18 +342,22 @@ typeerr: LABEL;
|
|||
if (tv[0].tv_sec != tv[1].tv_sec ||
|
||||
tv[0].tv_usec != tv[1].tv_usec) {
|
||||
LABEL;
|
||||
printf("%smodification time (%.24s, ",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%smodification time expected %.24s found " :
|
||||
"%smodification time (%.24s, ",
|
||||
tab, ctime(&smtime));
|
||||
printf("%.24s", ctime(&pmtime));
|
||||
if (tflag) {
|
||||
tv[1] = tv[0];
|
||||
if (utimes(p->fts_accpath, tv))
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
} else
|
||||
printf(")\n");
|
||||
printf("%s\n", flavor == F_FREEBSD9 ? "" : ")");
|
||||
tab = "\t";
|
||||
}
|
||||
}
|
||||
|
@ -347,7 +374,9 @@ typeerr: LABEL;
|
|||
char *f_s;
|
||||
LABEL;
|
||||
f_s = flags_to_string(s->st_flags, "none");
|
||||
printf("%sflags (\"%s\" is not ", tab, f_s);
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%sflags expected \"%s\" found " :
|
||||
"%sflags (\"%s\" is not ", tab, f_s);
|
||||
free(f_s);
|
||||
f_s = flags_to_string(p->fts_statp->st_flags, "none");
|
||||
printf("\"%s\"", f_s);
|
||||
|
@ -361,7 +390,7 @@ typeerr: LABEL;
|
|||
else
|
||||
SETFLAGS(0, (~SP_FLGS & CH_MASK));
|
||||
} else
|
||||
printf(")\n");
|
||||
printf("%s\n", flavor == F_FREEBSD9 ? "" : ")");
|
||||
tab = "\t";
|
||||
}
|
||||
#endif /* HAVE_STRUCT_STAT_ST_FLAGS */
|
||||
|
@ -387,7 +416,9 @@ typeerr: LABEL;
|
|||
close(fd);
|
||||
if (s->cksum != val) {
|
||||
LABEL;
|
||||
printf("%scksum (%lu, %lu)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%scksum expected %lu found %lu\n" :
|
||||
"%scksum (%lu, %lu)\n",
|
||||
tab, s->cksum, (unsigned long)val);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -403,7 +434,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->md5digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, MD5KEY, s->md5digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -421,7 +454,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->rmd160digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, RMD160KEY, s->rmd160digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -439,7 +474,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->sha1digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, SHA1KEY, s->sha1digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -457,7 +494,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->sha256digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, SHA256KEY, s->sha256digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -474,7 +513,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->sha384digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, SHA384KEY, s->sha384digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -491,7 +532,9 @@ typeerr: LABEL;
|
|||
} else {
|
||||
if (strcmp(s->sha512digest, digestbuf)) {
|
||||
LABEL;
|
||||
printf("%s%s (0x%s, 0x%s)\n",
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%s%s expected %s found %s\n" :
|
||||
"%s%s (0x%s, 0x%s)\n",
|
||||
tab, SHA512KEY, s->sha512digest, digestbuf);
|
||||
}
|
||||
tab = "\t";
|
||||
|
@ -502,16 +545,20 @@ typeerr: LABEL;
|
|||
if (s->flags & F_SLINK &&
|
||||
strcmp(cp = rlink(p->fts_accpath), s->slink)) {
|
||||
LABEL;
|
||||
printf("%slink ref (%s, %s", tab, cp, s->slink);
|
||||
printf(flavor == F_FREEBSD9 ?
|
||||
"%slink ref expected %s found %s" :
|
||||
"%slink ref (%s, %s", tab, cp, s->slink);
|
||||
if (uflag) {
|
||||
if ((unlink(p->fts_accpath) == -1) ||
|
||||
(symlink(s->slink, p->fts_accpath) == -1) )
|
||||
printf(", not modified: %s)\n",
|
||||
strerror(errno));
|
||||
printf(", not modified: %s%s\n",
|
||||
strerror(errno),
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
else
|
||||
printf(", modified)\n");
|
||||
printf(", modified%s\n",
|
||||
flavor == F_FREEBSD9 ? "" : ")");
|
||||
} else
|
||||
printf(")\n");
|
||||
printf("%s\n", flavor == F_FREEBSD9 ? "" : ")");
|
||||
}
|
||||
return (label);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue