mirror of https://github.com/lianthony/NT4.0
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.
252 lines
8.7 KiB
252 lines
8.7 KiB
/****************************************************************************
|
|
*
|
|
* UTIL.C : Part of the FASTMAC TOOL-KIT (FTK)
|
|
*
|
|
* THE UTILITIES MODULE
|
|
*
|
|
* Copyright (c) Madge Networks Ltd. 1991-1994
|
|
*
|
|
* COMPANY CONFIDENTIAL
|
|
*
|
|
*****************************************************************************
|
|
*
|
|
* The UTIL.C utilities module provides a range of general purpose
|
|
* utilities that are used throughout the FTK. These routines provide such
|
|
* functions as the ability to copy strings, clear memory, byte swap node
|
|
* addresses and caculate the minimum of three values.
|
|
*
|
|
****************************************************************************/
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
| DEFINITIONS
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
#include "ftk_defs.h"
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
| MODULE ENTRY POINTS
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
#include "ftk_intr.h" /* routines internal to FTK */
|
|
#include "ftk_extr.h" /* routines provided or used by external FTK user */
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_string_copy
|
|
* ================
|
|
*
|
|
* The util_string_copy routine copies a null terminated string from source
|
|
* to destination.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_string_copy)
|
|
#endif
|
|
|
|
export void
|
|
util_string_copy(
|
|
char * copy_to_string,
|
|
char * copy_from_string
|
|
)
|
|
{
|
|
|
|
while (*copy_from_string != '\0')
|
|
{
|
|
*copy_to_string++ = *copy_from_string++;
|
|
}
|
|
|
|
*copy_to_string = '\0';
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_mem_copy
|
|
* =============
|
|
*
|
|
* The util_mem_copy routine copies max_copy_len bytes from the source
|
|
* address to the destination address (both are virtual addresses).
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_mem_copy)
|
|
#endif
|
|
|
|
export void
|
|
util_mem_copy(
|
|
BYTE * copy_to_mem,
|
|
BYTE * copy_from_mem,
|
|
UINT max_copy_len
|
|
)
|
|
{
|
|
while (max_copy_len > 0)
|
|
{
|
|
*copy_to_mem = *copy_from_mem;
|
|
|
|
copy_to_mem++;
|
|
copy_from_mem++;
|
|
max_copy_len--;
|
|
}
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_string_concatenate
|
|
* =======================
|
|
*
|
|
* The util_string_concatenate routine adds one null terminated string onto
|
|
* the end of another, creating a new null terminated string.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_string_concatenate)
|
|
#endif
|
|
|
|
export void
|
|
util_string_concatenate(
|
|
char * add_to_string,
|
|
char * string_to_add
|
|
)
|
|
{
|
|
|
|
while (*add_to_string != '\0')
|
|
{
|
|
add_to_string++;
|
|
}
|
|
|
|
while (*string_to_add != '\0')
|
|
{
|
|
*add_to_string++ = *string_to_add++;
|
|
}
|
|
|
|
*add_to_string = '\0';
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_minimum
|
|
* ============
|
|
*
|
|
* The util_minimum routine returns the minimum of three values that are
|
|
* passed to it.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_minimum)
|
|
#endif
|
|
|
|
export UINT
|
|
util_minimum(
|
|
UINT val_1,
|
|
UINT val_2,
|
|
UINT val_3
|
|
)
|
|
{
|
|
if (val_1 > val_2)
|
|
{
|
|
if (val_2 > val_3)
|
|
{
|
|
return val_3;
|
|
}
|
|
else
|
|
{
|
|
return val_2;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (val_1 > val_3)
|
|
{
|
|
return val_3;
|
|
}
|
|
else
|
|
{
|
|
return val_1;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_zero_memory
|
|
* ================
|
|
*
|
|
* The util_zero_memory routine clears an area of memory of a given size in
|
|
* bytes.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_zero_memory)
|
|
#endif
|
|
|
|
export void
|
|
util_zero_memory(
|
|
BYTE * memory,
|
|
UINT size_in_bytes
|
|
)
|
|
{
|
|
while (size_in_bytes--)
|
|
{
|
|
*memory++ = 0;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* util_byte_swap_structure
|
|
* ========================
|
|
*
|
|
* The util_byte_swap_structure routine swaps adjacent bytes in a structure
|
|
* so that it can be correctly downloaded onto an adapter card. It is used
|
|
* for byte swapping a node address, a multicast address and a product id
|
|
* string.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifdef FTK_RES_FUNCTION
|
|
#pragma FTK_RES_FUNCTION(util_byte_swap_structure)
|
|
#endif
|
|
|
|
export void
|
|
util_byte_swap_structure(
|
|
BYTE * byte_based_structure,
|
|
UINT size_of_structure
|
|
)
|
|
{
|
|
UINT i;
|
|
BYTE temp;
|
|
|
|
for ( i = 0; i < size_of_structure; i = i+2)
|
|
{
|
|
temp = *byte_based_structure;
|
|
*byte_based_structure = *(byte_based_structure + 1);
|
|
*(byte_based_structure + 1) = temp;
|
|
byte_based_structure += 2;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
/******** End of UTIL.C ****************************************************/
|
|
|
|
|