Altre correzioni su memory mapping ed esempi
[gapil.git] / sources / ErrCode.c
index 58f5491669ebea90a4bff3d99290fd849ad44465..b59da7fcec9427d5b0cbbaf9ed488c0b3027ffd9 100644 (file)
@@ -1,3 +1,21 @@
+/* ErrCode.c
+ * 
+ * Copyright (C) 2001 Simone Piccardi
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
 /****************************************************************
  *
  * Program ErrCode.c: 
@@ -8,7 +26,7 @@
  *
  * Usage: errcode -h give all info's
  *
- * $Id: ErrCode.c,v 1.1 2001/09/09 17:39:15 piccardi Exp $ 
+ * $Id: ErrCode.c,v 1.5 2002/12/03 11:06:05 piccardi Exp $ 
  *
  ****************************************************************/
 /* 
@@ -19,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);
@@ -199,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));
     }