Index: /trunk/psLib/src/types/psArguments.c
===================================================================
--- /trunk/psLib/src/types/psArguments.c	(revision 13520)
+++ /trunk/psLib/src/types/psArguments.c	(revision 13521)
@@ -7,6 +7,6 @@
  *  @author David Robbins, MHPCC
  *
- *  @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-05-11 23:37:37 $
+ *  @version $Revision: 1.26 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-05-25 04:15:46 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -132,8 +132,25 @@
 
 
-#define ARG_READ_CASE(TYPE,FUNC) \
-case PS_TYPE_##TYPE: \
-item->data.TYPE = FUNC(argv[argnum]); \
-return psArgumentRemove(argnum, argc, argv);
+#define ARG_READ_CASE_INT(TYPE,FUNC) \
+case PS_TYPE_##TYPE: { \
+    char *end; \
+    item->data.TYPE = FUNC(argv[argnum], &end, 0); \
+    if (end == argv[argnum]) { \
+        psError(PS_ERR_IO, true, "Unable to read argument value for %s", item->name); \
+        return false; \
+    } \
+    return psArgumentRemove(argnum, argc, argv); \
+}
+
+#define ARG_READ_CASE_FLOAT(TYPE,FUNC) \
+case PS_TYPE_##TYPE: { \
+    char *end; \
+    item->data.TYPE = FUNC(argv[argnum], &end); \
+    if (end == argv[argnum]) { \
+        psError(PS_ERR_IO, true, "Unable to read argument value for %s", item->name); \
+        return false; \
+    } \
+    return psArgumentRemove(argnum, argc, argv); \
+}
 
 static bool argumentRead(psMetadataItem *item, // Item to read into
@@ -145,14 +162,14 @@
     switch(item->type)
     {
-        ARG_READ_CASE(U8,atoi);
-        ARG_READ_CASE(U16,atoi);
-        ARG_READ_CASE(U32,atoi);
-        ARG_READ_CASE(U64,atoi);
-        ARG_READ_CASE(S8,atoi);
-        ARG_READ_CASE(S16,atoi);
-        ARG_READ_CASE(S32,atoi);
-        ARG_READ_CASE(S64,atoi);
-        ARG_READ_CASE(F32,atof);
-        ARG_READ_CASE(F64,atof);
+        ARG_READ_CASE_INT(U8,strtol);
+        ARG_READ_CASE_INT(U16,strtol);
+        ARG_READ_CASE_INT(U32,strtol);
+        ARG_READ_CASE_INT(U64,strtoll);
+        ARG_READ_CASE_INT(S8,strtol);
+        ARG_READ_CASE_INT(S16,strtol);
+        ARG_READ_CASE_INT(S32,strtol);
+        ARG_READ_CASE_INT(S64,strtoll);
+        ARG_READ_CASE_FLOAT(F32,strtof);
+        ARG_READ_CASE_FLOAT(F64,strtod);
     case PS_DATA_BOOL:
         // Turn option on; no optional argument to remove
