FS *fshead; /* head of format strings */
int blocksize; /* data block size */
int exitval; /* final exit value */
-int length = -1; /* max bytes to read */
+ssize_t length = -1; /* max bytes to read */
int main(int argc, char **argv)
{
extern int blocksize; /* data block size */
extern int deprecated; /* od compatibility */
extern int exitval; /* final exit value */
-extern int length; /* max bytes to read */
+extern ssize_t length; /* max bytes to read */
extern off_t skip; /* bytes to skip */
enum _vflag { ALL, DUP, FIRST, WAIT }; /* -v values */
newsyntax(int argc, char ***argvp)
{
int ch;
- char *p, **argv;
+ char **argv;
+ uintmax_t o;
argv = *argvp;
while ((ch = getopt(argc, argv, "bcCde:f:n:os:vxV")) != -1) {
addfile(optarg);
break;
case 'n':
- length = strtol_or_err(optarg, _("bad length value"));
+ if (strtosize(optarg, &o))
+ errx(EXIT_FAILURE,
+ _("invalid length value '%s' specified"), optarg);
+ length = o;
break;
case 'o':
add("\"%07.7_Ax\n\"");
add("\"%07.7_ax \" 8/2 \" %06o \" \"\\n\"");
break;
case 's':
- if ((skip = strtol(optarg, &p, 0)) < 0)
- err(EXIT_FAILURE, _("bad skip value"));
- switch(*p) {
- case 'b':
- skip *= 512;
- break;
- case 'k':
- skip *= 1024;
- break;
- case 'm':
- skip *= 1048576;
- break;
- }
+ if (strtosize(optarg, &o))
+ errx(EXIT_FAILURE,
+ _("invalid skip value '%s' specified"), optarg);
+ skip = o;
break;
case 'v':
vflag = ALL;