const wchar_t *format, // IN:
va_list arguments); // IN:
-unsigned char *Str_Mbscpy(char *buf, // OUT:
- const char *src, // IN:
- size_t maxSize); // IN:
-unsigned char *Str_Mbscat(char *buf, // IN/OUT:
- const char *src, // IN:
- size_t maxSize); // IN:
-
/*
* These are handly for Windows programmers. They are like
* the _tcs functions, but with Str_Strcpy-style bounds checking.
- *
- * We don't have Str_Mbsncat() because it has some odd semantic
- * ambiguity (whether to truncate in the middle of a multibyte
- * sequence) that I want to stay away from. -- edward
*/
#ifdef _WIN32
#define Str_Tcscpy(s1, s2, n) Str_Wcscpy(s1, s2, n)
#define Str_Tcscat(s1, s2, n) Str_Wcscat(s1, s2, n)
#else
- #define Str_Tcscpy(s1, s2, n) Str_Mbscpy(s1, s2, n)
- #define Str_Tcscat(s1, s2, n) Str_Mbscat(s1, s2, n)
+ #define Str_Tcscpy(s1, s2, n) Str_Strcpy(s1, s2, n)
+ #define Str_Tcscat(s1, s2, n) Str_Strcat(s1, s2, n)
#endif
#endif
}
-/*
- *----------------------------------------------------------------------
- *
- * Str_Mbscpy --
- *
- * Wrapper for _mbscpy that checks for buffer overruns.
- *
- * Results:
- * Same as strcpy.
- *
- * Side effects:
- * None.
- *
- *----------------------------------------------------------------------
- */
-
-unsigned char *
-Str_Mbscpy(char *buf, // OUT
- const char *src, // IN
- size_t maxSize) // IN
-{
- size_t len;
-
- len = strlen(src);
- if (len >= maxSize) {
- Panic("%s:%d Buffer too small\n", __FILE__, __LINE__);
- }
- return memcpy(buf, src, len + 1);
-}
-
-
-/*
- *----------------------------------------------------------------------
- *
- * Str_Mbscat --
- *
- * Wrapper for _mbscat that checks for buffer overruns.
- *
- * The Microsoft _mbscat may or may not deal with tailing
- * partial multibyte sequence in buf. We don't.
- *
- * Results:
- * Same as strcat.
- *
- * Side effects:
- * None.
- *
- *----------------------------------------------------------------------
- */
-
-unsigned char *
-Str_Mbscat(char *buf, // IN/OUT
- const char *src, // IN
- size_t maxSize) // IN
-{
- size_t bufLen;
- size_t srcLen;
-
- bufLen = strlen(buf);
- srcLen = strlen(src);
-
- /* The first comparison checks for numeric overflow */
- if (bufLen + srcLen < srcLen || bufLen + srcLen >= maxSize) {
- Panic("%s:%d Buffer too small\n", __FILE__, __LINE__);
- }
-
- memcpy(buf + bufLen, src, srcLen + 1);
-
- return (unsigned char *)buf;
-}
-
-
/*
*-----------------------------------------------------------------------------
*