]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/strutils: add strappend()
authorKarel Zak <kzak@redhat.com>
Thu, 5 Aug 2021 13:42:15 +0000 (15:42 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 5 Aug 2021 13:42:15 +0000 (15:42 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/strutils.h
lib/strutils.c
libmount/src/fs.c
libmount/src/mountP.h
libmount/src/tab.c
libmount/src/utils.c

index e7edd852e353bceff2e9630a84a5cf1e383b8fc9..f671b3ba6977a74175cbec6e2bc2dfe7ae67c0e0 100644 (file)
@@ -382,6 +382,9 @@ extern char *strnconcat(const char *s, const char *suffix, size_t b);
 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);
index 794203abd18cdb74985a9c2a66735457cfe464f6..3f29654fe6d223c9d0bea74c06a2df5815589119 100644 (file)
@@ -992,6 +992,31 @@ char *strfconcat(const char *s, const char *format, ...)
        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;
index 8b739d6b343776605fbbe2be959c3f5cd0e90a91..b44d310ee2b7cfefb170e4810194df92452636d1 100644 (file)
@@ -1369,7 +1369,7 @@ int mnt_fs_append_comment(struct libmnt_fs *fs, const char *comm)
        if (!fs)
                return -EINVAL;
 
-       return append_string(&fs->comment, comm);
+       return strappend(&fs->comment, comm);
 }
 
 /**
index a34c953baf8d7eae194739413914e694a0fa8ad5..b98d28875af00858f6e96ba44757b16f66078373 100644 (file)
@@ -95,7 +95,6 @@ extern int mnt_run_test(struct libmnt_test *tests, int argc, char *argv[]);
 
 /* utils.c */
 extern int mnt_valid_tagname(const char *tagname);
-extern int append_string(char **a, const char *b);
 
 extern const char *mnt_statfs_get_fstype(struct statfs *vfs);
 extern int is_file_empty(const char *name);
index 5fd4608646cc8c4b89d23d5aa4db5ed9fd620ba4..110560176eb8a9dded399147139d0248b720448b 100644 (file)
@@ -309,7 +309,7 @@ int mnt_table_append_intro_comment(struct libmnt_table *tb, const char *comm)
 {
        if (!tb)
                return -EINVAL;
-       return append_string(&tb->comm_intro, comm);
+       return strappend(&tb->comm_intro, comm);
 }
 
 /**
@@ -350,7 +350,7 @@ int mnt_table_append_trailing_comment(struct libmnt_table *tb, const char *comm)
 {
        if (!tb)
                return -EINVAL;
-       return append_string(&tb->comm_tail, comm);
+       return strappend(&tb->comm_tail, comm);
 }
 
 /**
index 35afce32c086fcb83318919afc499e5fc67040a5..c321a98811e0bfad8a0f2a21588c4ad70cfa3255 100644 (file)
 #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
  */
@@ -1205,18 +1180,6 @@ static int test_endswith(struct libmnt_test *ts, int argc, char *argv[])
        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]),
@@ -1343,7 +1306,6 @@ int main(int argc, char *argv[])
        { "--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>=" },