]>
git.proxmox.com Git - libgit2.git/blob - src/buf.c
2 * Copyright (C) the libgit2 contributors. All rights reserved.
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
11 int git_buf_sanitize(git_buf
*buf
)
15 if (buf
->reserved
> 0)
18 buf
->ptr
= git_str__initstr
;
24 int git_buf_tostr(git_str
*out
, git_buf
*buf
)
29 if (git_buf_sanitize(buf
) < 0)
33 out
->asize
= buf
->reserved
;
34 out
->size
= buf
->size
;
36 buf
->ptr
= git_str__initstr
;
43 int git_buf_fromstr(git_buf
*out
, git_str
*str
)
49 out
->reserved
= str
->asize
;
50 out
->size
= str
->size
;
52 str
->ptr
= git_str__initstr
;
59 void git_buf_dispose(git_buf
*buf
)
64 if (buf
->ptr
!= git_str__initstr
)
67 buf
->ptr
= git_str__initstr
;
72 #ifndef GIT_DEPRECATE_HARD
73 int git_buf_grow(git_buf
*buffer
, size_t target_size
)
77 if (buffer
->reserved
>= target_size
)
80 if (buffer
->ptr
== git_str__initstr
)
81 newptr
= git__malloc(target_size
);
83 newptr
= git__realloc(buffer
->ptr
, target_size
);
89 buffer
->reserved
= target_size
;
93 int git_buf_set(git_buf
*buffer
, const void *data
, size_t datalen
)
97 GIT_ERROR_CHECK_ALLOC_ADD(&alloclen
, datalen
, 1);
99 if (git_buf_grow(buffer
, alloclen
) < 0)
102 memmove(buffer
->ptr
, data
, datalen
);
103 buffer
->size
= datalen
;
104 buffer
->ptr
[buffer
->size
] = '\0';
109 int git_buf_is_binary(const git_buf
*buf
)
111 git_str str
= GIT_STR_INIT_CONST(buf
->ptr
, buf
->size
);
112 return git_str_is_binary(&str
);
115 int git_buf_contains_nul(const git_buf
*buf
)
117 git_str str
= GIT_STR_INIT_CONST(buf
->ptr
, buf
->size
);
118 return git_str_contains_nul(&str
);
121 void git_buf_free(git_buf
*buffer
)
123 git_buf_dispose(buffer
);