From: Shawn Pearce Date: Wed, 23 Aug 2006 06:49:00 +0000 (-0400) Subject: Convert memcpy(a,b,20) to hashcpy(a,b). X-Git-Tag: v1.4.3-rc1~173^2~1 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=8da714939458fed99ff750ca09d4169fe68b034e;p=git.git Convert memcpy(a,b,20) to hashcpy(a,b). This abstracts away the size of the hash values when copying them from memory location to memory location, much as the introduction of hashcmp abstracted away hash value comparsion. A few call sites were using char* rather than unsigned char* so I added the cast rather than open hashcpy to be void*. This is a reasonable tradeoff as most call sites already use unsigned char* and the existing hashcmp is also declared to be unsigned char*. [jc: this is a follow-up patch for merge-recursive.c which is not in "master" yet. The original was sent-in for "next" so I splitted it out. ] Signed-off-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- diff --git a/merge-recursive.c b/merge-recursive.c index 048cca1d1..8a2f69731 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -158,7 +158,7 @@ static struct cache_entry *make_cache_entry(unsigned int mode, size = cache_entry_size(len); ce = xcalloc(1, size); - memcpy(ce->sha1, sha1, 20); + hashcpy(ce->sha1, sha1); memcpy(ce->name, path, len); ce->ce_flags = create_ce_flags(len, stage); ce->ce_mode = create_ce_mode(mode); @@ -355,7 +355,7 @@ static struct path_list *get_unmerged(void) } e = item->util; e->stages[ce_stage(ce)].mode = ntohl(ce->ce_mode); - memcpy(e->stages[ce_stage(ce)].sha, ce->sha1, 20); + hashcpy(e->stages[ce_stage(ce)].sha, ce->sha1); } return unmerged; @@ -636,10 +636,10 @@ static struct merge_file_info merge_file(struct diff_filespec *o, result.clean = 0; if (S_ISREG(a->mode)) { result.mode = a->mode; - memcpy(result.sha, a->sha1, 20); + hashcpy(result.sha, a->sha1); } else { result.mode = b->mode; - memcpy(result.sha, b->sha1, 20); + hashcpy(result.sha, b->sha1); } } else { if (!sha_eq(a->sha1, o->sha1) && !sha_eq(b->sha1, o->sha1)) @@ -648,9 +648,9 @@ static struct merge_file_info merge_file(struct diff_filespec *o, result.mode = a->mode == o->mode ? b->mode: a->mode; if (sha_eq(a->sha1, o->sha1)) - memcpy(result.sha, b->sha1, 20); + hashcpy(result.sha, b->sha1); else if (sha_eq(b->sha1, o->sha1)) - memcpy(result.sha, a->sha1, 20); + hashcpy(result.sha, a->sha1); else if (S_ISREG(a->mode)) { int code = 1, fd; struct stat st; @@ -699,7 +699,7 @@ static struct merge_file_info merge_file(struct diff_filespec *o, if (!(S_ISLNK(a->mode) || S_ISLNK(b->mode))) die("cannot merge modes?"); - memcpy(result.sha, a->sha1, 20); + hashcpy(result.sha, a->sha1); if (!sha_eq(a->sha1, b->sha1)) result.clean = 0; @@ -1096,11 +1096,11 @@ static int process_entry(const char *path, struct stage_data *entry, output("Auto-merging %s", path); o.path = a.path = b.path = (char *)path; - memcpy(o.sha1, o_sha, 20); + hashcpy(o.sha1, o_sha); o.mode = o_mode; - memcpy(a.sha1, a_sha, 20); + hashcpy(a.sha1, a_sha); a.mode = a_mode; - memcpy(b.sha1, b_sha, 20); + hashcpy(b.sha1, b_sha); b.mode = b_mode; mfi = merge_file(&o, &a, &b,