Re: [PATCH 09/16] Read index-v5
From: Thomas Gummerer <hidden>
Date: 2016-06-15 22:54:24
On 08/02, Nguyen Thai Ngoc Duy wrote:
General note. I wonder if we should create a separate source file for v5 (at least the low level handling part). Partial reading/writing will come (hopefully soon) and read-cache.c on master is already close to 2000 lines.
To me it would make sense, but we'd probably have to split it to at least 3 files, one for index-v2, one for index-v5 and one for the general functions/api.
On Thu, Aug 2, 2012 at 6:01 PM, Thomas Gummerer [off-list ref] wrote:quoted
+static struct cache_entry *cache_entry_from_ondisk_v5(struct ondisk_cache_entry_v5 *ondisk, + struct directory_entry *de, + char *name, + size_t len, + size_t prefix_len) +{ + struct cache_entry *ce = xmalloc(cache_entry_size(len + de->de_pathlen)); + int flags; + + flags = ntoh_s(ondisk->flags);huh? ntoh_s (and ntoh_l below)? search/replace problem?
No, they are correct, Junio introduced this functions with index-v4 for systems which need aligned access. They are defined as written below.
#ifndef NEEDS_ALIGNED_ACCESS
#define ntoh_s(var) ntohs(var)
#define ntoh_l(var) ntohl(var)
#else
static inline uint16_t ntoh_s_force_align(void *p)
{
uint16_t x;
memcpy(&x, p, sizeof(x));
return ntohs(x);
}
static inline uint32_t ntoh_l_force_align(void *p)
{
uint32_t x;
memcpy(&x, p, sizeof(x));
return ntohl(x);
}
#define ntoh_s(var)
ntoh_s_force_align(&(var))
#define ntoh_l(var)
ntoh_l_force_align(&(var))
#endifquoted
+ ce->ce_ctime.sec = 0; + ce->ce_mtime.sec = ntoh_l(ondisk->mtime.sec);-- Duy