diff options
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.c | 32 |
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; +} |