* nix-hash: option `--truncate' to truncate the hash to 160 bits. Hmm,

kind of ad hoc ;-)
This commit is contained in:
Eelco Dolstra 2005-08-14 10:09:56 +00:00
parent 2fd22c6360
commit 0399365675
2 changed files with 4 additions and 0 deletions

View File

@ -6,3 +6,4 @@ files.
--flat: compute hash of regular file contents, not metadata --flat: compute hash of regular file contents, not metadata
--base32: print hash in base-32 instead of hexadecimal --base32: print hash in base-32 instead of hexadecimal
--type HASH: use hash algorithm HASH ("md5" (default), "sha1", "sha256") --type HASH: use hash algorithm HASH ("md5" (default), "sha1", "sha256")
--truncate: truncate the hash to 160 bits

View File

@ -16,12 +16,14 @@ void run(Strings args)
HashType ht = htMD5; HashType ht = htMD5;
bool flat = false; bool flat = false;
bool base32 = false; bool base32 = false;
bool truncate = false;
for (Strings::iterator i = args.begin(); for (Strings::iterator i = args.begin();
i != args.end(); i++) i != args.end(); i++)
{ {
if (*i == "--flat") flat = true; if (*i == "--flat") flat = true;
else if (*i == "--base32") base32 = true; else if (*i == "--base32") base32 = true;
else if (*i == "--truncate") truncate = true;
else if (*i == "--type") { else if (*i == "--type") {
++i; ++i;
if (i == args.end()) throw UsageError("`--type' requires an argument"); if (i == args.end()) throw UsageError("`--type' requires an argument");
@ -31,6 +33,7 @@ void run(Strings args)
} }
else { else {
Hash h = flat ? hashFile(ht, *i) : hashPath(ht, *i); Hash h = flat ? hashFile(ht, *i) : hashPath(ht, *i);
if (truncate && h.hashSize > 20) h = compressHash(h, 20);
cout << format("%1%\n") % cout << format("%1%\n") %
(base32 ? printHash32(h) : printHash(h)); (base32 ? printHash32(h) : printHash(h));
} }