diff options
Diffstat (limited to 'src/libgit2/blob.h')
-rw-r--r-- | src/libgit2/blob.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/libgit2/blob.h b/src/libgit2/blob.h new file mode 100644 index 000000000..9a5dda225 --- /dev/null +++ b/src/libgit2/blob.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) the libgit2 contributors. All rights reserved. + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_blob_h__ +#define INCLUDE_blob_h__ + +#include "common.h" + +#include "git2/blob.h" +#include "repository.h" +#include "odb.h" +#include "futils.h" + +struct git_blob { + git_object object; + + union { + git_odb_object *odb; + struct { + const char *data; + git_object_size_t size; + } raw; + } data; + unsigned int raw:1; +}; + +#define GIT_ERROR_CHECK_BLOBSIZE(n) \ + do { \ + if (!git__is_sizet(n)) { \ + git_error_set(GIT_ERROR_NOMEMORY, "blob contents too large to fit in memory"); \ + return -1; \ + } \ + } while(0) + +void git_blob__free(void *blob); +int git_blob__parse(void *blob, git_odb_object *obj); +int git_blob__parse_raw(void *blob, const char *data, size_t size); +int git_blob__getbuf(git_str *buffer, git_blob *blob); + +extern int git_blob__create_from_paths( + git_oid *out_oid, + struct stat *out_st, + git_repository *repo, + const char *full_path, + const char *hint_path, + mode_t hint_mode, + bool apply_filters); + +#endif |