blob: 9fa97203457cfd2ef18d7429c64333c182d0a9d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/*
* 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_git_buf_h__
#define INCLUDE_git_buf_h__
#include "common.h"
/**
* @file git2/buffer.h
* @brief Buffer export structure
*
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
/**
* A data buffer for exporting data from libgit2
*
* Sometimes libgit2 wants to return an allocated data buffer to the
* caller and have the caller take responsibility for freeing that memory.
* To make ownership clear in these cases, libgit2 uses `git_buf` to
* return this data. Callers should use `git_buf_dispose()` to release
* the memory when they are done.
*
* A `git_buf` contains a pointer to a NUL-terminated C string, and
* the length of the string (not including the NUL terminator).
*/
typedef struct {
/**
* The buffer contents. `ptr` points to the start of the buffer
* being returned. The buffer's length (in bytes) is specified
* by the `size` member of the structure, and contains a NUL
* terminator at position `(size + 1)`.
*/
char *ptr;
/**
* This field is reserved and unused.
*/
size_t reserved;
/**
* The length (in bytes) of the buffer pointed to by `ptr`,
* not including a NUL terminator.
*/
size_t size;
} git_buf;
/**
* Use to initialize a `git_buf` before passing it to a function that
* will populate it.
*/
#define GIT_BUF_INIT { NULL, 0, 0 }
/**
* Free the memory referred to by the git_buf.
*
* Note that this does not free the `git_buf` itself, just the memory
* pointed to by `buffer->ptr`.
*
* @param buffer The buffer to deallocate
*/
GIT_EXTERN(void) git_buf_dispose(git_buf *buffer);
GIT_END_DECL
/** @} */
#endif
|