2 * Utilities to convert strings to integers
4 * Copyright 2016, Dario Lombardo
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
19 #include "ws_symbol_export.h"
23 #endif /* __cplusplus */
26 * \brief Convert a decimal string to a signed/unsigned int, with error checks.
27 * \param str The string to convert
28 * \param endptr A pointer that will store a pointer to the first invalid
29 * character in str, allowing a number to be parsed even if there is trailing
30 * whitespace. If NULL, then the string is assumed to contain only valid
31 * characters (or it will error out).
32 * \param cint The converted integer
33 * \return true if the conversion succeeds, false otherwise.
34 * On error, errno is set to EINVAL for unrecognized input and ERANGE
35 * if the resulting number does not fit in the type.
37 WS_DLL_PUBLIC
bool ws_strtoi64(const char* str
, const char** endptr
, int64_t* cint
);
38 WS_DLL_PUBLIC
bool ws_strtoi32(const char* str
, const char** endptr
, int32_t* cint
);
39 WS_DLL_PUBLIC
bool ws_strtoi16(const char* str
, const char** endptr
, int16_t* cint
);
40 WS_DLL_PUBLIC
bool ws_strtoi8 (const char* str
, const char** endptr
, int8_t* cint
);
41 WS_DLL_PUBLIC
bool ws_strtoi (const char* str
, const char** endptr
, int* cint
);
43 WS_DLL_PUBLIC
bool ws_strtou64(const char* str
, const char** endptr
, uint64_t* cint
);
44 WS_DLL_PUBLIC
bool ws_strtou32(const char* str
, const char** endptr
, uint32_t* cint
);
45 WS_DLL_PUBLIC
bool ws_strtou16(const char* str
, const char** endptr
, uint16_t* cint
);
46 WS_DLL_PUBLIC
bool ws_strtou8 (const char* str
, const char** endptr
, uint8_t* cint
);
47 WS_DLL_PUBLIC
bool ws_strtou (const char* str
, const char** endptr
, unsigned* cint
);
50 * \brief Convert a hexadecimal string to an unsigned int, with error checks.
51 * \param str The string to convert
52 * \param endptr A pointer that will store a pointer to the first invalid
53 * character in str, allowing a number to be parsed even if there is trailing
54 * whitespace. If NULL, then the string is assumed to contain only valid
55 * characters (or it will error out).
56 * \param cint The converted integer
57 * \return true if the conversion succeeds, false otherwise.
58 * On error, errno is set to EINVAL for unrecognized input and ERANGE
59 * if the resulting number does not fit in the type.
62 WS_DLL_PUBLIC
bool ws_hexstrtou64(const char* str
, const char** endptr
, uint64_t* cint
);
63 WS_DLL_PUBLIC
bool ws_hexstrtou32(const char* str
, const char** endptr
, uint32_t* cint
);
64 WS_DLL_PUBLIC
bool ws_hexstrtou16(const char* str
, const char** endptr
, uint16_t* cint
);
65 WS_DLL_PUBLIC
bool ws_hexstrtou8 (const char* str
, const char** endptr
, uint8_t* cint
);
66 WS_DLL_PUBLIC
bool ws_hexstrtou (const char* str
, const char** endptr
, unsigned* cint
);
69 * \brief Convert a string in the specified base to an unsigned int, with
71 * \param str The string to convert
72 * \param endptr A pointer that will store a pointer to the first invalid
73 * character in str, allowing a number to be parsed even if there is trailing
74 * whitespace. If NULL, then the string is assumed to contain only valid
75 * characters (or it will error out).
76 * \param cint The converted integer
77 * \param base The base for the integer; 0 means "if it begins with 0x,
78 * it's hex, otherwise if it begins with 0, it's octal, otherwise it's
80 * \return true if the conversion succeeds, false otherwise.
81 * On error, errno is set to EINVAL for unrecognized input and ERANGE
82 * if the resulting number does not fit in the type.
85 WS_DLL_PUBLIC
bool ws_basestrtou64(const char* str
, const char** endptr
, uint64_t* cint
, int base
);
86 WS_DLL_PUBLIC
bool ws_basestrtou32(const char* str
, const char** endptr
, uint32_t* cint
, int base
);
87 WS_DLL_PUBLIC
bool ws_basestrtou16(const char* str
, const char** endptr
, uint16_t* cint
, int base
);
88 WS_DLL_PUBLIC
bool ws_basestrtou8 (const char* str
, const char** endptr
, uint8_t* cint
, int base
);
89 WS_DLL_PUBLIC
bool ws_basestrtou (const char* str
, const char** endptr
, unsigned* cint
, int base
);
93 #endif /* __cplusplus */
98 * Editor modelines - https://www.wireshark.org/tools/modelines.html
103 * indent-tabs-mode: t
106 * vi: set shiftwidth=4 tabstop=8 noexpandtab:
107 * :indentSize=4:tabSize=8:noTabs=false: