From: Lennart Poettering Date: Fri, 19 Nov 2021 10:22:44 +0000 (+0100) Subject: strv: make sure FOREACH_STRING() can be nested X-Git-Tag: v250-rc1~205^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f85b12d6fdb6c2cce65d61101922a956cf645045;p=thirdparty%2Fsystemd.git strv: make sure FOREACH_STRING() can be nested --- diff --git a/src/basic/strv.h b/src/basic/strv.h index a56ef941399..2df16a8962e 100644 --- a/src/basic/strv.h +++ b/src/basic/strv.h @@ -206,10 +206,13 @@ void strv_print(char * const *l); _found; \ }) -#define FOREACH_STRING(x, y, ...) \ - for (char **_l = STRV_MAKE(({ x = y; }), ##__VA_ARGS__); \ +#define _FOREACH_STRING(uniq, x, y, ...) \ + for (char **UNIQ_T(l, uniq) = STRV_MAKE(({ x = y; }), ##__VA_ARGS__); \ x; \ - x = *(++_l)) + x = *(++UNIQ_T(l, uniq))) + +#define FOREACH_STRING(x, y, ...) \ + _FOREACH_STRING(UNIQ, x, y, ##__VA_ARGS__) char **strv_reverse(char **l); char **strv_shell_escape(char **l, const char *bad);