On Fri, 01.03.13 18:38, Harald Hoyer (harald.ho...@gmail.com) wrote: > >>>> Btw, strjoin() should really handle empty strings as the first argument. > >>>> > >>>> strjoin(NULL, ",", "TEST") should result in "TEST" .. shouldn't it? > >>>> > >>>> strjoin("", ",", "TEST") ? > >>> > >>> We use NULL as the sentinel here for the varargs list. It just stupidly > >>> concatenates the strings you pass it, one after the other, until we hit > >>> NULL. If you pass NULL as first arg, then we'd just stop there... > >>> > >>> There's strempty() which turns NULL into ""? > >>> > >>> Lennart > >>> > >> > >> Still: > >> strjoin("", ",", "TEST") returns ",TEST" then.. > > > > No, that call will crash, since you forgot the NULL sentinel. Examples: > > > > strjoin("", ",", "TEST", NULL) → ",TEST" > > strjoin("a", "b", "c", NULL) → "abc" > > strjoin("a", "b", "c", "d", NULL) → "abcd" > > strjoin("a", "b", "c", "d", "e", NULL) → "abcde" > > strjoin(NULL) → "" > > strjoin("", "", "", NULL) → "" > > strjoin("abc", "xyz", NULL) → "abcxyz" > > strjoin("abc", NULL, "xyz") → "abc" > > > > That's just trivially simple concatenation, ending at the first > > NULL. Not sure what you expect instead? > > > > Lennart > > > > Oops :) had the wrong thing in my mind :) > > join an array of strings with a separator
Ah, I see. Might make sense to have a strjoin_sep() or so which takes as first arg the separator string to place between each arg. So far we didn't need that anywhere... But if this is useful it would totally make sense to add to src/shared/util.[ch]... Lennart -- Lennart Poettering - Red Hat, Inc. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel