1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 29de78277SScott Wood /* 39de78277SScott Wood * stdlib functions 49de78277SScott Wood * 59de78277SScott Wood * Author: Scott Wood <scottwood@freescale.com> 69de78277SScott Wood * 79de78277SScott Wood * Copyright (c) 2007 Freescale Semiconductor, Inc. 89de78277SScott Wood */ 99de78277SScott Wood 109de78277SScott Wood #include "stdlib.h" 119de78277SScott Wood 129de78277SScott Wood /* Not currently supported: leading whitespace, sign, 0x prefix, zero base */ strtoull(const char * ptr,char ** end,int base)139de78277SScott Woodunsigned long long int strtoull(const char *ptr, char **end, int base) 149de78277SScott Wood { 159de78277SScott Wood unsigned long long ret = 0; 169de78277SScott Wood 179de78277SScott Wood if (base > 36) 189de78277SScott Wood goto out; 199de78277SScott Wood 209de78277SScott Wood while (*ptr) { 219de78277SScott Wood int digit; 229de78277SScott Wood 239de78277SScott Wood if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base) 249de78277SScott Wood digit = *ptr - '0'; 259de78277SScott Wood else if (*ptr >= 'A' && *ptr < 'A' + base - 10) 269de78277SScott Wood digit = *ptr - 'A' + 10; 279de78277SScott Wood else if (*ptr >= 'a' && *ptr < 'a' + base - 10) 289de78277SScott Wood digit = *ptr - 'a' + 10; 299de78277SScott Wood else 309de78277SScott Wood break; 319de78277SScott Wood 329de78277SScott Wood ret *= base; 339de78277SScott Wood ret += digit; 349de78277SScott Wood ptr++; 359de78277SScott Wood } 369de78277SScott Wood 379de78277SScott Wood out: 389de78277SScott Wood if (end) 399de78277SScott Wood *end = (char *)ptr; 409de78277SScott Wood 419de78277SScott Wood return ret; 429de78277SScott Wood } 43