Implement ripemd160digest as a synonym for rmd160. On FreeBSD, emit mac#digest names to minimze diffs between generated spec files. Add support for SHA1 in the -f spec1 -f spec2 case. (This diff is a series of three commits with much of r240766 removed for clarity.) Index: mtree.8 =================================================================== --- mtree.8 (revision 240745) +++ mtree.8 (revision 240746) @@ -414,6 +414,9 @@ .It Sy optional The file is optional; don't complain about the file if it's not in the file hierarchy. +.It Sy ripemd160digest +Synonym for +.Sy rmd160 . .It Sy rmd160 The .Tn RMD-160 Index: compare.c =================================================================== --- compare.c (revision 240745) +++ compare.c (revision 240746) @@ -414,13 +414,22 @@ if (s->flags & F_RMD160) { if ((digestbuf = RMD160File(p->fts_accpath, NULL)) == NULL) { LABEL; +#ifndef __FreeBSD__ printf("%srmd160: %s: %s\n", +#else + printf("%sripemd160digest: %s: %s\n", +#endif + tab, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->rmd160digest, digestbuf)) { LABEL; +#ifndef __FreeBSD__ printf("%srmd160 (0x%s, 0x%s)\n", +#else + printf("%sripemd160digest (0x%s, 0x%s)\n", +#endif tab, s->rmd160digest, digestbuf); } tab = "\t"; Index: spec.c =================================================================== --- spec.c (revision 240745) +++ spec.c (revision 240746) @@ -366,7 +366,12 @@ if (MATCHFLAG(F_MD5)) appendfield(pathlast, "md5=%s", cur->md5digest); if (MATCHFLAG(F_RMD160)) +#ifndef __FreeBSD__ appendfield(pathlast, "rmd160=%s", cur->rmd160digest); +#else + appendfield(pathlast, "ripemd160digest=%s", + cur->rmd160digest); +#endif if (MATCHFLAG(F_SHA1)) appendfield(pathlast, "sha1=%s", cur->sha1digest); if (MATCHFLAG(F_SHA256)) Index: misc.c =================================================================== --- misc.c (revision 240745) +++ misc.c (revision 240746) @@ -72,6 +72,7 @@ {"mode", F_MODE, NEEDVALUE}, {"nlink", F_NLINK, NEEDVALUE}, {"optional", F_OPT, 0}, + {"ripemd160digest", F_RMD160, NEEDVALUE}, {"rmd160", F_RMD160, NEEDVALUE}, {"rmd160digest",F_RMD160, NEEDVALUE}, {"sha1", F_SHA1, NEEDVALUE}, Index: create.c =================================================================== --- create.c (revision 240765) +++ create.c (revision 240766) @@ -233,7 +241,11 @@ if (keys & F_RMD160 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = RMD160File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: RMD160File failed: %s", p->fts_accpath, strerror(errno)); +#ifndef __FreeBSD__ output(indent, &offset, "rmd160=%s", digestbuf); +#else + output(indent, &offset, "ripemd160digest=%s", digestbuf); +#endif free(digestbuf); } #endif /* ! NO_RMD160 */ Index: mtree.h =================================================================== --- mtree.h (revision 240794) +++ mtree.h (revision 240795) @@ -124,6 +124,19 @@ void free_nodes(NODE *); char *vispath(const char *); +#ifndef __FreeBSD__ +#define MD5KEY "md5" +#define RMD160KEY "rmd160" +#define SHA1KEY "sha1" +#define SHA256KEY "sha256" +#else +#define MD5KEY "md5digest" +#define RMD160KEY "ripemd160digest" +#define SHA1KEY "sha1digest" +#define SHA256KEY "sha256digest" +#endif +#define SHA384KEY "sha384" +#define SHA512KEY "sha512" #define RP(p) \ ((p)->fts_path[0] == '.' && (p)->fts_path[1] == '/' ? \ Index: create.c =================================================================== --- create.c (revision 240794) +++ create.c (revision 240795) @@ -233,7 +233,7 @@ if (keys & F_MD5 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = MD5File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: MD5File failed: %s", p->fts_accpath, strerror(errno)); - output(indent, &offset, "md5=%s", digestbuf); + output(indent, &offset, "%s=%s", MD5KEY, digestbuf); free(digestbuf); } #endif /* ! NO_MD5 */ @@ -241,11 +241,7 @@ if (keys & F_RMD160 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = RMD160File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: RMD160File failed: %s", p->fts_accpath, strerror(errno)); -#ifndef __FreeBSD__ - output(indent, &offset, "rmd160=%s", digestbuf); -#else - output(indent, &offset, "ripemd160digest=%s", digestbuf); -#endif + output(indent, &offset, "%s=%s", RMD160KEY, digestbuf); free(digestbuf); } #endif /* ! NO_RMD160 */ @@ -253,7 +249,7 @@ if (keys & F_SHA1 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = SHA1File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: SHA1File failed: %s", p->fts_accpath, strerror(errno)); - output(indent, &offset, "sha1=%s", digestbuf); + output(indent, &offset, "%s=%s", SHA1KEY, digestbuf); free(digestbuf); } #endif /* ! NO_SHA1 */ @@ -261,21 +257,21 @@ if (keys & F_SHA256 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = SHA256_File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: SHA256_File failed: %s", p->fts_accpath, strerror(errno)); - output(indent, &offset, "sha256=%s", digestbuf); + output(indent, &offset, "%s=%s", SHA256KEY, digestbuf); free(digestbuf); } #ifndef NO_SHA384 if (keys & F_SHA384 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = SHA384_File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: SHA384_File failed: %s", p->fts_accpath, strerror(errno)); - output(indent, &offset, "sha384=%s", digestbuf); + output(indent, &offset, "%s=%s", SHA384KEY, digestbuf); free(digestbuf); } #endif if (keys & F_SHA512 && S_ISREG(p->fts_statp->st_mode)) { if ((digestbuf = SHA512_File(p->fts_accpath, NULL)) == NULL) mtree_err("%s: SHA512_File failed: %s", p->fts_accpath, strerror(errno)); - output(indent, &offset, "sha512=%s", digestbuf); + output(indent, &offset, "%s=%s", SHA512KEY, digestbuf); free(digestbuf); } #endif /* ! NO_SHA2 */ Index: specspec.c =================================================================== --- specspec.c (revision 240794) +++ specspec.c (revision 240795) @@ -79,17 +79,19 @@ printf(" uname=%s", pw->pw_name); } if (f & F_MD5) - printf(" md5digest=%s", n->md5digest); + printf(" %s=%s", MD5KEY, n->md5digest); if (f & F_SHA1) - printf(" sha1digest=%s", n->sha1digest); + printf(" %s=%s", SHA1KEY, n->sha1digest); if (f & F_RMD160) - printf(" rmd160digest=%s", n->rmd160digest); + printf(" %s=%s", RMD160KEY, n->rmd160digest); + if (f & F_SHA1) + printf(" %s=%s", SHA1KEY, n->sha256digest); if (f & F_SHA256) - printf(" sha256digest=%s", n->sha256digest); + printf(" %s=%s", SHA256KEY, n->sha256digest); if (f & F_SHA384) - printf(" sha384=%s", n->sha384digest); + printf(" %s=%s", SHA384KEY, n->sha384digest); if (f & F_SHA512) - printf(" sha512=%s", n->sha512digest); + printf(" %s=%s", SHA512KEY, n->sha512digest); if (f & F_FLAGS) printf(" flags=%s", flags_to_string(n->st_flags, "none")); printf("\n"); Index: compare.c =================================================================== --- compare.c (revision 240794) +++ compare.c (revision 240795) @@ -396,14 +396,14 @@ if (s->flags & F_MD5) { if ((digestbuf = MD5File(p->fts_accpath, NULL)) == NULL) { LABEL; - printf("%smd5: %s: %s\n", - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, MD5KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->md5digest, digestbuf)) { LABEL; - printf("%smd5 (0x%s, 0x%s)\n", - tab, s->md5digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, MD5KEY, s->md5digest, digestbuf); } tab = "\t"; free(digestbuf); @@ -414,23 +414,14 @@ if (s->flags & F_RMD160) { if ((digestbuf = RMD160File(p->fts_accpath, NULL)) == NULL) { LABEL; -#ifndef __FreeBSD__ - printf("%srmd160: %s: %s\n", -#else - printf("%sripemd160digest: %s: %s\n", -#endif - - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, RMD160KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->rmd160digest, digestbuf)) { LABEL; -#ifndef __FreeBSD__ - printf("%srmd160 (0x%s, 0x%s)\n", -#else - printf("%sripemd160digest (0x%s, 0x%s)\n", -#endif - tab, s->rmd160digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, RMD160KEY, s->rmd160digest, digestbuf); } tab = "\t"; free(digestbuf); @@ -441,14 +432,14 @@ if (s->flags & F_SHA1) { if ((digestbuf = SHA1File(p->fts_accpath, NULL)) == NULL) { LABEL; - printf("%ssha1: %s: %s\n", - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, SHA1KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha1digest, digestbuf)) { LABEL; - printf("%ssha1 (0x%s, 0x%s)\n", - tab, s->sha1digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, SHA1KEY, s->sha1digest, digestbuf); } tab = "\t"; free(digestbuf); @@ -459,14 +450,14 @@ if (s->flags & F_SHA256) { if ((digestbuf = SHA256_File(p->fts_accpath, NULL)) == NULL) { LABEL; - printf("%ssha256: %s: %s\n", - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, SHA256KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha256digest, digestbuf)) { LABEL; - printf("%ssha256 (0x%s, 0x%s)\n", - tab, s->sha256digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, SHA256KEY, s->sha256digest, digestbuf); } tab = "\t"; free(digestbuf); @@ -476,14 +467,14 @@ if (s->flags & F_SHA384) { if ((digestbuf = SHA384_File(p->fts_accpath, NULL)) == NULL) { LABEL; - printf("%ssha384: %s: %s\n", - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, SHA384KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha384digest, digestbuf)) { LABEL; - printf("%ssha384 (0x%s, 0x%s)\n", - tab, s->sha384digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, SHA384KEY, s->sha384digest, digestbuf); } tab = "\t"; free(digestbuf); @@ -493,14 +484,14 @@ if (s->flags & F_SHA512) { if ((digestbuf = SHA512_File(p->fts_accpath, NULL)) == NULL) { LABEL; - printf("%ssha512: %s: %s\n", - tab, p->fts_accpath, strerror(errno)); + printf("%s%s: %s: %s\n", + tab, SHA512KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha512digest, digestbuf)) { LABEL; - printf("%ssha512 (0x%s, 0x%s)\n", - tab, s->sha512digest, digestbuf); + printf("%s%s (0x%s, 0x%s)\n", + tab, SHA512KEY, s->sha512digest, digestbuf); } tab = "\t"; free(digestbuf); Index: spec.c =================================================================== --- spec.c (revision 240794) +++ spec.c (revision 240795) @@ -364,22 +364,22 @@ if (MATCHFLAG(F_CKSUM)) appendfield(pathlast, "cksum=%lu", cur->cksum); if (MATCHFLAG(F_MD5)) - appendfield(pathlast, "md5=%s", cur->md5digest); + appendfield(pathlast, "%s=%s", MD5KEY, cur->md5digest); if (MATCHFLAG(F_RMD160)) -#ifndef __FreeBSD__ - appendfield(pathlast, "rmd160=%s", cur->rmd160digest); -#else - appendfield(pathlast, "ripemd160digest=%s", + appendfield(pathlast, "%s=%s", RMD160KEY, cur->rmd160digest); -#endif if (MATCHFLAG(F_SHA1)) - appendfield(pathlast, "sha1=%s", cur->sha1digest); + appendfield(pathlast, "%s=%s", SHA1KEY, + cur->sha1digest); if (MATCHFLAG(F_SHA256)) - appendfield(pathlast, "sha256=%s", cur->sha256digest); + appendfield(pathlast, "%s=%s", SHA256KEY, + cur->sha256digest); if (MATCHFLAG(F_SHA384)) - appendfield(pathlast, "sha384=%s", cur->sha384digest); + appendfield(pathlast, "%s=%s", SHA384KEY, + cur->sha384digest); if (MATCHFLAG(F_SHA512)) - appendfield(pathlast, "sha512=%s", cur->sha512digest); + appendfield(pathlast, "%s=%s", SHA512KEY, + cur->sha512digest); if (MATCHFLAG(F_FLAGS)) { str = flags_to_string(cur->st_flags, "none"); appendfield(pathlast, "flags=%s", str);