/** @file | |
Miscellaneous 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 <sys/EfiCdefs.h> | |
#include <Uefi.h> | |
#include <Library/BaseLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/PcdLib.h> | |
#include <Library/PrintLib.h> | |
#include <LibConfig.h> | |
#include <errno.h> | |
#include <limits.h> | |
#include <string.h> | |
extern char *sys_errlist[]; | |
/** The memset function copies the value of c (converted to an unsigned char) | |
into each of the first n characters of the object pointed to by s. | |
@return The memset function returns the value of s. | |
**/ | |
void * | |
memset(void *s, int c, size_t n) | |
{ | |
return SetMem( s, (UINTN)n, (UINT8)c); | |
} | |
int | |
strerror_r(int errnum, char *buf, size_t buflen) | |
{ | |
const char *estring; | |
INTN i; | |
int retval = 0; | |
if( (errnum < 0) || (errnum >= EMAXERRORVAL)) { | |
(void) AsciiSPrint( buf, ASCII_STRING_MAX, "Unknown Error: %d.", errnum); | |
retval = EINVAL; | |
} | |
else { | |
estring = sys_errlist[errnum]; | |
for( i = buflen; i > 0; --i) { | |
if( (*buf++ = *estring++) == '\0') { | |
break; | |
} | |
} | |
if(i == 0) { | |
retval = ERANGE; | |
} | |
} | |
return retval; | |
} | |
/** The strerror function maps the number in errnum to a message string. | |
Typically, the values for errnum come from errno, but strerror shall map | |
any value of type int to a message. | |
The implementation shall behave as if no library function calls the | |
strerror function. | |
@return The strerror function returns a pointer to the string, the | |
contents of which are locale specific. The array pointed to | |
shall not be modified by the program, but may be overwritten by | |
a subsequent call to the strerror function. | |
**/ | |
char * | |
strerror(int errnum) | |
{ | |
static char errorbuf[ASCII_STRING_MAX]; | |
int status; | |
status = strerror_r(errnum, errorbuf, sizeof(errorbuf)); | |
if(status != 0) { | |
errno = status; | |
} | |
return errorbuf; | |
} | |
/** The strlen function computes the length of the string pointed to by s. | |
@return The strlen function returns the number of characters that | |
precede the terminating null character. | |
**/ | |
size_t | |
strlen(const char *s) | |
{ | |
return (size_t)AsciiStrLen( s); | |
} |