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.
|
|
/*
* UTIL.C * * Point-of-Sale Control Panel Applet * * Author: Ervin Peretz * * (c) 2001 Microsoft Corporation */
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <cpl.h>
#include <setupapi.h>
#include <hidsdi.h>
#include "internal.h"
#include "res.h"
#include "debug.h"
/*
* WStrNCpy * * Like wcsncpy, but terminates the string if truncated. * Also, tolerates NULL src string. */ ULONG WStrNCpy(WCHAR *dest, const WCHAR *src, ULONG maxWChars) { ULONG wCharsWritten = 0;
ASSERT(dest);
if (src){ while ((maxWChars-- > 1) && (*dest++ = *src++)){ wCharsWritten++; } if (maxWChars == 1){ *dest = L'\0'; wCharsWritten++; } } else { *dest = L'\0'; wCharsWritten++; }
return wCharsWritten; }
/*
* AsciiToWChar * * Like mbstowcs, but terminates the string if truncated. * Also, tolerates NULL ascii string. */ ULONG AsciiToWChar(WCHAR *dest, const char *src, ULONG maxChars) { ULONG charsWritten = 0;
if (src){ while ((maxChars-- > 1) && (*dest++ = (WCHAR)*src++)){ charsWritten++; } if (maxChars == 1){ *dest = (WCHAR)NULL; charsWritten++; } } else { *dest = (WCHAR)NULL; charsWritten++; }
return charsWritten; }
VOID IntToWChar(WCHAR *buf, DWORD x) { int i; WCHAR tmpbuf[11] = {0};
if (x){ for (i = 10; x && (i >= 0); i--){ tmpbuf[i] = (WCHAR)(L'0' + (x % 10)); x /= 10; }
WStrNCpy(buf, &tmpbuf[i+1], 11); } else { WStrNCpy(buf, L"0", 2); } }
VOID HexToWChar(WCHAR *buf, DWORD x) { int i; WCHAR tmpbuf[9] = {0};
if (x){ for (i = 7; x && (i >= 0); i--){ ULONG nibble = (x % 16); if (nibble < 10){ tmpbuf[i] = (WCHAR)(L'0' + nibble); } else { tmpbuf[i] = (WCHAR)(L'A' + nibble - 10); } x /= 16; }
WStrNCpy(buf, &tmpbuf[i+1], 9); } else { WStrNCpy(buf, L"0", 2); } }
|