--- joko/Uni/BSArch/01/prime.c 2006/05/15 11:22:55 1.14 +++ joko/Uni/BSArch/01/prime.c 2006/05/15 11:36:52 1.17 @@ -1,4 +1,4 @@ -/* $Id: prime.c,v 1.14 2006/05/15 11:22:55 franky Exp $ */ +/* $Id: prime.c,v 1.17 2006/05/15 11:36:52 franky Exp $ */ #include #include @@ -41,13 +41,16 @@ long int convert_number(const char *nptr, BOOL warn) { char * endptr; + long int number; + errno = 0; - long int number = strtol(nptr, &endptr, 10); + number = strtol(nptr, &endptr, 10); /* invalid characters? */ if (*endptr != '\0') { char message[256]; snprintf(message, 255, "Could not convert '%s' to a valid (integer) number.", nptr); + errno=EINVAL; if(warn) PRINTWARNING(message); else{ @@ -61,6 +64,7 @@ if (errno == ERANGE) { char message[256]; snprintf(message, 255, "Number is not in range of 'long int': %s", nptr); + errno=EINVAL; if(warn) PRINTWARNING(message); else{ @@ -96,10 +100,11 @@ /* try to open file for reading */ FILE * fp = fopen(argv[1], "r"); err=errno; + errno=0; /* (1) test-single-number mode: first argument is not a filename */ if (fp == NULL) { long int number = convert_number(argv[1],TRUE); - if(err){ + if(errno){ fprintf(stderr, "%s: %s\n", argv[1], strerror(err)); return -1; }