]> git.proxmox.com Git - libgit2.git/blame - src/strarray.c
Bump debhelper compatibility level to 13
[libgit2.git] / src / strarray.c
CommitLineData
22a2d3d5
UG
1/*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
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.
6 */
7
8#include "util.h"
9
10#include "common.h"
11
12int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
13{
14 size_t i;
15
c25aa7cd
PP
16 GIT_ASSERT_ARG(tgt);
17 GIT_ASSERT_ARG(src);
22a2d3d5
UG
18
19 memset(tgt, 0, sizeof(*tgt));
20
21 if (!src->count)
22 return 0;
23
24 tgt->strings = git__calloc(src->count, sizeof(char *));
25 GIT_ERROR_CHECK_ALLOC(tgt->strings);
26
27 for (i = 0; i < src->count; ++i) {
28 if (!src->strings[i])
29 continue;
30
31 tgt->strings[tgt->count] = git__strdup(src->strings[i]);
32 if (!tgt->strings[tgt->count]) {
33 git_strarray_dispose(tgt);
34 memset(tgt, 0, sizeof(*tgt));
35 return -1;
36 }
37
38 tgt->count++;
39 }
40
41 return 0;
42}
43
44void git_strarray_dispose(git_strarray *array)
45{
46 size_t i;
47
48 if (array == NULL)
49 return;
50
51 for (i = 0; i < array->count; ++i)
52 git__free(array->strings[i]);
53
54 git__free(array->strings);
55
56 memset(array, 0, sizeof(*array));
57}
58
59#ifndef GIT_DEPRECATE_HARD
60void git_strarray_free(git_strarray *array)
61{
62 git_strarray_dispose(array);
63}
64#endif