summaryrefslogtreecommitdiff
path: root/src/odb.h
diff options
context:
space:
mode:
authorVicent Martí <tanoku@gmail.com>2012-02-10 20:16:42 +0100
committerVicent Martí <tanoku@gmail.com>2012-02-10 20:16:42 +0100
commitf19e3ca28835eab8dbef62915c475caa18f355fe (patch)
tree65018936e22b2fea693bc57a6433e14e4d127df5 /src/odb.h
parent18e5b8547d075afc53c2b20ba15ef7c09cb5efd6 (diff)
downloadlibgit2-f19e3ca28835eab8dbef62915c475caa18f355fe.tar.gz
odb: Proper symlink hashing
Diffstat (limited to 'src/odb.h')
-rw-r--r--src/odb.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/odb.h b/src/odb.h
index fd0787e84..d5340ef7b 100644
--- a/src/odb.h
+++ b/src/odb.h
@@ -39,7 +39,32 @@ struct git_odb {
git_cache cache;
};
+/*
+ * Hash a git_rawobj internally.
+ * The `git_rawobj` is supposed to be previously initialized
+ */
int git_odb__hashobj(git_oid *id, git_rawobj *obj);
+
+/*
+ * Hash an open file descriptor.
+ * This is a performance call when the contents of a fd need to be hashed,
+ * but the fd is already open and we have the size of the contents.
+ *
+ * Saves us some `stat` calls.
+ *
+ * The fd is never closed, not even on error. It must be opened and closed
+ * by the caller
+ */
int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_otype type);
+/*
+ * Hash a `path`, assuming it could be a POSIX symlink: if the path is a symlink,
+ * then the raw contents of the symlink will be hashed. Otherwise, this will
+ * fallback to `git_odb__hashfd`.
+ *
+ * The hash type for this call is always `GIT_OBJ_BLOB` because symlinks may only
+ * point to blobs.
+ */
+int git_odb__hashlink(git_oid *out, const char *path);
+
#endif