Signed-off-by: darylm503 Reviewed-by: jljusten Reviewed-by: geekboy15a git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12620 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
    Comparison Functions for <string.h>.
 | 
						|
 | 
						|
  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
 | 
						|
  This program and the accompanying materials are licensed and made available under
 | 
						|
  the terms and conditions of the BSD License that accompanies this distribution.
 | 
						|
  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php.
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
**/
 | 
						|
#include  <Uefi.h>
 | 
						|
#include  <Library/BaseLib.h>
 | 
						|
#include  <Library/BaseMemoryLib.h>
 | 
						|
 | 
						|
#include  <LibConfig.h>
 | 
						|
 | 
						|
#include  <ctype.h>
 | 
						|
#include  <string.h>
 | 
						|
 | 
						|
/** The memcmp function compares the first n characters of the object pointed
 | 
						|
    to by s1 to the first n characters of the object pointed to by s2.
 | 
						|
 | 
						|
    @return   The memcmp function returns an integer greater than, equal to, or
 | 
						|
              less than zero, accordingly as the object pointed to by s1 is
 | 
						|
              greater than, equal to, or less than the object pointed to by s2.
 | 
						|
**/
 | 
						|
int       memcmp(const void *s1, const void *s2, size_t n)
 | 
						|
{
 | 
						|
  return (int)CompareMem( s1, s2, n);
 | 
						|
}
 | 
						|
 | 
						|
/** The strcmp function compares the string pointed to by s1 to the string
 | 
						|
    pointed to by s2.
 | 
						|
 | 
						|
    @return   The strcmp function returns an integer greater than, equal to, or
 | 
						|
              less than zero, accordingly as the string pointed to by s1 is
 | 
						|
              greater than, equal to, or less than the string pointed to by s2.
 | 
						|
**/
 | 
						|
int       strcmp(const char *s1, const char *s2)
 | 
						|
{
 | 
						|
  return (int)AsciiStrCmp( s1, s2);
 | 
						|
}
 | 
						|
 | 
						|
/** The strcoll function compares the string pointed to by s1 to the string
 | 
						|
    pointed to by s2, both interpreted as appropriate to the LC_COLLATE
 | 
						|
    category of the current locale.
 | 
						|
 | 
						|
    @return   The strcoll function returns an integer greater than, equal to,
 | 
						|
              or less than zero, accordingly as the string pointed to by s1 is
 | 
						|
              greater than, equal to, or less than the string pointed to by s2
 | 
						|
              when both are interpreted as appropriate to the current locale.
 | 
						|
**/
 | 
						|
int       strcoll(const char *s1, const char *s2)
 | 
						|
{
 | 
						|
  /* LC_COLLATE is unimplemented, hence always "C" */
 | 
						|
  return (strcmp(s1, s2));
 | 
						|
}
 | 
						|
 | 
						|
/** The strncmp function compares not more than n characters (characters that
 | 
						|
    follow a null character are not compared) from the array pointed to by s1
 | 
						|
    to the array pointed to by s2.
 | 
						|
 | 
						|
    @return   The strncmp function returns an integer greater than, equal to,
 | 
						|
              or less than zero, accordingly as the possibly null-terminated
 | 
						|
              array pointed to by s1 is greater than, equal to, or less than
 | 
						|
              the possibly null-terminated array pointed to by s2.
 | 
						|
**/
 | 
						|
int       strncmp(const char *s1, const char *s2, size_t n)
 | 
						|
{
 | 
						|
  return (int)AsciiStrnCmp( s1, s2, n);
 | 
						|
}
 | 
						|
 | 
						|
/** The strxfrm function transforms the string pointed to by Src and places the
 | 
						|
    resulting string into the array pointed to by Dest. The transformation is
 | 
						|
    such that if the strcmp function is applied to two transformed strings, it
 | 
						|
    returns a value greater than, equal to, or less than zero, corresponding to
 | 
						|
    the result of the strcoll function applied to the same two original
 | 
						|
    strings. No more than Len characters are placed into the resulting array
 | 
						|
    pointed to by Dest, including the terminating null character. If Len is zero,
 | 
						|
    Dest is permitted to be a null pointer. If copying takes place between
 | 
						|
    objects that overlap, the behavior is undefined.
 | 
						|
 | 
						|
    @return   The strxfrm function returns the length of the transformed string
 | 
						|
              (not including the terminating null character). If the value
 | 
						|
              returned is Len or more, the contents of the array pointed to by Dest
 | 
						|
              are indeterminate.
 | 
						|
**/
 | 
						|
size_t    strxfrm(char * __restrict Dest, const char * __restrict Src, size_t Len)
 | 
						|
{
 | 
						|
  size_t srclen, copysize;
 | 
						|
 | 
						|
  /*
 | 
						|
  * Since locales are unimplemented, this is just a copy.
 | 
						|
  */
 | 
						|
  srclen = strlen(Src);
 | 
						|
  if (Len != 0) {
 | 
						|
    copysize = srclen < Len ? srclen : Len - 1;
 | 
						|
    (void)memcpy(Dest, Src, copysize);
 | 
						|
    Dest[copysize] = 0;
 | 
						|
  }
 | 
						|
  return (srclen);
 | 
						|
}
 | 
						|
 | 
						|
/** Case agnostic string comparison for NetBSD compatibility. **/
 | 
						|
int
 | 
						|
strcasecmp(const char *s1, const char *s2)
 | 
						|
{
 | 
						|
  return (int)AsciiStriCmp( s1, s2);
 | 
						|
}
 |