aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-07-13 23:49:45 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2013-07-13 23:49:45 +0200
commitc72b43c2f07e5fae288fff9e220b1f88e2889a72 (patch)
tree4577ff27d4aefdb610b3e26fbf13651f8a01c81d
parent0dacb68e1a660b235f9098abd33577be2e147c67 (diff)
downloadbusybox-c72b43c2f07e5fae288fff9e220b1f88e2889a72.tar.gz
Commonalize typical [b,]k,m suffix struct
function old new delta bkm_suffixes - 32 +32 static.km_suffixes 24 - -24 suffixes 32 - -32 static.bkm 32 - -32 head_tail_suffixes 32 - -32 ------------------------------------------------------------------------------ (add/remove: 2/6 grow/shrink: 0/0 up/down: 72/-160) Total: -88 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--TODO5
-rw-r--r--coreutils/head.c4
-rw-r--r--coreutils/head_tail.c14
-rw-r--r--coreutils/head_tail.h6
-rw-r--r--coreutils/od_bloaty.c12
-rw-r--r--coreutils/split.c11
-rw-r--r--coreutils/tail.c4
-rw-r--r--include/libbb.h3
-rw-r--r--libbb/xatonum.c7
-rw-r--r--runit/svlogd.c5
-rw-r--r--util-linux/hexdump.c9
11 files changed, 22 insertions, 58 deletions
diff --git a/TODO b/TODO
index 44364690f..b66a1c1cb 100644
--- a/TODO
+++ b/TODO
@@ -132,11 +132,6 @@ stty / catv
stty's visible() function and catv's guts are identical. Merge them into
an appropriate libbb function.
---
-struct suffix_mult
- Several duplicate users of: grep -r "1024\*1024" * -B2 -A1
- Merge to a single size_suffixes[] in libbb.
- Users: head tail od_bloaty hexdump and (partially as it wouldn't hurt) svlogd
----
tail
./busybox tail -f foo.c~ TODO
should not print fmt=header_fmt for subsequent date >> TODO; i.e. only
diff --git a/coreutils/head.c b/coreutils/head.c
index 291e1ce37..9388b026a 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -12,7 +12,6 @@
/* http://www.opengroup.org/onlinepubs/007904975/utilities/head.html */
//kbuild:lib-$(CONFIG_HEAD) += head.o
-//kbuild:lib-$(CONFIG_HEAD) += head_tail.o
//usage:#define head_trivial_usage
//usage: "[OPTIONS] [FILE]..."
@@ -35,7 +34,6 @@
//usage: "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
#include "libbb.h"
-#include "head_tail.h"
/* This is a NOEXEC applet. Be very careful! */
@@ -140,7 +138,7 @@ eat_num(bool *negative_N, const char *p)
p++;
}
#endif
- return xatoul_sfx(p, head_tail_suffixes);
+ return xatoul_sfx(p, bkm_suffixes);
}
static const char head_opts[] ALIGN1 =
diff --git a/coreutils/head_tail.c b/coreutils/head_tail.c
deleted file mode 100644
index 1658c0d1b..000000000
--- a/coreutils/head_tail.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (C) 2013 Denys Vlasenko
- *
- * Licensed under GPLv2, see file LICENSE in this source tree.
- */
-#include "libbb.h"
-#include "head_tail.h"
-
-const struct suffix_mult head_tail_suffixes[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
-};
diff --git a/coreutils/head_tail.h b/coreutils/head_tail.h
deleted file mode 100644
index df19e41e0..000000000
--- a/coreutils/head_tail.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * Copyright (C) 2013 Denys Vlasenko
- *
- * Licensed under GPLv2, see file LICENSE in this source tree.
- */
-extern const struct suffix_mult head_tail_suffixes[];
diff --git a/coreutils/od_bloaty.c b/coreutils/od_bloaty.c
index b408a8477..2c26dda16 100644
--- a/coreutils/od_bloaty.c
+++ b/coreutils/od_bloaty.c
@@ -1166,12 +1166,6 @@ parse_old_offset(const char *s, off_t *offset)
int od_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int od_main(int argc UNUSED_PARAM, char **argv)
{
- static const struct suffix_mult bkm[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
- };
#if ENABLE_LONG_OPTS
static const char od_longopts[] ALIGN1 =
"skip-bytes\0" Required_argument "j"
@@ -1230,7 +1224,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
address_pad_len_char = doxn_address_pad_len_char[pos];
}
if (opt & OPT_N) {
- max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm);
+ max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm_suffixes);
}
if (opt & OPT_a) decode_format_string("a");
if (opt & OPT_b) decode_format_string("oC");
@@ -1239,7 +1233,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
if (opt & OPT_f) decode_format_string("fF");
if (opt & OPT_h) decode_format_string("x2");
if (opt & OPT_i) decode_format_string("d2");
- if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm);
+ if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm_suffixes);
if (opt & OPT_l) decode_format_string("d4");
if (opt & OPT_o) decode_format_string("o2");
while (lst_t) {
@@ -1248,7 +1242,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
if (opt & OPT_x) decode_format_string("x2");
if (opt & OPT_s) decode_format_string("d2");
if (opt & OPT_S) {
- string_min = xstrtou_sfx(str_S, 0, bkm);
+ string_min = xstrtou_sfx(str_S, 0, bkm_suffixes);
}
// Bloat:
diff --git a/coreutils/split.c b/coreutils/split.c
index 11e640442..1e1673efb 100644
--- a/coreutils/split.c
+++ b/coreutils/split.c
@@ -23,17 +23,15 @@
#include "libbb.h"
-static const struct suffix_mult split_suffices[] = {
#if ENABLE_FEATURE_SPLIT_FANCY
+static const struct suffix_mult split_suffixes[] = {
{ "b", 512 },
-#endif
{ "k", 1024 },
{ "m", 1024*1024 },
-#if ENABLE_FEATURE_SPLIT_FANCY
{ "g", 1024*1024*1024 },
-#endif
{ "", 0 }
};
+#endif
/* Increment the suffix part of the filename.
* Returns NULL if we are out of filenames.
@@ -86,7 +84,10 @@ int split_main(int argc UNUSED_PARAM, char **argv)
if (opt & SPLIT_OPT_l)
cnt = XATOOFF(count_p);
if (opt & SPLIT_OPT_b) // FIXME: also needs XATOOFF
- cnt = xatoull_sfx(count_p, split_suffices);
+ cnt = xatoull_sfx(count_p,
+ IF_FEATURE_SPLIT_FANCY(split_suffixes)
+ IF_NOT_FEATURE_SPLIT_FANCY(km_suffixes)
+ );
sfx = "x";
argv += optind;
diff --git a/coreutils/tail.c b/coreutils/tail.c
index c9f9d00f6..07c71ca4b 100644
--- a/coreutils/tail.c
+++ b/coreutils/tail.c
@@ -25,7 +25,6 @@
*/
//kbuild:lib-$(CONFIG_TAIL) += tail.o
-//kbuild:lib-$(CONFIG_TAIL) += head_tail.o
//usage:#define tail_trivial_usage
//usage: "[OPTIONS] [FILE]..."
@@ -51,7 +50,6 @@
//usage: "nameserver 10.0.0.1\n"
#include "libbb.h"
-#include "head_tail.h"
struct globals {
bool from_top;
@@ -89,7 +87,7 @@ static unsigned eat_num(const char *p)
p++;
G.from_top = 1;
}
- return xatou_sfx(p, head_tail_suffixes);
+ return xatou_sfx(p, bkm_suffixes);
}
int tail_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
diff --git a/include/libbb.h b/include/libbb.h
index 085210431..f22c1252b 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -832,6 +832,9 @@ struct suffix_mult {
char suffix[4];
unsigned mult;
};
+extern const struct suffix_mult bkm_suffixes[];
+#define km_suffixes (bkm_suffixes + 1)
+
#include "xatonum.h"
/* Specialized: */
diff --git a/libbb/xatonum.c b/libbb/xatonum.c
index 62bbe53e7..6f4e023bb 100644
--- a/libbb/xatonum.c
+++ b/libbb/xatonum.c
@@ -68,3 +68,10 @@ uint16_t FAST_FUNC xatou16(const char *numstr)
{
return xatou_range(numstr, 0, 0xffff);
}
+
+const struct suffix_mult bkm_suffixes[] = {
+ { "b", 512 },
+ { "k", 1024 },
+ { "m", 1024*1024 },
+ { "", 0 }
+};
diff --git a/runit/svlogd.c b/runit/svlogd.c
index b7a0a6e71..8b8a6d858 100644
--- a/runit/svlogd.c
+++ b/runit/svlogd.c
@@ -745,11 +745,6 @@ static NOINLINE unsigned logdir_open(struct logdir *ld, const char *fn)
ld->inst = new;
break;
case 's': {
- static const struct suffix_mult km_suffixes[] = {
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
- };
ld->sizemax = xatou_sfx(&s[1], km_suffixes);
break;
}
diff --git a/util-linux/hexdump.c b/util-linux/hexdump.c
index 4d998b916..ac7e24ff8 100644
--- a/util-linux/hexdump.c
+++ b/util-linux/hexdump.c
@@ -66,13 +66,6 @@ static const char add_first[] ALIGN1 = "\"%07.7_Ax\n\"";
static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:v" IF_FEATURE_HEXDUMP_REVERSE("R");
-static const struct suffix_mult suffixes[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
-};
-
int hexdump_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int hexdump_main(int argc, char **argv)
{
@@ -120,7 +113,7 @@ int hexdump_main(int argc, char **argv)
optarg,
/*base:*/ 0,
/*lo:*/ 0, /*hi:*/ OFF_T_MAX,
- suffixes
+ bkm_suffixes
);
} /* else */
if (ch == 'v') {