diff options
author | Denis Vlasenko | 2008-03-29 16:00:52 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-03-29 16:00:52 +0000 |
commit | 02f12f53e8d7fa92dbf4e7c9c5cb011e7922d74c (patch) | |
tree | df7f4f0839821ecf947cc9a268086de2a26811cc /networking/inetd.c | |
parent | cae11b51aac9f52d35f2446a26acafbe7be8e9bd (diff) | |
download | busybox-02f12f53e8d7fa92dbf4e7c9c5cb011e7922d74c.zip busybox-02f12f53e8d7fa92dbf4e7c9c5cb011e7922d74c.tar.gz |
inetd: small shrink for NOMMU case
function old new delta
cat_args - 8 +8
echo_stream 64 63 -1
discard_stream 64 63 -1
static.args 32 12 -20
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/3 up/down: 8/-22) Total: -14 bytes
Diffstat (limited to 'networking/inetd.c')
-rw-r--r-- | networking/inetd.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/networking/inetd.c b/networking/inetd.c index eb19d16..d71a115 100644 --- a/networking/inetd.c +++ b/networking/inetd.c @@ -1413,6 +1413,10 @@ int inetd_main(int argc ATTRIBUTE_UNUSED, char **argv) } /* for (;;) */ } +#if !BB_MMU +static const char *const cat_args[] = { "cat", NULL }; +#endif + /* * Internet services provided internally by inetd: */ @@ -1430,13 +1434,13 @@ static void echo_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED) } #else /* We are after vfork here! */ - static const char *const args[] = { "cat", NULL }; - /* move network socket to stdin */ + /* move network socket to stdin/stdout */ xmove_fd(s, STDIN_FILENO); xdup2(STDIN_FILENO, STDOUT_FILENO); /* no error messages please... */ - xmove_fd(xopen("/dev/null", O_WRONLY), STDERR_FILENO); - BB_EXECVP("cat", (char**)args); + close(STDERR_FILENO); + xopen("/dev/null", O_WRONLY); + BB_EXECVP("cat", (char**)cat_args); /* on failure we return to main, which does exit(1) */ #endif } @@ -1467,13 +1471,14 @@ static void discard_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED) continue; #else /* We are after vfork here! */ - static const char *const args[] = { "dd", "of=/dev/null", NULL }; /* move network socket to stdin */ xmove_fd(s, STDIN_FILENO); - xdup2(STDIN_FILENO, STDOUT_FILENO); - /* no error messages */ - xmove_fd(xopen("/dev/null", O_WRONLY), STDERR_FILENO); - BB_EXECVP("dd", (char**)args); + /* discard output */ + close(STDOUT_FILENO); + xopen("/dev/null", O_WRONLY); + /* no error messages please... */ + xdup2(STDOUT_FILENO, STDERR_FILENO); + BB_EXECVP("cat", (char**)cat_args); /* on failure we return to main, which does exit(1) */ #endif } |