linux/arch/powerpc/boot/stdlib.c
<<
>>
Prefs
   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}
  46