 9de782770b
			
		
	
	
	9de782770b
	
	
	
		
			
			This will be needed by PlanetCore firmware support. Signed-off-by: Scott Wood <scottwood@freescale.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			934 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			934 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * stdlib functions
 | |
|  *
 | |
|  * Author: Scott Wood <scottwood@freescale.com>
 | |
|  *
 | |
|  * Copyright (c) 2007 Freescale Semiconductor, Inc.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it
 | |
|  * under the terms of the GNU General Public License version 2 as published
 | |
|  * by the Free Software Foundation.
 | |
|  */
 | |
| 
 | |
| #include "stdlib.h"
 | |
| 
 | |
| /* Not currently supported: leading whitespace, sign, 0x prefix, zero base */
 | |
| unsigned long long int strtoull(const char *ptr, char **end, int base)
 | |
| {
 | |
| 	unsigned long long ret = 0;
 | |
| 
 | |
| 	if (base > 36)
 | |
| 		goto out;
 | |
| 
 | |
| 	while (*ptr) {
 | |
| 		int digit;
 | |
| 
 | |
| 		if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
 | |
| 			digit = *ptr - '0';
 | |
| 		else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
 | |
| 			digit = *ptr - 'A' + 10;
 | |
| 		else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
 | |
| 			digit = *ptr - 'a' + 10;
 | |
| 		else
 | |
| 			break;
 | |
| 
 | |
| 		ret *= base;
 | |
| 		ret += digit;
 | |
| 		ptr++;
 | |
| 	}
 | |
| 
 | |
| out:
 | |
| 	if (end)
 | |
| 		*end = (char *)ptr;
 | |
| 
 | |
| 	return ret;
 | |
| }
 |