chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus-proxy: close each connection fd only once
[elogind.git]
/
src
/
shared
/
strv.c
diff --git
a/src/shared/strv.c
b/src/shared/strv.c
index fdb658c0a33696a0e5d644f1c2636748ce0c3a5e..e418312d52a6a9cb28a25994971591431f651f42 100644
(file)
--- a/
src/shared/strv.c
+++ b/
src/shared/strv.c
@@
-69,7
+69,7
@@
char *strv_find_startswith(char **l, const char *name) {
return NULL;
}
return NULL;
}
-void strv_
free
(char **l) {
+void strv_
clear
(char **l) {
char **k;
if (!l)
char **k;
if (!l)
@@
-78,6
+78,11
@@
void strv_free(char **l) {
for (k = l; *k; k++)
free(*k);
for (k = l; *k; k++)
free(*k);
+ *l = NULL;
+}
+
+void strv_free(char **l) {
+ strv_clear(l);
free(l);
}
free(l);
}
@@
-519,6
+524,16
@@
char **strv_uniq(char **l) {
return l;
}
return l;
}
+bool strv_is_uniq(char **l) {
+ char **i;
+
+ STRV_FOREACH(i, l)
+ if (strv_find(i+1, *i))
+ return false;
+
+ return true;
+}
+
char **strv_remove(char **l, const char *s) {
char **f, **t;
char **strv_remove(char **l, const char *s) {
char **f, **t;
@@
-659,3
+674,21
@@
int strv_extendf(char ***l, const char *format, ...) {
return strv_consume(l, x);
}
return strv_consume(l, x);
}
+
+char **strv_reverse(char **l) {
+ unsigned n, i;
+
+ n = strv_length(l);
+ if (n <= 1)
+ return l;
+
+ for (i = 0; i < n / 2; i++) {
+ char *t;
+
+ t = l[i];
+ l[i] = l[n-1-i];
+ l[n-1-i] = t;
+ }
+
+ return l;
+}