#ifdef __WIN32__
#include <wchar.h>
-/* For Windows builds, the "tchar" type will be 2 bytes and will be equivalent
- * to "wchar_t" and "utf16lechar". All indicate one code unit of a UTF16-LE
- * string. */
+/*
+ * For Windows builds, the "tchar" type will be 2 bytes and will be equivalent
+ * to "wchar_t" and "utf16lechar". All indicate one coding unit of a string
+ * encoded in UTF-16LE with the additional possibility of unpaired surrogates.
+ */
typedef wchar_t tchar;
# define TCHAR_IS_UTF16LE 1
# define _T(text) L##text
# define tsprintf swprintf
# define tfprintf fwprintf
# define tvfprintf vfwprintf
+# define tscanf swscanf
# define istalpha(c) iswalpha((wchar_t)(c))
# define istspace(c) iswspace((wchar_t)(c))
# define totlower(c) towlower((wchar_t)(c))
# define tstrtol wcstol
# define tstrtod wcstod
# define tstrtoul wcstoul
+# define tstrtoull wcstoull
# define tunlink _wunlink
# define tstrerror _wcserror
# define taccess _waccess
# define tstrdup wcsdup
-# define ttempnam _wtempnam
# define tgetenv _wgetenv
/* The following "tchar" functions do not have exact wide-character equivalents
* on Windows so require parameter rearrangement or redirection to a replacement
# define trename win32_rename_replacement
# define tglob win32_wglob
#else /* __WIN32__ */
-/* For non-Windows builds, the "tchar" type will be one byte and will specify a
- * string in the locale-dependent multibyte encoding. However, only UTF-8 is
- * well supported in this library. */
+/*
+ * For non-Windows builds, the "tchar" type will be one byte and will specify a
+ * string encoded in UTF-8 with the additional possibility of surrogate
+ * codepoints.
+ */
typedef char tchar;
# define TCHAR_IS_UTF16LE 0
# define T(text) text /* In this case, strings of "tchar" are simply strings of
# define tsprintf sprintf
# define tfprintf fprintf
# define tvfprintf vfprintf
+# define tscanf sscanf
# define istalpha(c) isalpha((unsigned char)(c))
# define istspace(c) isspace((unsigned char)(c))
# define totlower(c) tolower((unsigned char)(c))
# define tstrtol strtol
# define tstrtod strtod
# define tstrtoul strtoul
+# define tstrtoull strtoull
# define tmkdir mkdir
# define tstrdup strdup
-# define ttempnam tempnam
# define tgetenv getenv
# define TSTRDUP STRDUP
# define tstrerror_r strerror_r