If hashes do not match, print them in base-32 for SHA-1/SHA-256
Fixes #57.
This commit is contained in:
parent
a28b4445a4
commit
4c34d384e6
3 changed files with 10 additions and 1 deletions
|
@ -2228,7 +2228,7 @@ void DerivationGoal::computeClosure()
|
|||
if (h != h2)
|
||||
throw BuildError(
|
||||
format("output path `%1%' should have %2% hash `%3%', instead has `%4%'")
|
||||
% path % i->second.hashAlgo % printHash(h) % printHash(h2));
|
||||
% path % i->second.hashAlgo % printHash16or32(h) % printHash16or32(h2));
|
||||
}
|
||||
|
||||
/* Get rid of all weird permissions. */
|
||||
|
|
|
@ -153,6 +153,12 @@ string printHash32(const Hash & hash)
|
|||
}
|
||||
|
||||
|
||||
string printHash16or32(const Hash & hash)
|
||||
{
|
||||
return hash.type == htMD5 ? printHash(hash) : printHash32(hash);
|
||||
}
|
||||
|
||||
|
||||
static bool mul(unsigned char * bytes, unsigned char y, int maxSize)
|
||||
{
|
||||
unsigned char carry = 0;
|
||||
|
|
|
@ -54,6 +54,9 @@ unsigned int hashLength32(const Hash & hash);
|
|||
/* Convert a hash to a base-32 representation. */
|
||||
string printHash32(const Hash & hash);
|
||||
|
||||
/* Print a hash in base-16 if it's MD5, or base-32 otherwise. */
|
||||
string printHash16or32(const Hash & hash);
|
||||
|
||||
/* Parse a base-32 representation of a hash code. */
|
||||
Hash parseHash32(HashType ht, const string & s);
|
||||
|
||||
|
|
Loading…
Reference in a new issue