aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/split.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/coreutils/split.c b/coreutils/split.c
index 312906f6e..86fd20437 100644
--- a/coreutils/split.c
+++ b/coreutils/split.c
@@ -11,6 +11,17 @@
*/
#include "busybox.h"
static unsigned suffix_len = 2;
+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 }
+};
/* Increment the suffix part of the filename.
* Returns 0 on success and 1 on error (if we are out of files)
@@ -22,13 +33,12 @@ static bool next_file(char **old)
char *curr;
do {
-// if (**(old + end - i) < 'z') {
curr = *old + end - i;
if (*curr < 'z') {
- *(*old + end - i) += 1;
+ *curr += 1;
break;
}
- *(*old +end - i) = 'a';
+ *curr = 'a';
i++;
} while (i <= suffix_len);
if ((*curr == 'z') && (i == suffix_len))
@@ -37,13 +47,14 @@ static bool next_file(char **old)
}
#define SPLIT_OPT_l (1<<0)
#define SPLIT_OPT_b (1<<1)
+#define SPLIT_OPT_a (1<<2)
int split_main(int argc, char **argv);
int split_main(int argc, char **argv)
{
char *pfx;
- char *count_p = NULL;
- char *sfx_len = NULL;
+ char *count_p;
+ char *sfx_len;
unsigned cnt = 1000;
char *input_file;
@@ -51,9 +62,9 @@ int split_main(int argc, char **argv)
getopt32(argc, argv, "l:b:a:", &count_p, &count_p, &sfx_len);
argv += optind;
- if (count_p)
+ if (option_mask32 & (SPLIT_OPT_l|SPLIT_OPT_b))
cnt = xatoi(count_p);
- if (sfx_len)
+ if (option_mask32 & SPLIT_OPT_a)
suffix_len = xatoul(sfx_len);
if (!*argv)