127 lines
1.7 KiB
C
127 lines
1.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1998 Intel Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
str.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
String runtime functions
|
||
|
|
||
|
|
||
|
Revision History
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "lib.h"
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtAcquireLock)
|
||
|
INTN
|
||
|
RUNTIMEFUNCTION
|
||
|
RtStrCmp (
|
||
|
IN CHAR16 *s1,
|
||
|
IN CHAR16 *s2
|
||
|
)
|
||
|
/* compare strings */
|
||
|
{
|
||
|
while (*s1) {
|
||
|
if (*s1 != *s2) {
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
s1 += 1;
|
||
|
s2 += 1;
|
||
|
}
|
||
|
|
||
|
return *s1 - *s2;
|
||
|
}
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtStrCpy)
|
||
|
VOID
|
||
|
RUNTIMEFUNCTION
|
||
|
RtStrCpy (
|
||
|
IN CHAR16 *Dest,
|
||
|
IN CHAR16 *Src
|
||
|
)
|
||
|
/* copy strings */
|
||
|
{
|
||
|
while (*Src) {
|
||
|
*(Dest++) = *(Src++);
|
||
|
}
|
||
|
*Dest = 0;
|
||
|
}
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtStrCat)
|
||
|
VOID
|
||
|
RUNTIMEFUNCTION
|
||
|
RtStrCat (
|
||
|
IN CHAR16 *Dest,
|
||
|
IN CHAR16 *Src
|
||
|
)
|
||
|
{
|
||
|
RtStrCpy(Dest+StrLen(Dest), Src);
|
||
|
}
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtStrLen)
|
||
|
UINTN
|
||
|
RUNTIMEFUNCTION
|
||
|
RtStrLen (
|
||
|
IN CHAR16 *s1
|
||
|
)
|
||
|
/* string length */
|
||
|
{
|
||
|
UINTN len;
|
||
|
|
||
|
for (len=0; *s1; s1+=1, len+=1) ;
|
||
|
return len;
|
||
|
}
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtStrSize)
|
||
|
UINTN
|
||
|
RUNTIMEFUNCTION
|
||
|
RtStrSize (
|
||
|
IN CHAR16 *s1
|
||
|
)
|
||
|
/* string size */
|
||
|
{
|
||
|
UINTN len;
|
||
|
|
||
|
for (len=0; *s1; s1+=1, len+=1) ;
|
||
|
return (len + 1) * sizeof(CHAR16);
|
||
|
}
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtBCDtoDecimal)
|
||
|
UINT8
|
||
|
RUNTIMEFUNCTION
|
||
|
RtBCDtoDecimal(
|
||
|
IN UINT8 BcdValue
|
||
|
)
|
||
|
{
|
||
|
UINTN High, Low;
|
||
|
|
||
|
High = BcdValue >> 4;
|
||
|
Low = BcdValue - (High << 4);
|
||
|
|
||
|
return ((UINT8)(Low + (High * 10)));
|
||
|
}
|
||
|
|
||
|
|
||
|
#pragma RUNTIME_CODE(RtDecimaltoBCD)
|
||
|
UINT8
|
||
|
RUNTIMEFUNCTION
|
||
|
RtDecimaltoBCD (
|
||
|
IN UINT8 DecValue
|
||
|
)
|
||
|
{
|
||
|
UINTN High, Low;
|
||
|
|
||
|
High = DecValue / 10;
|
||
|
Low = DecValue - (High * 10);
|
||
|
|
||
|
return ((UINT8)(Low + (High << 4)));
|
||
|
}
|
||
|
|
||
|
|