summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/Config.in11
-rw-r--r--coreutils/split.c15
-rw-r--r--scripts/defconfig2
3 files changed, 21 insertions, 7 deletions
diff --git a/coreutils/Config.in b/coreutils/Config.in
index baac799..be5e952 100644
--- a/coreutils/Config.in
+++ b/coreutils/Config.in
@@ -541,8 +541,15 @@ config SPLIT
default n
help
split a file into pieces.
-
- http://www.opengroup.org/onlinepubs/007904975/utilities/split.html
+
+config FEATURE_SPLIT_FANCY
+ bool "fancy extensions"
+ default n
+ depends on SPLIT
+ help
+ Add support for features not required by SUSv3.
+ Supports additional suffixes 'b' for 512 bytes,
+ 'g' for 1GiB for the -b option.
config STAT
bool "stat"
diff --git a/coreutils/split.c b/coreutils/split.c
index 07eb97e..10035e9 100644
--- a/coreutils/split.c
+++ b/coreutils/split.c
@@ -12,10 +12,14 @@
#include "busybox.h"
static const struct suffix_mult split_suffices[] = {
+#if ENABLE_FEATURE_SPLIT_FANCY
{ "b", 512 },
+#endif
{ "k", 1024 },
{ "m", 1024*1024 },
+#if ENABLE_FEATURE_SPLIT_FANCY
{ "g", 1024*1024*1024 },
+#endif
{ NULL, 0 }
};
@@ -58,10 +62,10 @@ int split_main(int argc, char **argv)
char *pfx;
char *count_p;
const char *sfx;
- unsigned long cnt = 1000;
- unsigned long remaining = 0;
+ off_t cnt = 1000;
+ off_t remaining = 0;
unsigned opt;
- int bytes_read, to_write;
+ ssize_t bytes_read, to_write;
char *src;
opt_complementary = "?2";
@@ -73,8 +77,9 @@ int split_main(int argc, char **argv)
cnt = xatoul_sfx(count_p, split_suffices);
if (opt & SPLIT_OPT_a)
suffix_len = xatou(sfx);
- argv += optind;
sfx = "x";
+
+ argv += optind;
if (argv[0]) {
if (argv[1])
sfx = argv[1];
@@ -104,7 +109,7 @@ int split_main(int argc, char **argv)
do {
if (!remaining) {
if (!pfx)
- bb_error_msg_and_die("suffices exhausted");
+ bb_error_msg_and_die("suffixes exhausted");
xmove_fd(xopen(pfx, O_WRONLY | O_CREAT | O_TRUNC), 1);
pfx = next_file(pfx, suffix_len);
remaining = cnt;
diff --git a/scripts/defconfig b/scripts/defconfig
index 6ca10b6..5846b0c 100644
--- a/scripts/defconfig
+++ b/scripts/defconfig
@@ -194,6 +194,7 @@ CONFIG_SHA1SUM=y
CONFIG_SLEEP=y
CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_SPLIT=y
+# CONFIG_FEATURE_SPLIT_FANCY is not set
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
CONFIG_STAT=y
@@ -272,6 +273,7 @@ CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y