Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

108 lines
3.0 KiB

#include "windows.h"
#include "date.h"
#include "uniconv.h"
TIME Time;
DATE Date;
WORD iYearOffset;
HANDLE hinstTimeDate;
WORD cchTimeMax; /* Maximum size of time string */
WORD cchLongDateMax; /* Maximum size of long date string */
VOID CalcCchDateMax(idFirst, idLast)
WORD idFirst;
WORD idLast;
{
TCHAR rgch[CCHMONTH];
register INT cch, cchT;
cch = 0;
while (idFirst <= idLast)
{
cchT = LoadString(hinstTimeDate, idFirst++, rgch, CCHMONTH);
if (cchT > cch)
cch = cchT;
}
cchLongDateMax += cch;
}
VOID LockStrings(id)
WORD id;
{
HANDLE h;
if ((h = FindResource (hinstTimeDate, (LPTSTR) MAKEINTRESOURCE(IDS_DATESTRINGS >> 4), RT_STRING))
&& (h = LoadResource(hinstTimeDate, h)))
{
GlobalLock(h);
}
}
VOID FAR APIENTRY InitTimeDate (HANDLE hInstance)
{
LCID lcid;
int i, id;
TCHAR szBuf[3];
extern TCHAR szDec[5];
hinstTimeDate = hInstance;
/* get current locale */
lcid = GetUserDefaultLCID ();
/* Get time related info */
GetLocaleInfoW (lcid, LOCALE_ITIME, (LPWSTR) szBuf, CharSizeOf(szBuf));
Time.iTime = MyAtoi (szBuf);
GetLocaleInfoW (lcid, LOCALE_ITLZERO, (LPWSTR) szBuf, CharSizeOf(szBuf));
Time.iLZero = MyAtoi (szBuf);
GetLocaleInfoW (lcid, LOCALE_S1159, (LPWSTR) Time.sz1159, CharSizeOf(Time.sz1159));
GetLocaleInfoW (lcid, LOCALE_S2359, (LPWSTR) Time.sz2359, CharSizeOf(Time.sz2359));
GetLocaleInfoW (lcid, LOCALE_STIME, (LPWSTR) szBuf, CharSizeOf(szBuf));
Time.chSep = *szBuf;
/* Calc max size of time string */
if (!Time.iTime)
cchTimeMax = max (lstrlen(Time.sz2359), lstrlen(Time.sz1159));
cchTimeMax += 6;
/* Get date related info */
iYearOffset = GetProfileInt(TEXT("intl"), TEXT("iYearOffset"), 0);
GetLocaleInfoW (lcid, LOCALE_IDATE, (LPWSTR) szBuf, CharSizeOf(szBuf));
Date.iDate = MyAtoi (szBuf);
GetLocaleInfoW (lcid, LOCALE_ILZERO, (LPWSTR) szBuf, CharSizeOf(szBuf));
Date.iLZero = MyAtoi (szBuf);
/* Get short date format */
GetLocaleInfoW (lcid, LOCALE_SSHORTDATE, (LPWSTR) Date.szShortFmt, MAX_SHORTFMT);
/* Get long date format */
GetLocaleInfoW (lcid, LOCALE_SLONGDATE, (LPWSTR) Date.szLongFmt, CCHDATEDISP);
/* Get date/time strings into memory & lock down for all time */
LockStrings(((WORD)IDS_DATESTRINGS >> 4) + 0);
LockStrings(((WORD)IDS_DATESTRINGS >> 4) + 1);
/* Now calculate worst case size of long date string */
/* this is sum of separator strings, plus max of months, plus max of
weekdays, plus 2 digits, plus 4 digits, plus zero terminator */
cchLongDateMax = 2 + 4;
CalcCchDateMax(IDS_MONTHS, IDS_MONTHS + 11);
CalcCchDateMax(IDS_DAYSOFWEEK, IDS_DAYSOFWEEK + 6);
cchLongDateMax += 5; /* room for spaces and commas */
/* Get the intl decimal character for use in Page Setup Box. */
GetLocaleInfoW(lcid, LOCALE_SDECIMAL, szDec, CharSizeOf(szDec));
}