1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/ctype.h> 7*4882a593Smuzhiyun #include <linux/types.h> 8*4882a593Smuzhiyun atol(const char * nptr)9*4882a593Smuzhiyunlong atol(const char *nptr) 10*4882a593Smuzhiyun { 11*4882a593Smuzhiyun int c; 12*4882a593Smuzhiyun long total; 13*4882a593Smuzhiyun int sign; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun while (isspace((int)(unsigned char)*nptr)) 16*4882a593Smuzhiyun ++nptr; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun c = (int)(unsigned char)*nptr++; 19*4882a593Smuzhiyun sign = c; 20*4882a593Smuzhiyun if (c == '-' || c == '+') 21*4882a593Smuzhiyun c = (int)(unsigned char)*nptr++; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun total = 0; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun while (isdigit(c)) { 26*4882a593Smuzhiyun total = 10 * total + (c - '0'); 27*4882a593Smuzhiyun c = (int)(unsigned char)*nptr++; 28*4882a593Smuzhiyun } 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun if (sign == '-') 31*4882a593Smuzhiyun return -total; 32*4882a593Smuzhiyun else 33*4882a593Smuzhiyun return total; 34*4882a593Smuzhiyun } 35*4882a593Smuzhiyun atoi(const char * nptr)36*4882a593Smuzhiyunint atoi(const char *nptr) 37*4882a593Smuzhiyun { 38*4882a593Smuzhiyun return (int)atol(nptr); 39*4882a593Smuzhiyun } 40