strcat+strcat+strcat == baaad

Francois Gouget fgouget at free.fr
Mon Dec 9 17:02:01 CST 2002


On Tue, 3 Dec 2002, Michal Janusz Miroslaw wrote:
[...]
> Since we are talking about catenating strings only (no %d and family),
> then I would suggest combining speed of cpycat (in glibc there's stpcpy)
> and ease of use of sprintf and use something like that:
[...]
> Then we could write:
>
> strpcpymore(buffer, "path", "/", "file", ".", "ext", NULL);

Yep, that looks good. I guess it would return a pointer to the
terminating '\0' too :-) However I have to note that it is a bit less
flexible than the basic cpycat as you cannot do things like:

cpycat(buf,foo);
if (condition1)
    cpycat(buffer,bar);
if (condition2)
    cpycat(buffer,stuff);
cpycat(buffer,more);


But yes, any of these would have been better than the braindead strcpy
and strcat implementations we have in C libraries.

-- 
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
                  In a world without fences who needs Gates?




More information about the wine-devel mailing list