Altre correzioni su memory mapping ed esempi
[gapil.git] / sources / ErrCode.c
index 5106885503a25e7b86a5e1767e30901d2aa33f91..b59da7fcec9427d5b0cbbaf9ed488c0b3027ffd9 100644 (file)
@@ -26,7 +26,7 @@
  *
  * Usage: errcode -h give all info's
  *
- * $Id: ErrCode.c,v 1.2 2001/09/09 22:45:34 piccardi Exp $ 
+ * $Id: ErrCode.c,v 1.5 2002/12/03 11:06:05 piccardi Exp $ 
  *
  ****************************************************************/
 /* 
@@ -37,6 +37,7 @@
 #include <unistd.h>      /* unix standard library */
 #include <stdio.h>      /* standard I/O library */
 #include <string.h>      /* string functions */
+#include <limits.h>      /* system limits values */
 
 /* Help printing routine */
 void usage(void);
@@ -217,7 +218,17 @@ int main(int argc, char *argv[])
     if (optind == argc) {
        usage();
     }
-    err = atoi(argv[optind]);
+    /* convert string to number */
+    err = strtol(argv[optind], NULL, 10);
+    /* testing error condition on conversion */
+    if (err==LONG_MIN) {
+       perror("Underflow on error code");
+       return 1;
+    } else if (err==LONG_MIN) {
+       perror("Overflow on error code");
+       return 1;
+    }
+    /* conversion is fine */
     if (message) {
        printf("Error message for %d is %s\n", err, strerror(err));
     }