Skip to content

Commit e25e382

Browse files
author
Laszlo Ersek
committed
guestfs-utils: import guestfs_int_join_strings()
Copy the guestfs_int_join_strings() function from libguestfs-common @ 3253cd99d135 ("mldrivers: Add support for reading Windows drivers from DriverDatabase", 2023-01-26). Cc: Alban Lecorps <[email protected]> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1792141 Signed-off-by: Laszlo Ersek <[email protected]> Reviewed-by: Richard W.M. Jones <[email protected]> Message-Id: <[email protected]>
1 parent 0e0169e commit e25e382

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

libguestfs/guestfs-utils.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,41 @@ guestfs_int_copy_string_list (char *const *argv)
7777
return ret;
7878
}
7979

80+
char *
81+
guestfs_int_join_strings (const char *sep, char *const *argv)
82+
{
83+
size_t i, len, seplen, rlen;
84+
char *r;
85+
86+
seplen = strlen (sep);
87+
88+
len = 0;
89+
for (i = 0; argv[i] != NULL; ++i) {
90+
if (i > 0)
91+
len += seplen;
92+
len += strlen (argv[i]);
93+
}
94+
len++; /* for final \0 */
95+
96+
r = malloc (len);
97+
if (r == NULL)
98+
return NULL;
99+
100+
rlen = 0;
101+
for (i = 0; argv[i] != NULL; ++i) {
102+
if (i > 0) {
103+
memcpy (&r[rlen], sep, seplen);
104+
rlen += seplen;
105+
}
106+
len = strlen (argv[i]);
107+
memcpy (&r[rlen], argv[i], len);
108+
rlen += len;
109+
}
110+
r[rlen] = '\0';
111+
112+
return r;
113+
}
114+
80115
/**
81116
* Split string at separator character C<sep>, returning the list of
82117
* strings. Returns C<NULL> on memory allocation failure.

libguestfs/guestfs-utils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
extern void guestfs_int_free_string_list (char **);
4949
extern size_t guestfs_int_count_strings (char *const *);
5050
extern char **guestfs_int_copy_string_list (char *const *);
51+
extern char *guestfs_int_join_strings (const char *sep, char *const *);
5152
extern char **guestfs_int_split_string (char sep, const char *);
5253
extern int guestfs_int_random_string (char *ret, size_t len);
5354
extern char *guestfs_int_drive_name (size_t index, char *ret);

0 commit comments

Comments
 (0)