Linux Audio

Check our new training course

Loading...
v6.8
 1// SPDX-License-Identifier: GPL-2.0-only
 2/*
 3 * stdlib functions
 4 *
 5 * Author: Scott Wood <scottwood@freescale.com>
 6 *
 7 * Copyright (c) 2007 Freescale Semiconductor, Inc.
 
 
 
 
 8 */
 9
10#include "stdlib.h"
11
12/* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
13unsigned long long int strtoull(const char *ptr, char **end, int base)
14{
15	unsigned long long ret = 0;
16
17	if (base > 36)
18		goto out;
19
20	while (*ptr) {
21		int digit;
22
23		if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
24			digit = *ptr - '0';
25		else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
26			digit = *ptr - 'A' + 10;
27		else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
28			digit = *ptr - 'a' + 10;
29		else
30			break;
31
32		ret *= base;
33		ret += digit;
34		ptr++;
35	}
36
37out:
38	if (end)
39		*end = (char *)ptr;
40
41	return ret;
42}
v3.15
 
 1/*
 2 * stdlib functions
 3 *
 4 * Author: Scott Wood <scottwood@freescale.com>
 5 *
 6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
 7 *
 8 * This program is free software; you can redistribute it and/or modify it
 9 * under the terms of the GNU General Public License version 2 as published
10 * by the Free Software Foundation.
11 */
12
13#include "stdlib.h"
14
15/* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
16unsigned long long int strtoull(const char *ptr, char **end, int base)
17{
18	unsigned long long ret = 0;
19
20	if (base > 36)
21		goto out;
22
23	while (*ptr) {
24		int digit;
25
26		if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
27			digit = *ptr - '0';
28		else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
29			digit = *ptr - 'A' + 10;
30		else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
31			digit = *ptr - 'a' + 10;
32		else
33			break;
34
35		ret *= base;
36		ret += digit;
37		ptr++;
38	}
39
40out:
41	if (end)
42		*end = (char *)ptr;
43
44	return ret;
45}