| /* |
| * 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. |
| */ |
| |
| #include "util.h" |
| |
| #include "common.h" |
| |
| int git_strarray_copy(git_strarray *tgt, const git_strarray *src) |
| { |
| size_t i; |
| |
| assert(tgt && src); |
| |
| memset(tgt, 0, sizeof(*tgt)); |
| |
| if (!src->count) |
| return 0; |
| |
| tgt->strings = git__calloc(src->count, sizeof(char *)); |
| GIT_ERROR_CHECK_ALLOC(tgt->strings); |
| |
| for (i = 0; i < src->count; ++i) { |
| if (!src->strings[i]) |
| continue; |
| |
| tgt->strings[tgt->count] = git__strdup(src->strings[i]); |
| if (!tgt->strings[tgt->count]) { |
| git_strarray_dispose(tgt); |
| memset(tgt, 0, sizeof(*tgt)); |
| return -1; |
| } |
| |
| tgt->count++; |
| } |
| |
| return 0; |
| } |
| |
| void git_strarray_dispose(git_strarray *array) |
| { |
| size_t i; |
| |
| if (array == NULL) |
| return; |
| |
| for (i = 0; i < array->count; ++i) |
| git__free(array->strings[i]); |
| |
| git__free(array->strings); |
| |
| memset(array, 0, sizeof(*array)); |
| } |
| |
| #ifndef GIT_DEPRECATE_HARD |
| void git_strarray_free(git_strarray *array) |
| { |
| git_strarray_dispose(array); |
| } |
| #endif |