diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-09-07 10:43:15 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-09-07 20:41:53 +0000 |
commit | c7fc2802221877d939bb939f04766a5a30cfdb9f (patch) | |
tree | 7762d3a9dbf0cd8caffdfed880ce576c3e5cb1cd /wsutil/strtoi.h | |
parent | a66aa4c9c90017f0c03412b02a2be2b2cef3ac5d (diff) | |
download | wireshark-c7fc2802221877d939bb939f04766a5a30cfdb9f.tar.gz |
Make the ws_strto* routines more like the strto* routines.
Not all uses of atoi() or various strto* routines in Wireshark expect
the string to contain *only* a number, so not all uses should require
that the byte after the number be a '\0'. Have the ws_strto* routines
take a "pointer a pointer set to point to the character after the
number" argument, and have the callers do the appropriate checks of the
character after that.
This fixes the VMS trace reading code so that it can read those files
again.
The get_ routines are handed command-line arguments, so they *do* expect
the string to contain only a number; have them check to make sure the
byte after the number is a '\0'.
Change-Id: I46fc1bea7912b9278e385fe38491a0a2ad60d697
Reviewed-on: https://code.wireshark.org/review/17560
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wsutil/strtoi.h')
-rw-r--r-- | wsutil/strtoi.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/wsutil/strtoi.h b/wsutil/strtoi.h index 3b35bfc323..ed48b52aac 100644 --- a/wsutil/strtoi.h +++ b/wsutil/strtoi.h @@ -32,20 +32,22 @@ /* * \brief Convert a string to a signed/unsigned int, with error checks. * \param str The string to convert + * \param endptr NULL or pointer to a pointer set to point to the + * character after the last character of the number * \param cint The converted integer * \return TRUE if the conversion suceeds, FALSE otherwise. * On error, errno is set to EINVAL for unrecognized input and ERANGE * if the resulting number does not fit in the type. */ -WS_DLL_PUBLIC gboolean ws_strtoi64(const gchar* str, gint64* cint); -WS_DLL_PUBLIC gboolean ws_strtoi32(const gchar* str, gint32* cint); -WS_DLL_PUBLIC gboolean ws_strtoi16(const gchar* str, gint16* cint); -WS_DLL_PUBLIC gboolean ws_strtoi8 (const gchar* str, gint8* cint); +WS_DLL_PUBLIC gboolean ws_strtoi64(const gchar* str, const gchar** endptr, gint64* cint); +WS_DLL_PUBLIC gboolean ws_strtoi32(const gchar* str, const gchar** endptr, gint32* cint); +WS_DLL_PUBLIC gboolean ws_strtoi16(const gchar* str, const gchar** endptr, gint16* cint); +WS_DLL_PUBLIC gboolean ws_strtoi8 (const gchar* str, const gchar** endptr, gint8* cint); -WS_DLL_PUBLIC gboolean ws_strtou64(const gchar* str, guint64* cint); -WS_DLL_PUBLIC gboolean ws_strtou32(const gchar* str, guint32* cint); -WS_DLL_PUBLIC gboolean ws_strtou16(const gchar* str, guint16* cint); -WS_DLL_PUBLIC gboolean ws_strtou8 (const gchar* str, guint8* cint); +WS_DLL_PUBLIC gboolean ws_strtou64(const gchar* str, const gchar** endptr, guint64* cint); +WS_DLL_PUBLIC gboolean ws_strtou32(const gchar* str, const gchar** endptr, guint32* cint); +WS_DLL_PUBLIC gboolean ws_strtou16(const gchar* str, const gchar** endptr, guint16* cint); +WS_DLL_PUBLIC gboolean ws_strtou8 (const gchar* str, const gchar** endptr, guint8* cint); #endif |