From a2c2dbe65e4186eb4ac81f1ee459346f9caf5a96 Mon Sep 17 00:00:00 2001
From: aldot <aldot@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Date: Wed, 28 Mar 2007 16:48:40 +0000
Subject: - move additional fancy options not mandated by SUSv3 into a FANCY
 option

git-svn-id: svn://busybox.net/trunk/busybox@18263 69ca8d6d-28ef-0310-b511-8ec308f3f277
---
 coreutils/Config.in | 11 +++++++++--
 coreutils/split.c   | 15 ++++++++++-----
 scripts/defconfig   |  2 ++
 3 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/coreutils/Config.in b/coreutils/Config.in
index baac799db..be5e9527b 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 07eb97e0c..10035e9ab 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 6ca10b63d..5846b0cf7 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
-- 
cgit v1.2.3-55-g6feb