Re: [reSIProcate] Visual Studio 2005 compilation warnings of 1.4 branch
On 12/9/08 5:13 PM, Matthias Moetje wrote:
Although this wrapper might seem a bit more complex, it can even improve
performance (compared to strncpy alone) when copying small strings to
large buffers,
But it will be markedly slower when copying strings into buffers that
are on the order of the correct size, which is by far the more common
case -- you end up scanning the string twice to comply with the behavior
specified for strcpy_s.
An advantage with this approach is that this will stronger force
us to check the result of the *_s functions in the code and take
appropriate measures which is not the case with the strn* functions.
If you want an alternate model to emulate, you're far better off with
strlcpy -- you can perform the same checks as strcpy_s without the
performance penalty (and it doesn't null-fill the buffer like strncpy).
For unsupported platforms, you can pull in an implementation from here:
http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlcpy.c?rev=1.11&content-type=text/x-cvsweb-markup
(And, if you need a strlcat:
http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/strlcat.c?rev=1.13&content-type=text/x-cvsweb-markup)
/a