exit(EX_USAGE);
return -1;
}
- int ret = strtol(argv[pos], NULL, 10);
- if (ret == LONG_MIN || ret == LONG_MAX) {
+ errno = 0;
+ long int ret = strtol(argv[pos], NULL, 10);
+ if (errno != 0 || ret > INT_MAX || ret < 0) {
usage(stderr, argc, argv);
exit(EX_USAGE);
return -1;
}
- return ret;
+ return (int)ret;
}
int main(int argc, char *argv[])