Download raw body.
Add SHA-512 support to mtree
Hi @tech
The following diff adds SHA-512 support to mtree.
Would this be welcome?
Thanks
diff /usr/src
path + /usr/src
commit - 225f0e6a7aa305433103bcae9018d1fe77e2fd53
blob - dc051e65d60a0801b9446c6a1171db442dce60a3
file + usr.sbin/mtree/create.c
--- usr.sbin/mtree/create.c
+++ usr.sbin/mtree/create.c
@@ -234,6 +234,15 @@ statf(int indent, FTSENT *p)
else
output(indent, &offset, "sha256digest=%s", sha256digest);
}
+ if (keys & F_SHA512 && S_ISREG(p->fts_statp->st_mode)) {
+ char *sha512digest, buf[SHA512_DIGEST_STRING_LENGTH];
+
+ sha512digest = SHA512File(p->fts_accpath,buf);
+ if (!sha512digest)
+ error("%s: %s", p->fts_accpath, strerror(errno));
+ else
+ output(indent, &offset, "sha512digest=%s", sha512digest);
+ }
if (keys & F_SLINK &&
(p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) {
name = rlink(p->fts_accpath);
commit - 225f0e6a7aa305433103bcae9018d1fe77e2fd53
blob - b79dfc9cbf69851d77791f9677f8ab2cf74cb014
file + usr.sbin/mtree/misc.c
--- usr.sbin/mtree/misc.c
+++ usr.sbin/mtree/misc.c
@@ -65,6 +65,7 @@ static KEY keylist[] = {
{"rmd160digest",F_RMD160, NEEDVALUE},
{"sha1digest", F_SHA1, NEEDVALUE},
{"sha256digest",F_SHA256, NEEDVALUE},
+ {"sha512digest",F_SHA512, NEEDVALUE},
{"size", F_SIZE, NEEDVALUE},
{"time", F_TIME, NEEDVALUE},
{"type", F_TYPE, NEEDVALUE},
commit - 225f0e6a7aa305433103bcae9018d1fe77e2fd53
blob - 4968238d0d8a35196f6a62e3db65eb975b4cc181
file + usr.sbin/mtree/mtree.8
--- usr.sbin/mtree/mtree.8
+++ usr.sbin/mtree/mtree.8
@@ -195,6 +195,8 @@ The RIPEMD-160 message digest of the file.
The SHA-1 message digest of the file.
.It Cm sha256digest
The SHA-256 message digest of the file.
+.It Cm sha512digest
+The SHA-512 message digest of the file.
.It Cm size
The size, in bytes, of the file.
.It Cm time
commit - 225f0e6a7aa305433103bcae9018d1fe77e2fd53
blob - 2957d30876d4f0edba23dfd473fa5bd83dec6b92
file + usr.sbin/mtree/mtree.h
--- usr.sbin/mtree/mtree.h
+++ usr.sbin/mtree/mtree.h
@@ -54,6 +54,7 @@ typedef struct _node {
char *rmd160digest; /* RIPEMD-160 digest */
char *sha1digest; /* SHA-1 digest */
char *sha256digest; /* SHA-256 digest */
+ char *sha512digest; /* SHA-512 digest */
char *slink; /* symbolic link reference */
uid_t st_uid; /* uid */
gid_t st_gid; /* gid */
@@ -84,6 +85,7 @@ typedef struct _node {
#define F_FLAGS 0x080000 /* file flags */
#define F_NOCHANGE 0x100000 /* do not change owner/mode */
#define F_SHA256 0x200000 /* SHA-256 digest */
+#define F_SHA512 0x400000 /* SHA-512 digest */
u_int32_t flags; /* items set */
#define F_BLOCK 0x001 /* block special */
commit - 225f0e6a7aa305433103bcae9018d1fe77e2fd53
blob - 88af6a050743baa20abc08445a8afc5c02898912
file + usr.sbin/mtree/spec.c
--- usr.sbin/mtree/spec.c
+++ usr.sbin/mtree/spec.c
@@ -237,6 +237,11 @@ set(char *t, NODE *ip)
if (!ip->sha256digest)
error("%s", strerror(errno));
break;
+ case F_SHA512:
+ ip->sha512digest = strdup(val);
+ if (!ip->sha512digest)
+ error("%s", strerror(errno));
+ break;
case F_SIZE:
ip->st_size = strtoll(val, &ep, 10);
if (*ep)
Add SHA-512 support to mtree