]> wimlib.net Git - wimlib/blobdiff - include/wimlib_tchar.h
mount_image.c: add fallback definitions of RENAME_* constants
[wimlib] / include / wimlib_tchar.h
index c372b820e1cccd2b801915c5bc854b4abaab6654..781f370c7d42760ebb3391ee6adc7b6daea2e702 100644 (file)
@@ -4,11 +4,13 @@
 /* Functions to act on "tchar" strings, which have a platform-dependent encoding
  * and character size. */
 
-#ifdef __WIN32__
+#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
@@ -28,13 +30,16 @@ typedef wchar_t tchar;
 #  define tsprintf     swprintf
 #  define tfprintf     fwprintf
 #  define tvfprintf    vfwprintf
-#  define istalpha     iswalpha
-#  define istspace     iswspace
+#  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 tstrcmp      wcscmp
 #  define tstrncmp     wcsncmp
 #  define tstrchr      wcschr
 #  define tstrpbrk     wcspbrk
 #  define tstrrchr     wcsrchr
+#  define tstrstr      wcsstr
 #  define tstrlen      wcslen
 #  define tmemcmp      wmemcmp
 #  define tstrcasecmp   _wcsicmp
@@ -49,25 +54,27 @@ typedef wchar_t tchar;
 #  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
-#  define totlower(c)  towlower((wchar_t)(c))
 /* The following "tchar" functions do not have exact wide-character equivalents
  * on Windows so require parameter rearrangement or redirection to a replacement
  * function defined ourselves. */
 #  define TSTRDUP      WCSDUP
 #  define tmkdir(path, mode) _wmkdir(path)
-#  define tstrerror_r   win32_strerror_r_replacement
+#  define tstrerror_r(errnum, buf, bufsize) \
+                       _wcserror_s((buf), (bufsize), (errnum))
 #  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. */
+#else /* _WIN32 */
+/*
+ * 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
@@ -87,13 +94,16 @@ typedef char tchar;
 #  define tsprintf     sprintf
 #  define tfprintf     fprintf
 #  define tvfprintf    vfprintf
-#  define istalpha     isalpha
-#  define istspace     isspace
+#  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 tstrcmp      strcmp
 #  define tstrncmp     strncmp
 #  define tstrchr      strchr
 #  define tstrpbrk     strpbrk
 #  define tstrrchr     strrchr
+#  define tstrstr      strstr
 #  define tstrlen      strlen
 #  define tmemcmp      memcmp
 #  define tstrcasecmp   strcasecmp
@@ -110,16 +120,15 @@ typedef char tchar;
 #  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 totlower(c)  tolower((unsigned char)(c))
 #  define TSTRDUP      STRDUP
 #  define tstrerror_r  strerror_r
 #  define trename      rename
 #  define taccess      access
 #  define tglob                glob
-#endif /* !__WIN32__ */
+#endif /* !_WIN32 */
 
 #endif /* _WIMLIB_TCHAR_H */