summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c')
-rw-r--r--src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c b/src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c
new file mode 100644
index 00000000..013ea58a
--- /dev/null
+++ b/src/VBox/Devices/EFI/Firmware/EmbeddedPkg/Library/FdtLib/fdt_strtoul.c
@@ -0,0 +1,32 @@
+#/* @file
+# Copyright (c) 2018, Linaro Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#*/
+
+#include <Base.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+
+unsigned long strtoul(const char *nptr, char **endptr, int base)
+{
+ RETURN_STATUS Status;
+ UINTN ReturnValue;
+
+ ASSERT (base == 10 || base == 16);
+
+ if (base == 10) {
+ Status = AsciiStrDecimalToUintnS (nptr, endptr, &ReturnValue);
+ } else if (base == 16) {
+ Status = AsciiStrHexToUintnS (nptr, endptr, &ReturnValue);
+ } else {
+ Status = RETURN_INVALID_PARAMETER;
+ }
+
+ if (RETURN_ERROR (Status)) {
+ return MAX_UINTN;
+ }
+
+ return ReturnValue;
+}