mirror of
https://git.proxmox.com/git/efi-boot-shim
synced 2025-06-14 11:10:31 +00:00

- Declare some functions in the proper headers + We missed them for a long time... - Cast offsetof to UINTN + The original casting triggers the gcc warning since int can not present the offset for the 64bit machines. - Cast the "char" array to "CHAR8 *" to avoid the gcc warnings - Implement atoi correctly Signed-off-by: Gary Lin <glin@suse.com>
96 lines
1.5 KiB
C
96 lines
1.5 KiB
C
#include <CrtLibSupport.h>
|
|
|
|
char *
|
|
AsciiStrCat(char *Destination, char *Source)
|
|
{
|
|
UINTN dest_len = strlena((CHAR8 *)Destination);
|
|
UINTN i;
|
|
|
|
for (i = 0; Source[i] != '\0'; i++)
|
|
Destination[dest_len + i] = Source[i];
|
|
Destination[dest_len + i] = '\0';
|
|
|
|
return Destination;
|
|
}
|
|
|
|
CHAR8 *
|
|
AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source)
|
|
{
|
|
UINTN i;
|
|
|
|
for (i=0; Source[i] != '\0'; i++)
|
|
Destination[i] = Source[i];
|
|
Destination[i] = '\0';
|
|
|
|
return Destination;
|
|
}
|
|
|
|
char *
|
|
AsciiStrnCpy(char *Destination, char *Source, UINTN count)
|
|
{
|
|
UINTN i;
|
|
|
|
for (i=0; i < count && Source[i] != '\0'; i++)
|
|
Destination[i] = Source[i];
|
|
for ( ; i < count; i++)
|
|
Destination[i] = '\0';
|
|
|
|
return Destination;
|
|
}
|
|
|
|
CHAR8 *
|
|
ScanMem8(CHAR8 *str, UINTN count, CHAR8 ch)
|
|
{
|
|
UINTN i;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
if (str[i] == ch)
|
|
return str + i;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
UINT32
|
|
WriteUnaligned32(UINT32 *Buffer, UINT32 Value)
|
|
{
|
|
*Buffer = Value;
|
|
|
|
return Value;
|
|
}
|
|
|
|
UINTN
|
|
AsciiStrSize(CHAR8 *string)
|
|
{
|
|
return strlena(string) + 1;
|
|
}
|
|
|
|
/* Based on AsciiStrDecimalToUintnS() in edk2
|
|
* MdePkg/Library/BaseLib/SafeString.c */
|
|
UINTN
|
|
AsciiStrDecimalToUintn(const char *String)
|
|
{
|
|
UINTN Result;
|
|
|
|
if (String == NULL)
|
|
return 0;
|
|
|
|
/* Ignore the pad spaces (space or tab) */
|
|
while ((*String == ' ') || (*String == '\t')) {
|
|
String++;
|
|
}
|
|
|
|
/* Ignore leading Zeros after the spaces */
|
|
while (*String == '0') {
|
|
String++;
|
|
}
|
|
|
|
Result = 0;
|
|
|
|
while (*String >= '0' && *String <= '9') {
|
|
Result = Result * 10 + (*String - '0');
|
|
String++;
|
|
}
|
|
|
|
return Result;
|
|
}
|