WindowsXP-SP1/ds/nw/nwscript/wide.c
2020-09-30 16:53:49 +02:00

150 lines
3.3 KiB
C

/*************************************************************************
*
* WIDE.C
*
* Wide character translation routines
*
* Copyright (c) 1995 Microsoft Corporation
*
* $Log: N:\NT\PRIVATE\NW4\NWSCRIPT\VCS\WIDE.C $
*
* Rev 1.2 10 Apr 1996 14:24:14 terryt
* Hotfix for 21181hq
*
* Rev 1.2 12 Mar 1996 19:56:36 terryt
* Relative NDS names and merge
*
* Rev 1.1 22 Dec 1995 14:27:18 terryt
* Add Microsoft headers
*
* Rev 1.0 15 Nov 1995 18:08:20 terryt
* Initial revision.
*
* Rev 1.1 23 May 1995 19:37:32 terryt
* Spruce up source
*
* Rev 1.0 15 May 1995 19:11:14 terryt
* Initial revision.
*
*************************************************************************/
#include <stdio.h>
#include <direct.h>
#include <time.h>
#include <stdlib.h>
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include "nwscript.h"
/********************************************************************
szToWide
Routine Description:
Given a single byte character string, convert to wide
Arguments:
lpszW - Wide character string returned
lpszC - Single character string input
nSize - length of Wide character buffer
Return Value:
0 = success
else NT error
*******************************************************************/
DWORD
szToWide(
LPWSTR lpszW,
LPCSTR lpszC,
INT nSize
)
{
if (!MultiByteToWideChar(CP_OEMCP,
MB_PRECOMPOSED,
lpszC,
-1,
lpszW,
nSize))
{
return (GetLastError()) ;
}
return NO_ERROR ;
}
/********************************************************************
WideTosz
Routine Description:
Given a wide character string, convert to single
Arguments:
lpszC - Single character string returned
lpszW - Wide character string input
nSize - length of single character buffer
Return Value:
0 = success
else NT error
*******************************************************************/
DWORD
WideTosz(
LPSTR lpszC,
LPWSTR lpszW,
INT nSize
)
{
if (!WideCharToMultiByte(CP_OEMCP,
0,
(LPCWSTR) lpszW,
-1,
lpszC,
nSize,
NULL,
NULL))
{
return (GetLastError()) ;
}
return NO_ERROR ;
}
/********************************************************************
ConvertUnicodeToAscii
Routine Description:
Given a wide character string, convert to single
Arguments:
Buffer - buffer to be converted
Return Value:
none
*******************************************************************/
void
ConvertUnicodeToAscii( PVOID Buffer )
{
LPCWSTR lpszW = Buffer;
BYTE Destination[1024];
WideTosz( (LPSTR)Destination, (LPWSTR)Buffer, 1024 );
strcpy( Buffer, Destination );
}