chiark / gitweb /
Use %m instead of strerror(errno) where appropiate
[elogind.git] / src / shared / strv.h
index 2dc2bc6c492bf6139a679896cdbaea10e7268102..e26ab828d2598922a1a2b2148d5d8624ea142988 100644 (file)
@@ -39,7 +39,7 @@ unsigned strv_length(char * const *l) _pure_;
 int strv_extend_strv(char ***a, char **b);
 int strv_extend_strv_concat(char ***a, char **b, const char *suffix);
 int strv_extend(char ***l, const char *value);
-int strv_extendf(char ***l, const char *format, ...);
+int strv_extendf(char ***l, const char *format, ...) _printf_(2,0);
 int strv_push(char ***l, char *value);
 int strv_consume(char ***l, char *value);
 
@@ -119,3 +119,15 @@ void strv_print(char **l);
         })
 
 #define STR_IN_SET(x, ...) strv_contains(STRV_MAKE(__VA_ARGS__), x)
+
+#define FOREACH_STRING(x, ...)                               \
+        for (char **_l = ({                                  \
+                char **_ll = STRV_MAKE(__VA_ARGS__);         \
+                x = _ll ? _ll[0] : NULL;                     \
+                _ll;                                         \
+        });                                                  \
+        _l && *_l;                                           \
+        x = ({                                               \
+                _l ++;                                       \
+                _l[0];                                       \
+        }))