summaryrefslogtreecommitdiffstats
path: root/bin/echo
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2002-11-13 01:39:02 +0000
committernjl <njl@FreeBSD.org>2002-11-13 01:39:02 +0000
commit1b2607e007a72565a69bf4c37a8b8cfe5f8f1152 (patch)
tree2748e2342bcd52cb0e42a1b49b56f45b5d1042d1 /bin/echo
parent04df5327c4a7ba3573d27fcc0357649be5dcda75 (diff)
downloadFreeBSD-src-1b2607e007a72565a69bf4c37a8b8cfe5f8f1152.zip
FreeBSD-src-1b2607e007a72565a69bf4c37a8b8cfe5f8f1152.tar.gz
Put echo on a diet, removing unnecessary use of stdio and getopt.
Before... -r-xr-xr-x 1 root wheel 58636 Oct 28 05:16 /bin/echo After... -rwxr-xr-x 1 root wheel 12824 Nov 12 17:39 /usr/obj/usr/src/bin/echo/echo Submitted by: Tim Kientzle <kientzle@acm.org>
Diffstat (limited to 'bin/echo')
-rw-r--r--bin/echo/echo.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/bin/echo/echo.c b/bin/echo/echo.c
index 6a7a2b1..b4aeb62 100644
--- a/bin/echo/echo.c
+++ b/bin/echo/echo.c
@@ -45,8 +45,7 @@ static char sccsid[] = "@(#)echo.c 8.1 (Berkeley) 5/31/93";
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include <stdio.h>
-#include <stdlib.h>
+#include <unistd.h>
#include <string.h>
/* ARGSUSED */
@@ -64,6 +63,9 @@ main(int argc __unused, char *argv[])
nflag = 0;
while (argv[0] != NULL) {
+ size_t len;
+
+ len = strlen(argv[0]);
/*
* If the next argument is NULL then this is this
@@ -71,23 +73,20 @@ main(int argc __unused, char *argv[])
* for a trailing \c.
*/
if (argv[1] == NULL) {
- size_t len;
-
- len = strlen(argv[0]);
/* is there room for a '\c' and is there one? */
if (len >= 2 &&
argv[0][len - 2] == '\\' &&
argv[0][len - 1] == 'c') {
/* chop it and set the no-newline flag. */
- argv[0][len - 2] = '\0';
+ len -= 2;
nflag = 1;
}
}
- (void)printf("%s", argv[0]);
+ write(STDOUT_FILENO, argv[0], len);
if (*++argv)
- putchar(' ');
+ write(STDOUT_FILENO, " ", 1);
}
if (!nflag)
- putchar('\n');
+ write(STDOUT_FILENO, "\n", 1);
return 0;
}
OpenPOWER on IntegriCloud