Package: coreutils
Version: 5.97-5.5
Severity: minor
Tags: patch
There are many coreutil commands using size suffix. Although they are
parsed by the same routines (xstrtoumax.c -> xstrtol.c), its capability
are restricted for most coreutil commands.
Please consider adding attached file to be placed in debian/patches.
(or forward this patch to upstream)
So far it is cleanly compiling and seems to work nicely.
This patch only applies to executable side but do not change manpage
yet. Some options are there as compatibility and consistency only.
This should solve complain such as http://bugs.debian.org/342238
This patch solves more than just M for split but much more :-)
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.22-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages coreutils depends on:
ii libacl1 2.2.42-1 Access control list shared library
ii libc6 2.6.1-1 GNU C Library: Shared libraries
ii libselinux1 2.0.15-2+b1 SELinux shared libraries
coreutils recommends no packages.
-- no debconf information
diff -Nru coreutils-5.97-old/src/dd.c coreutils-5.97/src/dd.c
--- coreutils-5.97-old/src/dd.c 2007-09-01 08:06:07.000000000 +0900
+++ coreutils-5.97/src/dd.c 2007-09-01 09:48:31.000000000 +0900
@@ -829,7 +829,7 @@
{
uintmax_t n;
char *suffix;
- enum strtol_error e = xstrtoumax (str, &suffix, 10, &n, "bcEGkKMPTwYZ0");
+ enum strtol_error e = xstrtoumax (str, &suffix, 10, &n, "bcEgGkKmMPtTwYZ0");
if (e == LONGINT_INVALID_SUFFIX_CHAR && *suffix == 'x')
{
diff -Nru coreutils-5.97-old/src/head.c coreutils-5.97/src/head.c
--- coreutils-5.97-old/src/head.c 2005-07-12 03:23:23.000000000 +0900
+++ coreutils-5.97/src/head.c 2007-09-01 09:48:59.000000000 +0900
@@ -872,7 +872,7 @@
strtol_error s_err;
uintmax_t n;
- s_err = xstrtoumax (n_string, NULL, 10, &n, "bkm");
+ s_err = xstrtoumax (n_string, NULL, 10, &n, "bEgGkKmMPtTYZ0");
if (s_err == LONGINT_OVERFLOW)
{
diff -Nru coreutils-5.97-old/src/od.c coreutils-5.97/src/od.c
--- coreutils-5.97-old/src/od.c 2005-12-14 16:36:14.000000000 +0900
+++ coreutils-5.97/src/od.c 2007-09-01 09:50:06.000000000 +0900
@@ -1648,7 +1648,7 @@
case 'j':
modern = true;
- s_err = xstrtoumax (optarg, NULL, 0, &n_bytes_to_skip, "bkm");
+ s_err = xstrtoumax (optarg, NULL, 0, &n_bytes_to_skip,
"bEgGkKmMPtTYZ0");
if (s_err != LONGINT_OK)
STRTOL_FATAL_ERROR (optarg, _("skip argument"), s_err);
break;
@@ -1657,7 +1657,7 @@
modern = true;
limit_bytes_to_format = true;
- s_err = xstrtoumax (optarg, NULL, 0, &max_bytes_to_format, "bkm");
+ s_err = xstrtoumax (optarg, NULL, 0, &max_bytes_to_format,
"bEgGkKmMPtTYZ0");
if (s_err != LONGINT_OK)
STRTOL_FATAL_ERROR (optarg, _("limit argument"), s_err);
break;
@@ -1668,7 +1668,7 @@
string_min = 3;
else
{
- s_err = xstrtoumax (optarg, NULL, 0, &tmp, "bkm");
+ s_err = xstrtoumax (optarg, NULL, 0, &tmp, "bEgGkKmMPtTYZ0");
if (s_err != LONGINT_OK)
STRTOL_FATAL_ERROR (optarg, _("minimum string length"), s_err);
diff -Nru coreutils-5.97-old/src/shred.c coreutils-5.97/src/shred.c
--- coreutils-5.97-old/src/shred.c 2006-05-07 00:49:03.000000000 +0900
+++ coreutils-5.97/src/shred.c 2007-09-01 09:51:11.000000000 +0900
@@ -1514,7 +1514,7 @@
case 's':
{
uintmax_t tmp;
- if (xstrtoumax (optarg, NULL, 0, &tmp, "cbBkKMGTPEZY0")
+ if (xstrtoumax (optarg, NULL, 0, &tmp, "bBcEgGkKmMPtTYZ0")
!= LONGINT_OK)
{
error (EXIT_FAILURE, 0, _("%s: invalid file size"),
diff -Nru coreutils-5.97-old/src/sort.c coreutils-5.97/src/sort.c
--- coreutils-5.97-old/src/sort.c 2007-09-01 08:06:07.000000000 +0900
+++ coreutils-5.97/src/sort.c 2007-09-01 09:47:49.000000000 +0900
@@ -604,7 +604,7 @@
{
uintmax_t n;
char *suffix;
- enum strtol_error e = xstrtoumax (s, &suffix, 10, &n, "EgGkKmMPtTYZ");
+ enum strtol_error e = xstrtoumax (s, &suffix, 10, &n, "EgGkKmMPtTYZ0");
/* The default unit is KiB. */
if (e == LONGINT_OK && ISDIGIT (suffix[-1]))
diff -Nru coreutils-5.97-old/src/split.c coreutils-5.97/src/split.c
--- coreutils-5.97-old/src/split.c 2005-07-12 03:24:42.000000000 +0900
+++ coreutils-5.97/src/split.c 2007-09-01 09:52:20.000000000 +0900
@@ -429,7 +429,7 @@
if (split_type != type_undef)
FAIL_ONLY_ONE_WAY ();
split_type = type_bytes;
- if (xstrtoumax (optarg, NULL, 10, &n_units, "bkm") != LONGINT_OK
+ if (xstrtoumax (optarg, NULL, 10, &n_units, "bEgGkKmMPtTYZ0") !=
LONGINT_OK
|| n_units == 0)
{
error (0, 0, _("%s: invalid number of bytes"), optarg);
@@ -453,7 +453,7 @@
if (split_type != type_undef)
FAIL_ONLY_ONE_WAY ();
split_type = type_byteslines;
- if (xstrtoumax (optarg, NULL, 10, &n_units, "bkm") != LONGINT_OK
+ if (xstrtoumax (optarg, NULL, 10, &n_units, "bEgGkKmMPtTYZ0") !=
LONGINT_OK
|| n_units == 0 || SIZE_MAX < n_units)
{
error (0, 0, _("%s: invalid number of bytes"), optarg);
diff -Nru coreutils-5.97-old/src/tail.c coreutils-5.97/src/tail.c
--- coreutils-5.97-old/src/tail.c 2007-09-01 08:06:07.000000000 +0900
+++ coreutils-5.97/src/tail.c 2007-09-01 09:53:36.000000000 +0900
@@ -1482,7 +1482,7 @@
{
strtol_error s_err;
- s_err = xstrtoumax (optarg, NULL, 10, n_units, "bkm");
+ s_err = xstrtoumax (optarg, NULL, 10, n_units, "bEgGkKmMPtTYZ0");
if (s_err != LONGINT_OK)
{
error (EXIT_FAILURE, 0, "%s: %s", optarg,