summaryrefslogtreecommitdiff
path: root/src/libudev/strv.c
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2013-07-31 10:46:49 -0400
committerAnthony G. Basile <blueness@gentoo.org>2013-07-31 10:46:49 -0400
commitaa417a4d83999f6d7f092161d5c411b8cbce9977 (patch)
treea3c0da66e997c079d3803c2c72293bbdc73f2ece /src/libudev/strv.c
parentccc30166822f4597ceba3e3b62c09b8f091b9cbb (diff)
static-nodes: remove creation of static nodes if HAVE_LIBKMOD
This address upstream commit edeb68c53f1cdc452016b4c8512586a70b1262e3 and https://bugs.gentoo.org/show_bug.cgi?id=477890. If eudev is configured with --enable-libkmod then we check for kmod >= 14 and ifdef out the code removed in the upstream commit. Otherwise we retain it for modutils. Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'src/libudev/strv.c')
-rw-r--r--src/libudev/strv.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/libudev/strv.c b/src/libudev/strv.c
index 041e20d700..3619701e9d 100644
--- a/src/libudev/strv.c
+++ b/src/libudev/strv.c
@@ -142,6 +142,43 @@ char **strv_new(const char *x, ...) {
return r;
}
+int strv_push(char ***l, char *value) {
+ char **c;
+ unsigned n;
+
+ if (!value)
+ return 0;
+
+ n = strv_length(*l);
+ c = realloc(*l, sizeof(char*) * (n + 2));
+ if (!c)
+ return -ENOMEM;
+
+ c[n] = value;
+ c[n+1] = NULL;
+
+ *l = c;
+ return 0;
+}
+
+int strv_extend(char ***l, const char *value) {
+ char *v;
+ int r;
+
+ if (!value)
+ return 0;
+
+ v = strdup(value);
+ if (!v)
+ return -ENOMEM;
+
+ r = strv_push(l, v);
+ if (r < 0)
+ free(v);
+
+ return r;
+}
+
char **strv_uniq(char **l) {
char **i;