123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /*++
- Copyright (c) 1998 Intel Corporation
- Module Name:
- str.c
- Abstract:
- String runtime functions
- Revision History
- --*/
- #include "lib.h"
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrCmp)
- #endif
- INTN
- RUNTIMEFUNCTION
- RtStrCmp (
- IN CONST CHAR16 *s1,
- IN CONST CHAR16 *s2
- )
- // compare strings
- {
- while (*s1) {
- if (*s1 != *s2) {
- break;
- }
- s1 += 1;
- s2 += 1;
- }
- return *s1 - *s2;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrCpy)
- #endif
- VOID
- RUNTIMEFUNCTION
- RtStrCpy (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src
- )
- // copy strings
- {
- while (*Src) {
- *(Dest++) = *(Src++);
- }
- *Dest = 0;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrnCpy)
- #endif
- VOID
- RUNTIMEFUNCTION
- RtStrnCpy (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src,
- IN UINTN Len
- )
- // copy strings
- {
- UINTN Size = RtStrnLen(Src, Len);
- if (Size != Len)
- RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
- RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStpCpy)
- #endif
- CHAR16 *
- RUNTIMEFUNCTION
- RtStpCpy (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src
- )
- // copy strings
- {
- while (*Src) {
- *(Dest++) = *(Src++);
- }
- *Dest = 0;
- return Dest;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStpnCpy)
- #endif
- CHAR16 *
- RUNTIMEFUNCTION
- RtStpnCpy (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src,
- IN UINTN Len
- )
- // copy strings
- {
- UINTN Size = RtStrnLen(Src, Len);
- if (Size != Len)
- RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
- RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
- return Dest + Size;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrCat)
- #endif
- VOID
- RUNTIMEFUNCTION
- RtStrCat (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src
- )
- {
- RtStrCpy(Dest+RtStrLen(Dest), Src);
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrnCat)
- #endif
- VOID
- RUNTIMEFUNCTION
- RtStrnCat (
- IN CHAR16 *Dest,
- IN CONST CHAR16 *Src,
- IN UINTN Len
- )
- {
- UINTN DestSize, Size;
- DestSize = RtStrLen(Dest);
- Size = RtStrnLen(Src, Len);
- RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
- Dest[DestSize + Size] = '\0';
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrLen)
- #endif
- UINTN
- RUNTIMEFUNCTION
- RtStrLen (
- IN CONST CHAR16 *s1
- )
- // string length
- {
- UINTN len;
- for (len=0; *s1; s1+=1, len+=1) ;
- return len;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrnLen)
- #endif
- UINTN
- RUNTIMEFUNCTION
- RtStrnLen (
- IN CONST CHAR16 *s1,
- IN UINTN Len
- )
- // string length
- {
- UINTN i;
- for (i = 0; *s1 && i < Len; i++)
- s1++;
- return i;
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtStrSize)
- #endif
- UINTN
- RUNTIMEFUNCTION
- RtStrSize (
- IN CONST CHAR16 *s1
- )
- // string size
- {
- UINTN len;
- for (len=0; *s1; s1+=1, len+=1) ;
- return (len + 1) * sizeof(CHAR16);
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtBCDtoDecimal)
- #endif
- UINT8
- RUNTIMEFUNCTION
- RtBCDtoDecimal(
- IN UINT8 BcdValue
- )
- {
- UINTN High, Low;
- High = BcdValue >> 4;
- Low = BcdValue - (High << 4);
- return ((UINT8)(Low + (High * 10)));
- }
- #ifndef __GNUC__
- #pragma RUNTIME_CODE(RtDecimaltoBCD)
- #endif
- UINT8
- RUNTIMEFUNCTION
- RtDecimaltoBCD (
- IN UINT8 DecValue
- )
- {
- UINTN High, Low;
- High = DecValue / 10;
- Low = DecValue - (High * 10);
- return ((UINT8)(Low + (High << 4)));
- }
|