Windows: fix checked UNICODE build of talocale
[openafs.git] / src / WINNT / talocale / tal_string.cpp
index c30573c..401fb38 100644 (file)
@@ -12,6 +12,8 @@ extern "C" {
 #include <afs/stds.h>
 }
 
+#include <windows.h>
+#include <windowsx.h>
 #include <WINNT/talocale.h>
 #include <stdlib.h>
 
@@ -181,22 +183,22 @@ void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, LONG ids, LPCT
 void cdecl FormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat, ...)
 {
    va_list arg;
-   if (pszFormat != NULL)
+   //if (pszFormat != NULL)
       va_start (arg, pszFormat);
-   vFormatMultiString (ppszTarget, fAddHead, (LONG)pszTemplate, pszFormat, arg);
+   vFormatMultiString (ppszTarget, fAddHead, PtrToLong(pszTemplate), pszFormat, arg);
 }
 
 void cdecl FormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate, LPCTSTR pszFormat, ...)
 {
    va_list arg;
-   if (pszFormat != NULL)
+   //if (pszFormat != NULL)
       va_start (arg, pszFormat);
    vFormatMultiString (ppszTarget, fAddHead, (LONG)idsTemplate, pszFormat, arg);
 }
 
 void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, LPCTSTR pszTemplate, LPCTSTR pszFormat, va_list arg)
 {
-   vFormatMultiString (ppszTarget, fAddHead, (LONG)pszTemplate, pszFormat, arg);
+   vFormatMultiString (ppszTarget, fAddHead, PtrToLong(pszTemplate), pszFormat, arg);
 }
 
 void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplate, LPCTSTR pszFormat, va_list arg)
@@ -212,22 +214,22 @@ void cdecl vFormatMultiString (LPTSTR *ppszTarget, BOOL fAddHead, int idsTemplat
 LPTSTR cdecl FormatString (LPCTSTR psz, LPCTSTR pszFmt, ...)
 {
    va_list arg;
-   if (pszFmt != NULL)
+   //if (pszFmt != NULL)
       va_start (arg, pszFmt);
-   return vFormatString ((LONG)psz, pszFmt, arg);
+   return vFormatString (PtrToLong(psz), pszFmt, arg);
 }
 
 LPTSTR cdecl FormatString (int ids, LPCTSTR pszFmt, ...)
 {
    va_list  arg;
-   if (pszFmt != NULL)
+   //if (pszFmt != NULL)
       va_start (arg, pszFmt);
    return vFormatString ((LONG)ids, pszFmt, arg);
 }
 
 LPTSTR cdecl vFormatString (LPCTSTR psz, LPCTSTR pszFmt, va_list arg)
 {
-   return vFormatString ((LONG)psz, pszFmt, arg);
+   return vFormatString (PtrToLong(psz), pszFmt, arg);
 }
 
 LPTSTR cdecl vFormatString (int ids, LPCTSTR pszFmt, va_list arg)
@@ -271,7 +273,7 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
    LPTSTR   pszOut = NULL;
    LPTSTR   pchOut;
    LPTSTR   pszTemplate;
-   LONG     cch;
+   size_t   cch;
    int      nArgs;
    int      argno;
    TCHAR    szFmt[ cchRESOURCE ];
@@ -281,16 +283,16 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
 
    if (HIWORD(pszSource) != 0) // It's a string
       {
-      pszTemplate = (LPTSTR)pszSource;
+      pszTemplate = (LPTSTR)LongToPtr(pszSource);
       }
    else        // It's a message
       {
-      cch = GetStringLength ((int)pszSource);
+      cch = GetStringLength((INT)pszSource);
 
       if ((pszTemplate = AllocateString (1+cch)) == NULL)
          return NULL;
 
-      GetString (pszTemplate, (int)pszSource, cch);
+      GetString (pszTemplate, (int)pszSource, (INT)cch);
       }
 
             //
@@ -334,7 +336,7 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
 
    if (apszArgs == NULL)
       {
-      if (pszSource != (LONG)pszTemplate)
+      if (pszSource != PtrToLong(pszTemplate))
          FreeString (pszTemplate);
       return NULL;
       }
@@ -347,7 +349,7 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
 
    for (argno = 0; pszFmt && *pszFmt; argno++)
       {
-      LONG     cchMin;
+      size_t   cchMin;
       vartype  vt;
 
       double   arg_f;
@@ -371,7 +373,8 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
       if ((psz = (LPTSTR)lstrchr (&szFmt[1], TEXT('%'))) != NULL)
          *psz = 0;
 
-      for (int ii = 1; szFmt[ii] == TEXT('-') || szFmt[ii] == TEXT(','); ii++)
+      int ii;
+      for (ii = 1; szFmt[ii] == TEXT('-') || szFmt[ii] == TEXT(','); ii++)
          ;
       cchMin = _ttol (&szFmt[ii]);
 
@@ -544,7 +547,7 @@ LPTSTR cdecl vFormatString (LONG pszSource, LPCTSTR pszFmt, va_list arg)
                {
                if ((arg_psz = AllocateString (cch)) == NULL)
                   goto lblDONE;
-               GetString (arg_psz, arg_ids, cch);
+               GetString (arg_psz, arg_ids, (INT)cch);
                }
 
             cch = lstrlen(arg_psz);
@@ -820,21 +823,21 @@ BOOL FormatTime (LPTSTR pszTarget, LPTSTR pszFormatUser, SYSTEMTIME *pst, BOOL f
       }
    else
       {
-      GetTimeFormat (LOCALE_USER_DEFAULT, 0,              &lt, NULL, szTime, cchRESOURCE);
-      GetDateFormat (LOCALE_USER_DEFAULT, DATE_SHORTDATE, &lt, NULL, szDate, cchRESOURCE);
+      GetTimeFormat (LOCALE_USER_DEFAULT, 0, &lt, TEXT("HH:mm:ss"), szTime, cchRESOURCE);
+      GetDateFormat (LOCALE_USER_DEFAULT, 0, &lt, TEXT("yyyy-MM-dd"), szDate, cchRESOURCE);
 
       if (fShowTime && fShowDate)
          {
-         lstrcat (szTime, TEXT(" "));
-         lstrcat (szTime, szDate);
+         lstrcat (szDate, TEXT(" "));
+         lstrcat (szDate, szTime);
          }
-      else if (fShowDate && !fShowTime)
+      else if (!fShowDate && fShowTime)
          {
-         lstrcpy (szTime, szDate);
+         lstrcpy (szDate, szTime);
          }
       }
 
-   wsprintf (pszTarget, FixFormatString (pszFormatUser), szTime);
+   wsprintf (pszTarget, FixFormatString (pszFormatUser), szDate);
    return rc;
 }
 
@@ -962,7 +965,8 @@ void FormatBytes (LPTSTR pszTarget, LPTSTR pszFormatUser, double cb)
       {
       lstrcpy (szFormat, pszFormatUser);
 
-      for (LPTSTR pch = &szFormat[1]; *pch; ++pch)
+      LPTSTR pch;
+      for (pch = &szFormat[1]; *pch; ++pch)
          {
          if (!isfmtgarbage(*pch))
             {
@@ -988,8 +992,8 @@ void FormatBytes (LPTSTR pszTarget, LPTSTR pszFormatUser, double cb)
             // Cheesy bit: if all we have are 0's and "."'s, just
             // make the number read "0".
             //
-
-   for (TCHAR *pch = szJustTheNumber; *pch; ++pch)
+   TCHAR * pch;
+   for (pch = szJustTheNumber; *pch; ++pch)
       {
       if (*pch != TEXT('0') && *pch != TEXT('.'))
          break;
@@ -1419,7 +1423,7 @@ void CopyUnicodeToAnsi (LPSTR pszTargetA, LPCWSTR pszOriginalW, size_t cchMax)
 
    UINT cpTarget = CP_ACP;
    BOOL fDefault = FALSE;
-   size_t cchOut = WideCharToMultiByte (cpTarget, 0, pszOriginalW, cchSource-1, pszTargetA, cchMax * 2, TEXT(" "), &fDefault);
+   size_t cchOut = WideCharToMultiByte (cpTarget, 0, pszOriginalW, (INT)cchSource-1, pszTargetA, (INT)cchMax * 2, " ", &fDefault);
    pszTargetA[ cchOut ] = 0;
 }
 
@@ -1530,13 +1534,12 @@ LPWSTR StringToUnicode (LPCTSTR pszOriginal)
     int len = lstrlen(pszOriginal);
     if ((pszTargetW = AllocateUnicode (1+len)) != NULL) {
 #ifdef UNICODE
-        CopyAnsiToUnicode (pszTargetW, pszOriginal);
+        lstrcpyW ((LPWSTR)pszTargetW, (LPWSTR)pszOriginal);
 #else
-        lstrcpy ((LPSTR)pszTargetW, (LPSTR)pszOriginal);
+        CopyAnsiToUnicode (pszTargetW, pszOriginal);
 #endif
     }
     return pszTargetW;
-#endif
 }
 
 LPTSTR UnicodeToString (LPCWSTR pszOriginalW)
@@ -1546,13 +1549,12 @@ LPTSTR UnicodeToString (LPCWSTR pszOriginalW)
     LPTSTR pszTarget;
     if ((pszTarget = AllocateString (1+lstrlenW(pszOriginalW))) != NULL) {
 #ifdef UNICODE
-        CopyUnicodeToAnsi (pszTarget, pszOriginalW);
+        lstrcpyW ((LPWSTR)pszTarget, (LPWSTR)pszOriginalW);
 #else
-        lstrcpyA ((LPSTR)pszTarget, pszOriginalW);
+        CopyUnicodeToAnsi (pszTarget, pszOriginalW);
 #endif
     }
     return pszTarget;
-#endif
 }
 
 
@@ -1656,7 +1658,8 @@ LPTSTR FixFormatString (LPTSTR pszFormat)
       {
       lstrcpy (szFormat, pszFormat);
 
-      for (LPTSTR pch = &szFormat[1]; *pch; ++pch)
+      LPTSTR pch;
+      for (pch = &szFormat[1]; *pch; ++pch)
          {
          if (!isfmtgarbage(*pch))
             {