This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Implement C11 annex K?
- From: Russ Allbery <eagle at eyrie dot org>
- To: Paul Eggert <eggert at cs dot ucla dot edu>
- Cc: libc-alpha at sourceware dot org
- Date: Thu, 14 Aug 2014 10:20:17 -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> <53ECD392 dot 30904 at cs dot ucla dot edu>
Paul Eggert <eggert@cs.ucla.edu> writes:
> It seems that our emails crossed; please take a look at
> https://sourceware.org/ml/libc-alpha/2014-08/msg00226.html
Indeed, they did.
Hm. For some reason, a malloc and free for every component felt really
heavy to me, even for code that wasn't performance-critical. On further
inspection of that feeling, it's probably just premature optimization and
something I should just get over.
Thank you!
> 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.
Ah, indeed. I had completely missed the existence of open_memstream.
Thank you for this as well!
--
Russ Allbery (eagle@eyrie.org) <http://www.eyrie.org/~eagle/>