ALT Linux Bugzilla
– Attachment 4727 Details for
Bug 24841
"split" sets wrong restrictions for suffix length
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
proposed fix
split-suffix.diff (text/plain), 3.44 KB, created by
Pádraig Brady
on 2010-12-30 13:40:37 MSK
(
hide
)
Description:
proposed fix
Filename:
MIME Type:
Creator:
Pádraig Brady
Created:
2010-12-30 13:40:37 MSK
Size:
3.44 KB
patch
obsolete
>From ec19e2a647cb64d4a5620787d4ecf5964d85fcf6 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com> >Date: Thu, 30 Dec 2010 01:36:59 +0000 >Subject: [PATCH] split: fix the suffix length calculation > >* src/split.c (set_suffix_length): Only auto calculate >the suffix length when the number of files is specified. >* tests/misc/split-a: Add a case to trigger the bug. >* NEWS: Mention the fix. >--- > NEWS | 6 ++++++ > src/split.c | 32 ++++++++++++++++++++------------ > tests/misc/split-a | 5 +++++ > 3 files changed, 31 insertions(+), 12 deletions(-) > >diff --git a/NEWS b/NEWS >index 401b2f5..88596b5 100644 >--- a/NEWS >+++ b/NEWS >@@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*- > > * Noteworthy changes in release ?.? (????-??-??) [?] > >+** Bug fixes >+ >+ split no longer creates files with a suffix length that >+ is dependent on the number of bytes or lines per file. >+ [bug introduced in coreutils-8.8] >+ > > * Noteworthy changes in release 8.8 (2010-12-22) [stable] > >diff --git a/src/split.c b/src/split.c >index ae98bc7..9e9efbf 100644 >--- a/src/split.c >+++ b/src/split.c >@@ -78,6 +78,13 @@ static bool elide_empty_files; > input to output, which is much slower, so disabled by default. */ > static bool unbuffered; > >+/* The split mode to use. */ >+enum Split_type >+{ >+ type_undef, type_bytes, type_byteslines, type_lines, type_digits, >+ type_chunk_bytes, type_chunk_lines, type_rr >+}; >+ > /* For long options that have no equivalent short option, use a > non-character as a pseudo short option, starting with CHAR_MAX + 1. */ > enum >@@ -105,16 +112,21 @@ static struct option const longopts[] = > }; > > static void >-set_suffix_length (uintmax_t n_units) >+set_suffix_length (uintmax_t n_units, enum Split_type split_type) > { > #define DEFAULT_SUFFIX_LENGTH 2 > > size_t suffix_needed = 0; >- size_t alphabet_len = strlen (suffix_alphabet); >- bool alphabet_slop = (n_units % alphabet_len) != 0; >- while (n_units /= alphabet_len) >- suffix_needed++; >- suffix_needed += alphabet_slop; >+ >+ if (split_type == type_chunk_bytes || split_type == type_chunk_lines >+ || split_type == type_rr) >+ { >+ size_t alphabet_len = strlen (suffix_alphabet); >+ bool alphabet_slop = (n_units % alphabet_len) != 0; >+ while (n_units /= alphabet_len) >+ suffix_needed++; >+ suffix_needed += alphabet_slop; >+ } > > if (suffix_length) /* set by user */ > { >@@ -780,11 +792,7 @@ int > main (int argc, char **argv) > { > struct stat stat_buf; >- enum >- { >- type_undef, type_bytes, type_byteslines, type_lines, type_digits, >- type_chunk_bytes, type_chunk_lines, type_rr >- } split_type = type_undef; >+ enum Split_type split_type = type_undef; > size_t in_blk_size = 0; /* optimal block size of input file device */ > char *buf; /* file i/o buffer */ > size_t page_size = getpagesize (); >@@ -984,7 +992,7 @@ main (int argc, char **argv) > usage (EXIT_FAILURE); > } > >- set_suffix_length (n_units); >+ set_suffix_length (n_units, split_type); > > /* Get out the filename arguments. */ > >diff --git a/tests/misc/split-a b/tests/misc/split-a >index d861b92..b0526bc 100755 >--- a/tests/misc/split-a >+++ b/tests/misc/split-a >@@ -63,4 +63,9 @@ for f in $files; do > n=$(expr $n + 1) > done > >+# Ensure that -a is independent of -[bCl] >+split -a2 -b1000 < /dev/null || fail=1 >+split -a2 -l1000 < /dev/null || fail=1 >+split -a2 -C1000 < /dev/null || fail=1 >+ > Exit $fail >-- >1.7.3.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 24841
: 4727