extern char *strconcat(const char *s, const char *suffix);
extern char *strfconcat(const char *s, const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
+
+extern int strappend(char **a, const char *b);
+
extern const char *split(const char **state, size_t *l, const char *separator, int quoted);
extern int skip_fline(FILE *fp);
return res;
}
+int strappend(char **a, const char *b)
+{
+ size_t al, bl;
+ char *tmp;
+
+ if (!a)
+ return -EINVAL;
+ if (!b || !*b)
+ return 0;
+ if (!*a) {
+ *a = strdup(b);
+ return !*a ? -ENOMEM : 0;
+ }
+
+ al = strlen(*a);
+ bl = strlen(b);
+
+ tmp = realloc(*a, al + bl + 1);
+ if (!tmp)
+ return -ENOMEM;
+ *a = tmp;
+ memcpy((*a) + al, b, bl + 1);
+ return 0;
+}
+
static size_t strcspn_escaped(const char *s, const char *reject)
{
int escaped = 0;
#include "statfs_magic.h"
#include "sysfs.h"
-int append_string(char **a, const char *b)
-{
- size_t al, bl;
- char *tmp;
-
- assert(a);
-
- if (!b || !*b)
- return 0;
- if (!*a) {
- *a = strdup(b);
- return !*a ? -ENOMEM : 0;
- }
-
- al = strlen(*a);
- bl = strlen(b);
-
- tmp = realloc(*a, al + bl + 1);
- if (!tmp)
- return -ENOMEM;
- *a = tmp;
- memcpy((*a) + al, b, bl + 1);
- return 0;
-}
-
/*
* Return 1 if the file is not accessible or empty
*/
return 0;
}
-static int test_appendstr(struct libmnt_test *ts, int argc, char *argv[])
-{
- char *str = strdup(argv[1]);
- const char *ap = argv[2];
-
- append_string(&str, ap);
- printf("new string: '%s'\n", str);
-
- free(str);
- return 0;
-}
-
static int test_mountpoint(struct libmnt_test *ts, int argc, char *argv[])
{
char *path = canonicalize_path(argv[1]),
{ "--filesystems", test_filesystems, "[<pattern>] list /{etc,proc}/filesystems" },
{ "--starts-with", test_startswith, "<string> <prefix>" },
{ "--ends-with", test_endswith, "<string> <prefix>" },
- { "--append-string", test_appendstr, "<string> <appendix>" },
{ "--mountpoint", test_mountpoint, "<path>" },
{ "--cd-parent", test_chdir, "<path>" },
{ "--kernel-cmdline",test_kernel_cmdline, "<option> | <option>=" },