Microsoft provides a surprisingly good (but proprietary) API inside strsafe.h. StringCchPrintfA can be substituted for snprintf but the return value is different. A small wrapper function around StringCchPrintfExA could get you enough information to emulate snprintf well. But sprintf_s might be good enough for the limited uses inside flac, as you said.
Sent from my iPhone On Mar 14, 2013, at 9:09 PM, Erik de Castro Lopo <mle...@mega-nerd.com> wrote: > Christoph Terasa wrote: > >> Since MS refuses to support C99, the common practice is to use either >> >> sprintf_s: >> http://msdn.microsoft.com/en-us/library/ce3zzk1k(v=VS.80).aspx >> _snprintf_s: >> http://msdn.microsoft.com/de-de/library/f30dzcf6(v=VS.80).aspx >> >> The former can be used as a drop-in replacement of snprintf via a >> define, the latter takes an additional argument count which can limit >> the bytes written to the buffer additionally. > > Hmm, the first can be used as a drop-in replacement for many but > not all uses of ISO C99 snprintf. For the uses in FLAC, it should > be sufficient, we just have to be careful not to rely on the return > value. > >> DO NOT use >> _snprintf: >> http://msdn.microsoft.com/de-de/library/2ts7cx93(v=vs.80).aspx >> >> since this does not NULL terminate if the length of the buffer is equal >> to the given buffer size (or larger than), and this differs from the std >> behaviour as stated at e.g. http://linux.die.net/man/3/snprintf > > Yes, now I remember, that one is horribly broken. > > Erik > -- > ---------------------------------------------------------------------- > Erik de Castro Lopo > http://www.mega-nerd.com/ > _______________________________________________ > flac-dev mailing list > flac-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/flac-dev _______________________________________________ flac-dev mailing list flac-dev@xiph.org http://lists.xiph.org/mailman/listinfo/flac-dev