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