aboutsummaryrefslogtreecommitdiffstats
path: root/clopts_common.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-11 00:01:08 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-11 00:01:08 +0000
commit16fec78ad92b2696849bece7e1517e13be96322e (patch)
treecb631a4e1881ed6ce2880d3e29c019f1a69a7604 /clopts_common.c
parent7cc3d11c192a9447f150662f549152334eab7839 (diff)
Jeff Morris's change to make the autostop file size 64-bit. Fixes bug
5691. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@36551 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'clopts_common.c')
-rw-r--r--clopts_common.c47
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;
+}