dd: support >2gb values for seek, skip, count

This commit is contained in:
Denis Vlasenko 2006-11-25 14:46:21 +00:00
parent ed836cdc30
commit 5dd27b1ee0

View File

@ -44,6 +44,12 @@ static ssize_t full_write_or_warn(int fd, const void *buf, size_t len,
return n; return n;
} }
#if ENABLE_LFS
#define XATOU_SFX xatoull_sfx
#else
#define XATOU_SFX xatoul_sfx
#endif
int dd_main(int argc, char **argv) int dd_main(int argc, char **argv)
{ {
enum { enum {
@ -79,13 +85,13 @@ int dd_main(int argc, char **argv)
obs = xatoul_range_sfx(arg+4, 0, ((size_t)-1L)/2, dd_suffixes); obs = xatoul_range_sfx(arg+4, 0, ((size_t)-1L)/2, dd_suffixes);
else if (!strncmp("bs=", arg, 3)) else if (!strncmp("bs=", arg, 3))
ibs = obs = xatoul_range_sfx(arg+3, 0, ((size_t)-1L)/2, dd_suffixes); ibs = obs = xatoul_range_sfx(arg+3, 0, ((size_t)-1L)/2, dd_suffixes);
// FIXME: make them capable of eating LARGE numbers /* These can be large: */
else if (!strncmp("count=", arg, 6)) else if (!strncmp("count=", arg, 6))
count = xatoul_sfx(arg+6, dd_suffixes); count = XATOU_SFX(arg+6, dd_suffixes);
else if (!strncmp("seek=", arg, 5)) else if (!strncmp("seek=", arg, 5))
seek = xatoul_sfx(arg+5, dd_suffixes); seek = XATOU_SFX(arg+5, dd_suffixes);
else if (!strncmp("skip=", arg, 5)) else if (!strncmp("skip=", arg, 5))
skip = xatoul_sfx(arg+5, dd_suffixes); skip = XATOU_SFX(arg+5, dd_suffixes);
else if (!strncmp("if=", arg, 3)) else if (!strncmp("if=", arg, 3))
infile = arg+3; infile = arg+3;