]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blame - db/strvec.c
xfs: zero length symlinks are not valid
[thirdparty/xfsprogs-dev.git] / db / strvec.c
CommitLineData
959ef981 1// SPDX-License-Identifier: GPL-2.0
2bd0ea18 2/*
da23017d
NS
3 * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
4 * All Rights Reserved.
2bd0ea18
NS
5 */
6
6b803e5a 7#include "libxfs.h"
2bd0ea18
NS
8#include "strvec.h"
9#include "output.h"
10#include "malloc.h"
11
12static int count_strvec(char **vec);
13
14void
15add_strvec(
16 char ***vecp,
17 char *str)
18{
19 char *dup;
20 int i;
21 char **vec;
22
23 dup = xstrdup(str);
24 vec = *vecp;
25 i = count_strvec(vec);
26 vec = xrealloc(vec, sizeof(*vec) * (i + 2));
27 vec[i] = dup;
28 vec[i + 1] = NULL;
29 *vecp = vec;
30}
31
32char **
33copy_strvec(
34 char **vec)
35{
36 int i;
37 char **rval;
38
39 i = count_strvec(vec);
40 rval = new_strvec(i);
41 for (i = 0; vec[i] != NULL; i++)
42 rval[i] = xstrdup(vec[i]);
43 return rval;
44}
45
46static int
47count_strvec(
48 char **vec)
49{
50 int i;
51
52 for (i = 0; vec[i] != NULL; i++)
53 continue;
54 return i;
55}
56
57void
58free_strvec(
59 char **vec)
60{
61 int i;
62
63 for (i = 0; vec[i] != NULL; i++)
64 xfree(vec[i]);
65 xfree(vec);
66}
67
68char **
69new_strvec(
70 int count)
71{
72 char **rval;
73
74 rval = xmalloc(sizeof(*rval) * (count + 1));
75 rval[count] = NULL;
76 return rval;
77}
78
79void
80print_strvec(
81 char **vec)
82{
83 int i;
84
85 for (i = 0; vec[i] != NULL; i++)
86 dbprintf("%s", vec[i]);
87}