[vox-tech] strerror deprecated?

Peter Jay Salzman p at dirac.org
Tue Dec 26 09:30:26 PST 2006


Hi all,

Trying to write portable/correct code between Linux and MS Visual C++.

The cl.exe compiler is telling me that "strerror() is deprecated".  Is that
true?  I never heard such a thing.  Tried Googling and couldn't find any
mention of strerror() being deprecated.

The compiler also told me that strerror() was unsafe.  After thinking about
it for a second, I'm guessing it meant "thread unsafe".

Lastly, the compiler told me that I should use strerror_s() which is more
safe.  I looked at the prototype for this function and it requires a buffer,
the buffer's length, and the errno.  Passing a char * to be filled by a
function when you don't know how large of a buffer that function wants
hardly sounds like a good idea.  How should this function be used safely?
Keep allocating memory until the buffer isn't filled all the way?  Sounds
like I would need to write my own strerror function just to make sure the
buffer is large enough.  Why would a standards committee do such a thing?

Lastly, strerror_s doesn't appear in any man pages on my Linux system.
However, it does appear to be similar to strerror_r() which my man pages say
is POSIX compliant (under a suitable #define).

What's the quickest fastest way of using strerror_r if on Linux and
strerror_s if on Windows?

Thanks,
Peter

-- 
How VBA rounds a number depends on the number's internal representation.
You cannot always predict how it will round when the rounding digit is 5.
If you want a rounding function that rounds according to predictable rules,
you should write your own.
              -- MSDN, on Microsoft VBA's "stochastic" rounding function

Peter Jay Salzman, email: p at dirac.org web: http://www.dirac.org/p    
PGP Fingerprint: B9F1 6CF3 47C4 7CD8 D33E  70A9 A3B9 1945 67EA 951D


More information about the vox-tech mailing list