This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Implement C11 annex K?
- From: Paul Eggert <eggert at cs dot ucla dot edu>
- To: Russ Allbery <eagle at eyrie dot org>, libc-alpha at sourceware dot org
- Date: Thu, 14 Aug 2014 08:19:46 -0700
- Subject: Re: Implement C11 annex K?
- Authentication-results: sourceware.org; auth=none
- References: <E1XHe8v-0004Ur-Hp at rmm6prod02 dot runbox dot com> <Pine dot LNX dot 4 dot 64 dot 1408132054090 dot 16622 at digraph dot polyomino dot org dot uk> <53EBD7D9 dot 1040008 at cs dot ucla dot edu> <20140813213520 dot GQ12888 at brightrain dot aerifal dot cx> <53EBEACD dot 3070000 at googlemail dot com> <87k36cc559 dot fsf at windlord dot stanford dot edu> <20140814022501 dot GT12888 at brightrain dot aerifal dot cx> <87r40jbq2p dot fsf at windlord dot stanford dot edu> <20140814054610 dot GV12888 at brightrain dot aerifal dot cx> <87ha1fbnrp dot fsf at windlord dot stanford dot edu>
Russ Allbery wrote:
I would really like ... for someone to explain to me why I'm wrong
in the form of more readable and maintainable code
that doesn't use strlcpy/strlcat.
It seems that our emails crossed; please take a look at
https://sourceware.org/ml/libc-alpha/2014-08/msg00226.html
Here's another (untested) way to skin the cat, also considerably nicer
than the strlcpy+strlcat version:
char *
vector_join(const struct vector *vector, const char *sep)
{
char *string;
size_t size;
FILE *f = xopen_memstream(&string, &size);
for (size_t i = 0; i < vector->count; i++)
xfprintf(f, "%s%s", i ? sep : "", vector->strings[i]);
xfclose(f);
return string;
}
This may help to explain why POSIX didn't standardize strlcpy.