summaryrefslogtreecommitdiffhomepage
path: root/coreutils
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-12-21 13:23:14 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-12-21 13:23:14 +0000
commitbf66fbc8e2380717c1fab860cfc60c78582839dd (patch)
tree3ab3dd4df901851ff7f4345708592118766ba4aa /coreutils
parent6910741067913d131d931b1e6424d3b8ed43e64f (diff)
introduce LONE_CHAR (optimized strcmp with one-char string)
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/Kbuild3
-rw-r--r--coreutils/cat.c22
-rw-r--r--coreutils/diff.c2
-rw-r--r--coreutils/echo.c4
-rw-r--r--coreutils/expr.c2
-rw-r--r--coreutils/test.c10
6 files changed, 26 insertions, 17 deletions
diff --git a/coreutils/Kbuild b/coreutils/Kbuild
index cfb508d81..55f19b4ca 100644
--- a/coreutils/Kbuild
+++ b/coreutils/Kbuild
@@ -10,6 +10,7 @@ lib-y:=
lib-$(CONFIG_BASENAME) += basename.o
lib-$(CONFIG_CAL) += cal.o
lib-$(CONFIG_CAT) += cat.o
+lib-$(CONFIG_LESS) += cat.o # less uses it if stdout isn't a tty
lib-$(CONFIG_CATV) += catv.o
lib-$(CONFIG_CHGRP) += chgrp.o chown.o
lib-$(CONFIG_CHMOD) += chmod.o
@@ -28,6 +29,7 @@ lib-$(CONFIG_DIRNAME) += dirname.o
lib-$(CONFIG_DOS2UNIX) += dos2unix.o
lib-$(CONFIG_DU) += du.o
lib-$(CONFIG_ECHO) += echo.o
+lib-$(CONFIG_ASH) += echo.o # used by ash
lib-$(CONFIG_ENV) += env.o
lib-$(CONFIG_EXPR) += expr.o
lib-$(CONFIG_FALSE) += false.o
@@ -65,6 +67,7 @@ lib-$(CONFIG_SYNC) += sync.o
lib-$(CONFIG_TAIL) += tail.o
lib-$(CONFIG_TEE) += tee.o
lib-$(CONFIG_TEST) += test.o
+lib-$(CONFIG_ASH) += test.o # used by ash
lib-$(CONFIG_TOUCH) += touch.o
lib-$(CONFIG_TR) += tr.o
lib-$(CONFIG_TRUE) += true.o
diff --git a/coreutils/cat.c b/coreutils/cat.c
index a95980552..db4d33dc5 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -11,20 +11,12 @@
/* http://www.opengroup.org/onlinepubs/007904975/utilities/cat.html */
#include "busybox.h"
-#include <unistd.h>
-int cat_main(int argc, char **argv)
+int bb_cat(char **argv)
{
FILE *f;
int retval = EXIT_SUCCESS;
- getopt32(argc, argv, "u");
-
- argv += optind;
- if (!*argv) {
- *--argv = "-";
- }
-
do {
f = fopen_or_warn_stdin(*argv);
if (f) {
@@ -39,3 +31,15 @@ int cat_main(int argc, char **argv)
return retval;
}
+
+int cat_main(int argc, char **argv)
+{
+ getopt32(argc, argv, "u");
+
+ argv += optind;
+ if (!*argv) {
+ *--argv = "-";
+ }
+
+ return bb_cat(argv);
+}
diff --git a/coreutils/diff.c b/coreutils/diff.c
index 887679a0a..a49d5195a 100644
--- a/coreutils/diff.c
+++ b/coreutils/diff.c
@@ -1079,7 +1079,7 @@ static char **get_dir(char *path)
dp = warn_opendir(path);
while ((ep = readdir(dp))) {
- if ((!strcmp(ep->d_name, "..")) || (!strcmp(ep->d_name, ".")))
+ if (!strcmp(ep->d_name, "..") || LONE_CHAR(ep->d_name, '.'))
continue;
add_to_dirlist(ep->d_name, NULL, NULL, 0);
}
diff --git a/coreutils/echo.c b/coreutils/echo.c
index 99063ae52..0c8eac3bc 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -29,7 +29,7 @@
#include <stdlib.h>
#include "busybox.h"
-int bb_echo(int ATTRIBUTE_UNUSED argc, char **argv)
+int bb_echo(char **argv)
{
#ifndef CONFIG_FEATURE_FANCY_ECHO
#define eflag '\\'
@@ -114,7 +114,7 @@ just_echo:
int echo_main(int argc, char** argv)
{
- (void)bb_echo(argc, argv);
+ (void)bb_echo(argv);
fflush_stdout_and_exit(EXIT_SUCCESS);
}
diff --git a/coreutils/expr.c b/coreutils/expr.c
index 191473446..51e553dc6 100644
--- a/coreutils/expr.c
+++ b/coreutils/expr.c
@@ -136,7 +136,7 @@ static int null(VALUE * v)
if (v->type == integer)
return v->u.i == 0;
else /* string: */
- return v->u.s[0] == '\0' || strcmp(v->u.s, "0") == 0;
+ return v->u.s[0] == '\0' || LONE_CHAR(v->u.s, '0');
}
/* Coerce V to a string value (can't fail). */
diff --git a/coreutils/test.c b/coreutils/test.c
index ebb4f9086..d3d760467 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -175,14 +175,16 @@ int bb_test(int argc, char **argv)
{
int res;
- if (strcmp(argv[0], "[") == 0) {
- if (strcmp(argv[--argc], "]")) {
+ if (LONE_CHAR(argv[0], '[')) {
+ --argc;
+ if (NOT_LONE_CHAR(argv[argc], ']')) {
bb_error_msg("missing ]");
return 2;
}
argv[argc] = NULL;
} else if (strcmp(argv[0], "[[") == 0) {
- if (strcmp(argv[--argc], "]]")) {
+ --argc;
+ if (strcmp(argv[argc], "]]")) {
bb_error_msg("missing ]]");
return 2;
}
@@ -578,6 +580,6 @@ static int is_a_group_member(gid_t gid)
int test_main(int argc, char **argv)
{
- exit(bb_test(argc, argv));
+ return bb_test(argc, argv);
}