]> git.proxmox.com Git - libgit2.git/blob - src/strarray.c
New upstream version 1.1.0+dfsg.1
[libgit2.git] / src / strarray.c
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
12 int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
13 {
14 size_t i;
15
16 assert(tgt && src);
17
18 memset(tgt, 0, sizeof(*tgt));
19
20 if (!src->count)
21 return 0;
22
23 tgt->strings = git__calloc(src->count, sizeof(char *));
24 GIT_ERROR_CHECK_ALLOC(tgt->strings);
25
26 for (i = 0; i < src->count; ++i) {
27 if (!src->strings[i])
28 continue;
29
30 tgt->strings[tgt->count] = git__strdup(src->strings[i]);
31 if (!tgt->strings[tgt->count]) {
32 git_strarray_dispose(tgt);
33 memset(tgt, 0, sizeof(*tgt));
34 return -1;
35 }
36
37 tgt->count++;
38 }
39
40 return 0;
41 }
42
43 void git_strarray_dispose(git_strarray *array)
44 {
45 size_t i;
46
47 if (array == NULL)
48 return;
49
50 for (i = 0; i < array->count; ++i)
51 git__free(array->strings[i]);
52
53 git__free(array->strings);
54
55 memset(array, 0, sizeof(*array));
56 }
57
58 #ifndef GIT_DEPRECATE_HARD
59 void git_strarray_free(git_strarray *array)
60 {
61 git_strarray_dispose(array);
62 }
63 #endif