windows-nt/Source/XPSP1/NT/net/tcpip/commands/common2/util.c
2020-09-26 16:20:57 +08:00

155 lines
4 KiB
C

//*****************************************************************************
//
// Name: util.c
//
// Description: Utility routines for the common library.
//
// History:
// 01/21/94 JayPh Created.
// 26-Nov-96 MohsinA io.h,fcntl.h for CR-LF fix.
//*****************************************************************************
//*****************************************************************************
//
// Copyright (c) 1994-2000 by Microsoft Corp. All rights reserved.
//
//*****************************************************************************
//
// Include Files
//
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include "common2.h"
//*****************************************************************************
//
// Name: InetEqual
//
// Description: Compares to ip addresses to determine whether they are equal.
//
// Parameters: uchar *Inet1: pointer to array of uchars.
// uchar *Inet2: pointer to array of uchars.
//
// Returns: ulong: TRUE if the addresses are equal, FALSE otherwise.
//
// History:
// 12/16/93 JayPh Created.
//
//*****************************************************************************
ulong InetEqual( uchar *Inet1, uchar *Inet2 )
{
if ( ( Inet1[0] == Inet2[0] ) && ( Inet1[1] == Inet2[1] ) &&
( Inet1[2] == Inet2[2] ) && ( Inet1[3] == Inet2[3] ) )
{
return TRUE;
}
return FALSE;
}
//*****************************************************************************
//
// Name: PutMsg
//
// Description: Reads a message resource, formats it in the current language
// and displays the message.
//
// Parameters: ulong Handle: device to display message on.
// ulong MsgNum: ID of the message resource.
//
// Returns: ulong: number of characters displayed.
//
// History:
// 01/05/93 JayPh Created.
// 25-Nov-96. MohsinA, CR-CR-LF => CR-LF = 0d0a = \r\n.
//
//*****************************************************************************
ulong
PutMsg(ulong Handle, ulong MsgNum, ... )
{
ulong msglen;
uchar *vp;
va_list arglist;
FILE * pfile;
va_start( arglist, MsgNum );
msglen = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_HMODULE
// | FORMAT_MESSAGE_MAX_WIDTH_MASK
,
NULL,
MsgNum,
0L, // Default country ID.
(LPTSTR)&vp,
0,
&arglist );
if ( msglen == 0 )
{
return ( 0 );
}
pfile = (Handle == 2) ? stderr : stdout;
_setmode( _fileno(pfile), O_BINARY );
// Convert vp to oem
CharToOemBuff((LPCTSTR)vp,(LPSTR)vp,strlen(vp));
fprintf( pfile, "%s", vp );
LocalFree( vp );
return ( msglen );
}
//*****************************************************************************
//
// Name: LoadMsg
//
// Description: Reads and formats a message resource and returns a pointer
// to the buffer containing the formatted message. It is the
// responsibility of the caller to free the buffer.
//
// Parameters: ulong MsgNum: ID of the message resource.
//
// Returns: uchar *: pointer to the message buffer, NULL if error.
//
// History:
// 01/05/93 JayPh Created.
//
//*****************************************************************************
uchar *LoadMsg( ulong MsgNum, ... )
{
ulong msglen;
uchar *vp;
va_list arglist;
va_start( arglist, MsgNum );
msglen = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_HMODULE,
NULL,
MsgNum,
0L, // Default country ID.
(LPTSTR)&vp,
0,
&arglist );
if ( msglen == 0 )
{
return(0);
}
return ( vp );
}