diff options
Diffstat (limited to 'coreutils/dd.c')
-rw-r--r-- | coreutils/dd.c | 31 |
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 | ||
102 | static 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 | |||
121 | struct globals { | 102 | struct 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) { |