This commit was generated by cvs2svn to compensate for changes in r2562,
[util-vserver.git] / lib_internal / util-isnumber.c
index 2fea0e4..66e01fe 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: util-isnumber.c,v 1.1 2005/07/04 22:35:47 ensc Exp $    --*- c -*--
+// $Id: util-isnumber.c 2255 2006-01-22 11:23:47Z ensc $    --*- c -*--
 
 // Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #endif
 
 #include "util.h"
+#include "util-isnumber.hc"
+#include <limits.h>
 
-bool
-isNumber(char const *str, signed long *result)
+static inline bool
+checkConstraints(signed long val, unsigned int fac)
 {
-  char *       errptr;
-  signed long  val;
-
-  val = strtol(str, &errptr, 0);
-  if (*errptr!='\0' || errptr==str)
-    return false;
-  else {
-    if (result) *result = val;
-    return true;
-  }
+  if (val>0 && (signed long)(LONG_MAX/fac) <= val) return false;
+  if (val<0 && (signed long)(LONG_MIN/fac) >= val) return false;
+  return true;
 }
+
+ENSC_DECL_UTIL_ISNUMBER(isNumber, signed long, strtol)