summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorCarlos Rica <jasampler@gmail.com>2007-09-11 03:17:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-09-26 20:42:10 (GMT)
commit102c2338da0b0954a04742f5cbe307fa6b49f225 (patch)
tree9f8ce90c6b32050761f10783a9b7bbb2aea286a0 /read-cache.c
parentbce92405aebf217a4738bab0df89516910818e68 (diff)
downloadgit-102c2338da0b0954a04742f5cbe307fa6b49f225.zip
git-102c2338da0b0954a04742f5cbe307fa6b49f225.tar.gz
git-102c2338da0b0954a04742f5cbe307fa6b49f225.tar.bz2
Move make_cache_entry() from merge-recursive.c into read-cache.c
The function make_cache_entry() is too useful to be hidden away in merge-recursive. So move it to libgit.a (exposing it via cache.h). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c
index 8b1c94e..536f4d0 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -434,6 +434,31 @@ int add_file_to_index(struct index_state *istate, const char *path, int verbose)
return 0;
}
+struct cache_entry *make_cache_entry(unsigned int mode,
+ const unsigned char *sha1, const char *path, int stage,
+ int refresh)
+{
+ int size, len;
+ struct cache_entry *ce;
+
+ if (!verify_path(path))
+ return NULL;
+
+ len = strlen(path);
+ size = cache_entry_size(len);
+ ce = xcalloc(1, size);
+
+ hashcpy(ce->sha1, sha1);
+ memcpy(ce->name, path, len);
+ ce->ce_flags = create_ce_flags(len, stage);
+ ce->ce_mode = create_ce_mode(mode);
+
+ if (refresh)
+ return refresh_cache_entry(ce, 0);
+
+ return ce;
+}
+
int ce_same_name(struct cache_entry *a, struct cache_entry *b)
{
int len = ce_namelen(a);