aboutsummaryrefslogtreecommitdiff
path: root/coreutils/dd.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/dd.c')
-rw-r--r--coreutils/dd.c31
1 files changed, 6 insertions, 25 deletions
diff --git a/coreutils/dd.c b/coreutils/dd.c
index a01722040..589547e77 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -99,25 +99,6 @@ enum {
99 ofd = STDOUT_FILENO, 99 ofd = STDOUT_FILENO,
100}; 100};
101 101
102static const struct suffix_mult dd_suffixes[] = {
103 { "c", 1 },
104 { "w", 2 },
105 { "b", 512 },
106 { "kB", 1000 },
107 { "kD", 1000 },
108 { "k", 1024 },
109 { "K", 1024 }, /* compat with coreutils dd (it also accepts KB and KD, TODO?) */
110 { "MB", 1000000 },
111 { "MD", 1000000 },
112 { "M", 1024*1024 },
113 { "GB", 1000000000 },
114 { "GD", 1000000000 },
115 { "G", 1024*1024*1024 },
116 /* "D" suffix for decimal is not in coreutils manpage, looks like it's deprecated */
117 /* coreutils also understands TPEZY suffixes for tera- and so on, with B suffix for decimal */
118 { "", 0 }
119};
120
121struct globals { 102struct globals {
122 off_t out_full, out_part, in_full, in_part; 103 off_t out_full, out_part, in_full, in_part;
123#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE 104#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE
@@ -327,11 +308,11 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
327#if ENABLE_FEATURE_DD_IBS_OBS 308#if ENABLE_FEATURE_DD_IBS_OBS
328 if (what == OP_ibs) { 309 if (what == OP_ibs) {
329 /* Must fit into positive ssize_t */ 310 /* Must fit into positive ssize_t */
330 ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes); 311 ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, cwbkMG_suffixes);
331 /*continue;*/ 312 /*continue;*/
332 } 313 }
333 if (what == OP_obs) { 314 if (what == OP_obs) {
334 obs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes); 315 obs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, cwbkMG_suffixes);
335 /*continue;*/ 316 /*continue;*/
336 } 317 }
337 if (what == OP_conv) { 318 if (what == OP_conv) {
@@ -357,22 +338,22 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
357 } 338 }
358#endif 339#endif
359 if (what == OP_bs) { 340 if (what == OP_bs) {
360 ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes); 341 ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, cwbkMG_suffixes);
361 obs = ibs; 342 obs = ibs;
362 /*continue;*/ 343 /*continue;*/
363 } 344 }
364 /* These can be large: */ 345 /* These can be large: */
365 if (what == OP_count) { 346 if (what == OP_count) {
366 G.flags |= FLAG_COUNT; 347 G.flags |= FLAG_COUNT;
367 count = XATOU_SFX(val, dd_suffixes); 348 count = XATOU_SFX(val, cwbkMG_suffixes);
368 /*continue;*/ 349 /*continue;*/
369 } 350 }
370 if (what == OP_seek) { 351 if (what == OP_seek) {
371 seek = XATOU_SFX(val, dd_suffixes); 352 seek = XATOU_SFX(val, cwbkMG_suffixes);
372 /*continue;*/ 353 /*continue;*/
373 } 354 }
374 if (what == OP_skip) { 355 if (what == OP_skip) {
375 skip = XATOU_SFX(val, dd_suffixes); 356 skip = XATOU_SFX(val, cwbkMG_suffixes);
376 /*continue;*/ 357 /*continue;*/
377 } 358 }
378 if (what == OP_if) { 359 if (what == OP_if) {