dd: support >2gb values for seek, skip, count
authorDenis Vlasenko <vda.linux@googlemail.com>
Sat, 25 Nov 2006 14:46:21 +0000 (14:46 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sat, 25 Nov 2006 14:46:21 +0000 (14:46 -0000)
coreutils/dd.c

index 96ea32f06600672892cb26ecc522e6b8090cae04..01702a58092aee56cd9d198f9ba152ca05272ff2 100644 (file)
@@ -44,6 +44,12 @@ static ssize_t full_write_or_warn(int fd, const void *buf, size_t len,
        return n;
 }
 
+#if ENABLE_LFS
+#define XATOU_SFX xatoull_sfx
+#else
+#define XATOU_SFX xatoul_sfx
+#endif
+
 int dd_main(int argc, char **argv)
 {
        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);
                else if (!strncmp("bs=", arg, 3))
                        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))
-                       count = xatoul_sfx(arg+6, dd_suffixes);
+                       count = XATOU_SFX(arg+6, dd_suffixes);
                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))
-                       skip = xatoul_sfx(arg+5, dd_suffixes);
+                       skip = XATOU_SFX(arg+5, dd_suffixes);
 
                else if (!strncmp("if=", arg, 3))
                        infile = arg+3;