Use strtoll() to parse the argument of the -S option.
FreeBSD has supported 64 bit file offsets for more than 25 years on
all architectures and off_t is a 64 bit integer type for that reason.
While strtol() returns a 64 bit value on 64 LP64 architectures, it
is limit to 32 bit on e.g. i386. The strtoll() function returns a 64
but result on all supported architectures and therefore supports the
possible file lengths and file offsets on 32 bit archtectures.
Reported by: antoine
MFC after: 3 days
r_flag = 1;
break;
case 'S':
- S_size = (off_t)strtol(optarg, &end, 10);
+ S_size = strtoll(optarg, &end, 10);
if (*optarg == '\0' || *end != '\0')
errx(1, "invalid size (%s)", optarg);
break;