Leaked source code of windows server 2003
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.
|
|
//+----------------------------------------------------------------------------
//
// File: utility.cpp
//
// Module: CMMON32.EXE
//
// Synopsis: Utility functions for cmmon32.exe.
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Author: quintinb Created Header 08/16/99
//
//+----------------------------------------------------------------------------
#include "cmmaster.h"
#include "cm_misc.h"
#include <stdio.h>
#include "resource.h"
#include <stdlib.h>
//+----------------------------------------------------------------------------
//
// Function: FmtNum
//
// Synopsis: Formats a number according to current locale
//
// Arguments: DWORD dwNum - Number to be formatted
// LPTSTR pszNum - Buffer to receive formatted output
// DWORD dwNumSize - Size of buffer
//
// Returns: Nothing
//
// History: nickball Created Header 3/30/98
//
//+----------------------------------------------------------------------------
void FmtNum(DWORD dwNum, LPSTR pszNum, DWORD dwNumSize) { static BOOL bLocaleInit = FALSE; static UINT nDecimalDigits; DWORD dwNumLen; CHAR szRawNum[MAX_PATH];
if (!bLocaleInit) { int iRes;
bLocaleInit = TRUE; iRes = GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IDIGITS, szRawNum, (sizeof(szRawNum) / sizeof(CHAR)) - 1); #ifdef DEBUG
if (!iRes) { CMTRACE1(TEXT("FmtNum() GetLocaleInfo() failed, GLE=%u."), GetLastError()); } #endif
nDecimalDigits = (UINT)CmAtolA(szRawNum); } wsprintfA(szRawNum, "%u", dwNum); GetNumberFormatA(LOCALE_USER_DEFAULT, 0, szRawNum, NULL, pszNum, (dwNumSize / sizeof(CHAR)) - 1);
dwNumLen = lstrlenA(pszNum); if (nDecimalDigits && (dwNumLen > nDecimalDigits) && !CmIsDigitA(pszNum+dwNumLen - nDecimalDigits - 1)) { pszNum[dwNumLen - nDecimalDigits - 1] = 0; } else { CMTRACE(TEXT("FmtNum() unexpected decimal output.")); bLocaleInit = FALSE; } }
|