1 /* $NetBSD: sane_strtol.c,v 1.3 2025/02/25 19:15:52 christos Exp $ */ 2 3 /*++ 4 /* NAME 5 /* sane_strtol 3 6 /* SUMMARY 7 /* strtol() with mandatory errno reset 8 /* SYNOPSIS 9 /* #include <sane_strtol.h> 10 /* 11 /* long sane_strtol( 12 /* const char *start, 13 /* char **restrict end, 14 /* int base) 15 /* 16 /* unsigned long sane_strtoul( 17 /* const char *start, 18 /* char **restrict end, 19 /* int base) 20 /* DESCRIPTION 21 /* These functions are wrappers around the strtol() and strtoul() 22 /* standard library functions that reset errno first, so that a 23 /* prior ERANGE error won't cause false errors. 24 /* LICENSE 25 /* .ad 26 /* .fi 27 /* The Secure Mailer license must be distributed with this software. 28 /* AUTHOR(S) 29 /* Wietse Venema 30 /* Google, Inc. 31 /* 111 8th Avenue 32 /* New York, NY 10011, USA 33 /*--*/ 34 35 /* 36 * System library. 37 */ 38 #include <sys_defs.h> 39 #include <stdlib.h> 40 #include <errno.h> 41 42 /* 43 * Utility library. 44 */ 45 #include <sane_strtol.h> 46 47 /* sane_strtol - strtol() with mandatory initialization */ 48 49 long sane_strtol(const char *start, char **end, int base) 50 { 51 errno = 0; 52 return (strtol(start, end, base)); 53 } 54 55 /* sane_strtoul - strtoul() with mandatory initialization */ 56 57 unsigned long sane_strtoul(const char *start, char **end, int base) 58 { 59 errno = 0; 60 return (strtoul(start, end, base)); 61 } 62