diff options
author | Jeff King <peff@peff.net> | 2014-01-23 16:26:42 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-01-23 14:03:48 -0800 |
commit | c3d8da571f11b0146e60591c040da399d411c3f2 (patch) | |
tree | e04be828b55e2a9d7d5d6832c3735a218a6ac82d /compat | |
parent | block-sha1: factor out get_be and put_be wrappers (diff) | |
download | tgif-c3d8da571f11b0146e60591c040da399d411c3f2.tar.xz |
read-cache: use get_be32 instead of hand-rolled ntoh_l
Commit d60c49c (read-cache.c: allow unaligned mapping of the
index file, 2012-04-03) introduced helpers to access
unaligned data. However, we already have get_be32, which has
a few advantages:
1. It's already written, so we avoid duplication.
2. It's probably faster, since it does the endian
conversion and the alignment fix at the same time.
3. The get_be32 code is well-tested, having been in
block-sha1 for a long time. By contrast, our custom
helpers were probably almost never used, since the user
needed to manually define a macro to enable them.
We have to add a get_be16 implementation to the existing
get_be32, but that is very simple to do.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat')
-rw-r--r-- | compat/bswap.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compat/bswap.h b/compat/bswap.h index 7d17953a65..120c6c1d37 100644 --- a/compat/bswap.h +++ b/compat/bswap.h @@ -136,11 +136,15 @@ static inline uint64_t git_bswap64(uint64_t x) defined(__powerpc__) || defined(__powerpc64__) || \ defined(__s390__) || defined(__s390x__) +#define get_be16(p) ntohs(*(unsigned short *)(p)) #define get_be32(p) ntohl(*(unsigned int *)(p)) #define put_be32(p, v) do { *(unsigned int *)(p) = htonl(v); } while (0) #else +#define get_be16(p) ( \ + (*((unsigned char *)(p) + 0) << 8) | \ + (*((unsigned char *)(p) + 1) << 0) ) #define get_be32(p) ( \ (*((unsigned char *)(p) + 0) << 24) | \ (*((unsigned char *)(p) + 1) << 16) | \ |