diff options
author | Chen Guo <chen.guo.0625@gmail.com> | 2010-01-08 03:42:27 -0800 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2010-11-22 01:45:15 +0000 |
commit | be107398e56e9f6ada8cd558b3f43bb1ed70fb84 (patch) | |
tree | d0fb06eeb230ba097da352d041443a27e5a01d74 /tests/misc/split-fail | |
parent | dadca988afc4bbe132c4919fd669272ac6cb2566 (diff) | |
download | coreutils-be107398e56e9f6ada8cd558b3f43bb1ed70fb84.tar.xz |
split: add --number to generate a particular number of files
* src/split.c (usage, long_options, main): New options --number,
--unbuffered, --elide-empty-files.
(set_suffix_length): New function to auto increase suffix length
to handle a specified number of files.
(create): New function. Refactored from cwrite() and ofile_open().
(bytes_split): Add max_files argument to support byte chunking.
(lines_chunk_split): New function. Split file into chunks of lines.
(bytes_chunk_extract): New function. Extract a chunk of file.
(of_info): New struct. Used by functions lines_rr and ofile_open
to keep track of file descriptors associated with output files.
(ofile_open): New function. Shuffle file descriptors when there
are more output files than available file descriptors.
(lines_rr): New function to distribute lines round-robin to files.
(chunk_parse): New function. Parses K/N syntax.
* tests/misc/split-bchunk: New test for byte chunking.
* tests/misc/split-lchunk: New test for line delimited chunking.
* tests/misc/split-rchunk: New test for round-robin chunking.
* tests/Makefile.am: Reference new tests.
* tests/misc/split-fail: Add failure scenarios for new options.
* tests/misc/split-l: Fix a typo. s/ln/split/.
* doc/coreutils.texi (split invocation): Document --number.
* NEWS: Mention the new feature.
* .mailmap: Map new email address for shortlog.
Signed-off-by: Pádraig Brady <P@draigBrady.com>
Diffstat (limited to 'tests/misc/split-fail')
-rwxr-xr-x | tests/misc/split-fail | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/misc/split-fail b/tests/misc/split-fail index b0b22e4c4..cf0edc900 100755 --- a/tests/misc/split-fail +++ b/tests/misc/split-fail @@ -27,6 +27,10 @@ split -a 0 in 2> /dev/null || fail=1 split -b 0 in 2> /dev/null && fail=1 split -C 0 in 2> /dev/null && fail=1 split -l 0 in 2> /dev/null && fail=1 +split -n 0 in 2> /dev/null && fail=1 +split -n 1/0 in 2> /dev/null && fail=1 +split -n 0/1 in 2> /dev/null && fail=1 +split -n 2/1 in 2> /dev/null && fail=1 # Make sure -C doesn't create empty files. rm -f x?? || fail=1 @@ -44,6 +48,12 @@ split --lines=$UINTMAX_MAX in || fail=1 split --bytes=$OFF_T_MAX in || fail=1 split --line-bytes=$OFF_T_OFLOW 2> /dev/null in && fail=1 split --line-bytes=$SIZE_OFLOW 2> /dev/null in && fail=1 +if truncate -s$SIZE_OFLOW large; then + # Ensure we can split chunks of a large file on 32 bit hosts + split --number=$SIZE_OFLOW/$SIZE_OFLOW large >/dev/null || fail=1 +fi +split --number=r/$UINTMAX_MAX/$UINTMAX_MAX </dev/null >/dev/null || fail=1 +split --number=r/$UINTMAX_OFLOW </dev/null 2>/dev/null && fail=1 # Make sure that a huge obsolete option evokes the right failure. split -99999999999999999991 2> out && fail=1 |