diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-02-10 20:16:42 +0100 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-02-10 20:16:42 +0100 |
commit | f19e3ca28835eab8dbef62915c475caa18f355fe (patch) | |
tree | 65018936e22b2fea693bc57a6433e14e4d127df5 /src/odb.h | |
parent | 18e5b8547d075afc53c2b20ba15ef7c09cb5efd6 (diff) | |
download | libgit2-f19e3ca28835eab8dbef62915c475caa18f355fe.tar.gz |
odb: Proper symlink hashing
Diffstat (limited to 'src/odb.h')
-rw-r--r-- | src/odb.h | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -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 |