155 lines
4 KiB
C
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 );
|
|
}
|