Jeff King <peff@xxxxxxxx> writes: > Our hashmap.h helpfully defines a sha1hash() function. But it cannot > define a similar oidhash() without including all of cache.h, which > itself wants to include hashmap.h! Let's break this circular dependency > by moving the definition to hash.h, along with the remaining RAWSZ > macros, etc. That will put them with the existing git_hash_algo > definition. > > One alternative would be to move oidhash() into cache.h, but it's > already quite bloated. We're better off moving things out than in. Makes sense. > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > cache.h | 24 ------------------------ > hash.h | 24 ++++++++++++++++++++++++ > 2 files changed, 24 insertions(+), 24 deletions(-) > > diff --git a/cache.h b/cache.h > index bf20337ef4..37e0b82064 100644 > --- a/cache.h > +++ b/cache.h > @@ -43,30 +43,6 @@ int git_deflate_end_gently(git_zstream *); > int git_deflate(git_zstream *, int flush); > unsigned long git_deflate_bound(git_zstream *, unsigned long); > > -/* The length in bytes and in hex digits of an object name (SHA-1 value). */ > -#define GIT_SHA1_RAWSZ 20 > -#define GIT_SHA1_HEXSZ (2 * GIT_SHA1_RAWSZ) > -/* The block size of SHA-1. */ > -#define GIT_SHA1_BLKSZ 64 > - > -/* The length in bytes and in hex digits of an object name (SHA-256 value). */ > -#define GIT_SHA256_RAWSZ 32 > -#define GIT_SHA256_HEXSZ (2 * GIT_SHA256_RAWSZ) > -/* The block size of SHA-256. */ > -#define GIT_SHA256_BLKSZ 64 > - > -/* The length in byte and in hex digits of the largest possible hash value. */ > -#define GIT_MAX_RAWSZ GIT_SHA256_RAWSZ > -#define GIT_MAX_HEXSZ GIT_SHA256_HEXSZ > -/* The largest possible block size for any supported hash. */ > -#define GIT_MAX_BLKSZ GIT_SHA256_BLKSZ > - > -struct object_id { > - unsigned char hash[GIT_MAX_RAWSZ]; > -}; > - > -#define the_hash_algo the_repository->hash_algo > - > #if defined(DT_UNKNOWN) && !defined(NO_D_TYPE_IN_DIRENT) > #define DTYPE(de) ((de)->d_type) > #else > diff --git a/hash.h b/hash.h > index 661c9f2281..52a4f1a3f4 100644 > --- a/hash.h > +++ b/hash.h > @@ -139,4 +139,28 @@ static inline int hash_algo_by_ptr(const struct git_hash_algo *p) > return p - hash_algos; > } > > +/* The length in bytes and in hex digits of an object name (SHA-1 value). */ > +#define GIT_SHA1_RAWSZ 20 > +#define GIT_SHA1_HEXSZ (2 * GIT_SHA1_RAWSZ) > +/* The block size of SHA-1. */ > +#define GIT_SHA1_BLKSZ 64 > + > +/* The length in bytes and in hex digits of an object name (SHA-256 value). */ > +#define GIT_SHA256_RAWSZ 32 > +#define GIT_SHA256_HEXSZ (2 * GIT_SHA256_RAWSZ) > +/* The block size of SHA-256. */ > +#define GIT_SHA256_BLKSZ 64 > + > +/* The length in byte and in hex digits of the largest possible hash value. */ > +#define GIT_MAX_RAWSZ GIT_SHA256_RAWSZ > +#define GIT_MAX_HEXSZ GIT_SHA256_HEXSZ > +/* The largest possible block size for any supported hash. */ > +#define GIT_MAX_BLKSZ GIT_SHA256_BLKSZ > + > +struct object_id { > + unsigned char hash[GIT_MAX_RAWSZ]; > +}; > + > +#define the_hash_algo the_repository->hash_algo > + > #endif