mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-27 10:50:43 +00:00 
			
		
		
		
	 eaa52ade0f
			
		
	
	
		eaa52ade0f
		
	
	
	
	
		
			
			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);
 | |
| }
 |