diff options
author | Guy Harris <guy@alum.mit.edu> | 2011-04-11 00:01:08 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2011-04-11 00:01:08 +0000 |
commit | 4ad4d3e6784695420c7e511ed7eaa5c0e49f0e91 (patch) | |
tree | cb631a4e1881ed6ce2880d3e29c019f1a69a7604 /clopts_common.c | |
parent | f10a13b748bdafd13ab887437c04d04d325d2ca6 (diff) | |
download | wireshark-4ad4d3e6784695420c7e511ed7eaa5c0e49f0e91.tar.gz wireshark-4ad4d3e6784695420c7e511ed7eaa5c0e49f0e91.tar.bz2 wireshark-4ad4d3e6784695420c7e511ed7eaa5c0e49f0e91.zip |
Jeff Morris's change to make the autostop file size 64-bit. Fixes bug
5691.
svn path=/trunk/; revision=36551
Diffstat (limited to 'clopts_common.c')
-rw-r--r-- | clopts_common.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/clopts_common.c b/clopts_common.c index 1c7cea9b16..411c59cce1 100644 --- a/clopts_common.c +++ b/clopts_common.c @@ -74,3 +74,50 @@ get_positive_int(const char *string, const char *name) return number; } + +gint64 +get_natural_int64(const char *string, const char *name) +{ + gint64 number; + char *p; + +#if GLIB_CHECK_VERSION(2,12,0) + number = g_ascii_strtoll(string, &p, 10); +#elif defined(HAVE_STRTOLL) + number = strtoll(string, &p, 10); +#else + /* Punt and grab a 32-bit value */ + number = strtol(string, &p, 10); +#endif + + if (p == string || *p != '\0') { + cmdarg_err("The specified %s \"%s\" isn't a decimal number", name, string); + exit(1); + } + if (number < 0) { + cmdarg_err("The specified %s \"%s\" is a negative number", name, string); + exit(1); + } + if (number > G_MAXINT64) { /* XXX - ??? */ + cmdarg_err("The specified %s \"%s\" is too large (greater than %" G_GINT64_MODIFIER "d)", + name, string, G_MAXINT64); + exit(1); + } + return number; +} + + +gint64 +get_positive_int64(const char *string, const char *name) +{ + gint64 number; + + number = get_natural_int64(string, name); + + if (number == 0) { + cmdarg_err("The specified %s is zero", name); + exit(1); + } + + return number; +} |