//----------------------------------------------------------------------------// // GNU GPL OS/K // // // // Desc: Convertion utilities - atoi() family // // // // // // Copyright © 2018-2019 The OS/K Team // // // // This file is part of OS/K. // // // // OS/K is free software: you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation, either version 3 of the License, or // // any later version. // // // // OS/K is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY//without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with OS/K. If not, see . // //----------------------------------------------------------------------------// #include // String to integer // Do not change errno #define _ATOI_IMPL(_Name, _Type, _Func) \ _Type _Name(const char *str) { \ error_t old; geterrno(old); \ _Type ret = (_Type)_Func(str, NULL, 0); \ seterrno(old); \ return ret; \ } // ISO C does not allow extra ‘;’ outside of a function #if defined(_NEED_ATOI) _ATOI_IMPL(atoi, int, strtol) #elif defined(_NEED_ATOL) _ATOI_IMPL(atol, long, strtol) #elif defined(_NEED_ATOU) _ATOI_IMPL(atou, uint, strtoul) #elif defined(_NEED_ATOUL) _ATOI_IMPL(atoul, ulong, strtoul) #else #error "What am I supposed to declare?" #endif