10.12.2013 at 20:48 Lennart Poettering <[email protected]> wrote:

On Wed, 04.12.13 15:27, Maciej Wereski ([email protected]) wrote:


+#ifdef HAVE_XATTR
+static int get_xattrs_from_arg(Item *i){
+        _cleanup_free_ char *xattr = NULL;
+        _cleanup_strv_free_ char **tmp = NULL;
+        char *p;
+        unsigned n, len, strv_len;
+
+        assert(i);
+        if (i->type != SET_XATTR)
+                return 0;
+
+        if (!i->argument) {
+                log_error("%s: Argument can't be empty!", i->path);
+                return -EBADMSG;
+        }
+        xattr = new0(char, strlen(i->argument)+1);
+        if (!xattr)
+                return log_oom();
+
+        tmp = strv_split(i->argument, WHITESPACE);
+        if (!tmp)
+                return log_oom();
+
+        strv_len = strv_length(tmp);
+        for (n = 0; n < strv_len; ++n) {

Sounds like a job for the STRV_FOREACH() macro. Since you don't actually
need the strv as strv here it sounds like you actually really want to
use FOREACH_WORD_QUOTED() for this, which will also do the unquoting for
you.

Well, FOREACH_WORD_QUOTED() won't work properly, because quotation marks
aren't first chars in strings (e.g. user.name="John Smith"). Maybe better
idea would be to introduce mandatory separator (e.g. semicolon) instead of
quotation marks.

regards,

--
Maciej Wereski
Samsung R&D Institute Poland
Samsung Electronics
[email protected]
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to