NeoMutt  2025-09-05-55-g97fc89
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
atoi.h File Reference

Parse a number in a string. More...

#include <stdbool.h>
+ Include dependency graph for atoi.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define make_str_ato_wrappers(flavour, type)
 

Functions

const char * mutt_str_atoi (const char *str, int *dst)
 Convert ASCII string to an integer.
 
const char * mutt_str_atol (const char *str, long *dst)
 Convert ASCII string to a long.
 
const char * mutt_str_atos (const char *str, short *dst)
 Convert ASCII string to a short.
 
const char * mutt_str_atoui (const char *str, unsigned int *dst)
 Convert ASCII string to an unsigned integer.
 
const char * mutt_str_atoul (const char *str, unsigned long *dst)
 Convert ASCII string to an unsigned long.
 
const char * mutt_str_atoull (const char *str, unsigned long long *dst)
 Convert ASCII string to an unsigned long long.
 
const char * mutt_str_atous (const char *str, unsigned short *dst)
 Convert ASCII string to an unsigned short.
 
 make_str_ato_wrappers (i, int) make_str_ato_wrappers(l
 
long make_str_ato_wrappers (s, short) make_str_ato_wrappers(ui
 
long unsigned int make_str_ato_wrappers (ul, unsigned long) make_str_ato_wrappers(ull
 

Detailed Description

Parse a number in a string.

Authors
  • Richard Russon
  • Pietro Cerutti

This program 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 this program. If not, see http://www.gnu.org/licenses/.

Definition in file atoi.h.

Macro Definition Documentation

◆ make_str_ato_wrappers

#define make_str_ato_wrappers ( flavour,
type )
Value:
static inline bool mutt_str_ato ## flavour ## _full(const char *src, type *dst) \
{ \
const char * end = mutt_str_ato ## flavour(src, dst); \
return end && !*end; \
} \

Definition at line 37 of file atoi.h.

37#define make_str_ato_wrappers(flavour, type) \
38 static inline bool mutt_str_ato ## flavour ## _full(const char *src, type *dst) \
39 { \
40 const char * end = mutt_str_ato ## flavour(src, dst); \
41 return end && !*end; \
42 } \
43

Function Documentation

◆ mutt_str_atoi()

const char * mutt_str_atoi ( const char * str,
int * dst )

Convert ASCII string to an integer.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str

This is a strtol() wrapper with range checking. If dst is NULL, the string will be tested only (without conversion). errno may be set on error, e.g. ERANGE

Definition at line 191 of file atoi.c.

192{
193 long l = 0;
194 const char *res = str_atol_clamp(str, &l, INT_MIN, INT_MAX);
195 if (dst)
196 {
197 *dst = res ? l : 0;
198 }
199 return res;
200}
static const char * str_atol_clamp(const char *str, long *dst, long lmin, long lmax)
Convert ASCII string to a long and clamp.
Definition atoi.c:53
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_str_atol()

const char * mutt_str_atol ( const char * str,
long * dst )

Convert ASCII string to a long.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str

This is a strtol() wrapper with range checking. errno may be set on error, e.g. ERANGE

Definition at line 142 of file atoi.c.

143{
144 return str_atol_clamp(str, dst, LONG_MIN, LONG_MAX);
145}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_str_atos()

const char * mutt_str_atos ( const char * str,
short * dst )

Convert ASCII string to a short.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str

This is a strtol() wrapper with range checking. If dst is NULL, the string will be tested only (without conversion).

errno may be set on error, e.g. ERANGE

Definition at line 164 of file atoi.c.

165{
166 long l = 0;
167 const char *res = str_atol_clamp(str, &l, SHRT_MIN, SHRT_MAX);
168 if (dst)
169 {
170 *dst = res ? l : 0;
171 }
172 return res;
173}
+ Here is the call graph for this function:

◆ mutt_str_atoui()

const char * mutt_str_atoui ( const char * str,
unsigned int * dst )

Convert ASCII string to an unsigned integer.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str
Note
This function's return value differs from the other functions. They return -1 if there is input beyond the number.

Definition at line 217 of file atoi.c.

218{
219 unsigned long long l = 0;
220 const char *res = str_atoull_clamp(str, &l, UINT_MAX);
221 if (dst)
222 {
223 *dst = res ? l : 0;
224 }
225 return res;
226}
static const char * str_atoull_clamp(const char *str, unsigned long long *dst, unsigned long long ullmax)
Convert ASCII string to an unsigned long long and clamp.
Definition atoi.c:98
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_str_atoul()

const char * mutt_str_atoul ( const char * str,
unsigned long * dst )

Convert ASCII string to an unsigned long.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str
Note
This function's return value differs from the other functions. They return -1 if there is input beyond the number.

Definition at line 243 of file atoi.c.

244{
245 unsigned long long l = 0;
246 const char *res = str_atoull_clamp(str, &l, ULONG_MAX);
247 if (dst)
248 {
249 *dst = res ? l : 0;
250 }
251 return res;
252}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_str_atoull()

const char * mutt_str_atoull ( const char * str,
unsigned long long * dst )

Convert ASCII string to an unsigned long long.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str
Note
This function's return value differs from the other functions. They return -1 if there is input beyond the number.

Definition at line 295 of file atoi.c.

296{
297 return str_atoull_clamp(str, dst, ULLONG_MAX);
298}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_str_atous()

const char * mutt_str_atous ( const char * str,
unsigned short * dst )

Convert ASCII string to an unsigned short.

Parameters
[in]strString to read
[out]dstStore the result
Return values
ptrendptr
Condition Description
endptr == NULL No conversion happened, or overflow
endptr[0] == '\0' str was fully converted
endptr[0] != '\0' endptr points to first non converted char in str
Note
This function's return value differs from the other functions. They return -1 if there is input beyond the number.

Definition at line 269 of file atoi.c.

270{
271 unsigned long long l = 0;
272 const char *res = str_atoull_clamp(str, &l, USHRT_MAX);
273 if (dst)
274 {
275 *dst = res ? l : 0;
276 }
277 return res;
278}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ make_str_ato_wrappers() [1/3]

make_str_ato_wrappers ( i ,
int  )

◆ make_str_ato_wrappers() [2/3]

long make_str_ato_wrappers ( s ,
short  )

◆ make_str_ato_wrappers() [3/3]

long unsigned int make_str_ato_wrappers ( ul ,
unsigned long  )