summaryrefslogtreecommitdiff
path: root/Cryptlib/SysCall/BaseStrings.c
diff options
context:
space:
mode:
Diffstat (limited to 'Cryptlib/SysCall/BaseStrings.c')
-rw-r--r--Cryptlib/SysCall/BaseStrings.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/Cryptlib/SysCall/BaseStrings.c b/Cryptlib/SysCall/BaseStrings.c
index 0e6de378..990037d1 100644
--- a/Cryptlib/SysCall/BaseStrings.c
+++ b/Cryptlib/SysCall/BaseStrings.c
@@ -1,9 +1,9 @@
#include <CrtLibSupport.h>
-CHAR8 *
-AsciiStrCat(CHAR8 *Destination, CHAR8 *Source)
+char *
+AsciiStrCat(char *Destination, char *Source)
{
- UINTN dest_len = strlena(Destination);
+ UINTN dest_len = strlena((CHAR8 *)Destination);
UINTN i;
for (i = 0; Source[i] != '\0'; i++)
@@ -25,8 +25,8 @@ AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source)
return Destination;
}
-CHAR8 *
-AsciiStrnCpy(CHAR8 *Destination, CHAR8 *Source, UINTN count)
+char *
+AsciiStrnCpy(char *Destination, char *Source, UINTN count)
{
UINTN i;
@@ -64,4 +64,32 @@ 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;
+}