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.
 
 
 
 
 
 

155 lines
3.6 KiB

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
nls.c
Abstract:
This module contains functions needed for the internationalisation
of the TCP/IP utilities.
Author:
Ronald Meijer (ronaldm) Nov 8, 1992
Revision History:
Who When What
-------- -------- ----------------------------------------------
ronaldm 11-8-92 created
MuraliK 10-19-94 Copied from tcpcmd\common for
internationalization of sockutils as well as
added the function: NlsSPrintf()
Notes:
--*/
# include "local.h"
#include <stdio.h>
# include "nls.h"
/*** NlsPutMsg - Print a message to a handle
*
* Purpose:
* PutMsg takes the given message number from the
* message table resource, and displays it on the requested
* handle with the given parameters (optional)
*
* unsigned NlsPutMsg(unsigned Handle, unsigned MsgNum, ... )
*
* Args:
* Handle - the handle to print to
* MsgNum - the number of the message to print
* Arg1 [Arg2...] - additonal arguments for the message as necessary
*
* Returns:
* The number of characters printed.
*
*/
unsigned NlsPutMsg(unsigned Handle, unsigned usMsgNum, ... )
{
unsigned msglen;
VOID * vp;
va_list arglist;
va_start(arglist, usMsgNum);
if ((msglen = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_HMODULE,
NULL,
usMsgNum,
0L, // Default country ID.
(LPTSTR)&vp,
0,
&arglist))) {
msglen = _write(Handle, vp, msglen);
LocalFree(vp);
}
va_end( arglist);
return(msglen);
}
/*** NlsPerror - NLS compliant version of perror()
*
* Purpose:
* NlsPerror takes a messagetable resource ID code, and an error
* value (This function replaces perror()), loads the string
* from the resource, and passes it with the error code to s_perror()
*
* void NlsPerror(unsigned usMsgNum, unsigned nError)
*
* Args:
*
* usMsgNum The message ID
* nError Typically returned from GetLastError()
*
* Returns:
* Nothing.
*
*/
void NlsPerror (unsigned usMsgNum, unsigned nError)
{
VOID * vp;
unsigned msglen;
if (!(msglen = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_HMODULE,
NULL,
usMsgNum,
0L, // Default country ID.
(LPTSTR)&vp,
0,
NULL)))
return;
s_perror(vp, nError);
LocalFree(vp);
}
unsigned NlsSPrintf( IN unsigned usMsgNum,
OUT char * pszBuffer,
IN DWORD cbSize,
...)
/*++
Prints the given message into the buffer supplied.
Arguments:
usMsgNum message number for resource string.
pszBuffer buffer into which we need to print the string
cbSize size of buffer
... optional arguments
Returns:
Size of the message printed.
History:
MuraliK 10-19-94
--*/
{
unsigned msglen;
va_list arglist;
va_start( arglist, cbSize);
msglen = FormatMessage( FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_MAX_WIDTH_MASK,// dwFlags
NULL, // lpSource
usMsgNum, // dwIdentifier
0L, // Country code
( LPTSTR ) pszBuffer, // buffer
cbSize, // nSize
& arglist);
va_end( arglist);
return ( msglen);
} // NlsSPrintf()