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
This commit is contained in:
Denis Vlasenko 2008-03-29 16:00:52 +00:00
parent cae11b51aa
commit 02f12f53e8

View File

@ -1413,6 +1413,10 @@ int inetd_main(int argc ATTRIBUTE_UNUSED, char **argv)
} /* for (;;) */ } /* for (;;) */
} }
#if !BB_MMU
static const char *const cat_args[] = { "cat", NULL };
#endif
/* /*
* Internet services provided internally by inetd: * Internet services provided internally by inetd:
*/ */
@ -1430,13 +1434,13 @@ static void echo_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED)
} }
#else #else
/* We are after vfork here! */ /* We are after vfork here! */
static const char *const args[] = { "cat", NULL }; /* move network socket to stdin/stdout */
/* move network socket to stdin */
xmove_fd(s, STDIN_FILENO); xmove_fd(s, STDIN_FILENO);
xdup2(STDIN_FILENO, STDOUT_FILENO); xdup2(STDIN_FILENO, STDOUT_FILENO);
/* no error messages please... */ /* no error messages please... */
xmove_fd(xopen("/dev/null", O_WRONLY), STDERR_FILENO); close(STDERR_FILENO);
BB_EXECVP("cat", (char**)args); xopen("/dev/null", O_WRONLY);
BB_EXECVP("cat", (char**)cat_args);
/* on failure we return to main, which does exit(1) */ /* on failure we return to main, which does exit(1) */
#endif #endif
} }
@ -1467,13 +1471,14 @@ static void discard_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED)
continue; continue;
#else #else
/* We are after vfork here! */ /* We are after vfork here! */
static const char *const args[] = { "dd", "of=/dev/null", NULL };
/* move network socket to stdin */ /* move network socket to stdin */
xmove_fd(s, STDIN_FILENO); xmove_fd(s, STDIN_FILENO);
xdup2(STDIN_FILENO, STDOUT_FILENO); /* discard output */
/* no error messages */ close(STDOUT_FILENO);
xmove_fd(xopen("/dev/null", O_WRONLY), STDERR_FILENO); xopen("/dev/null", O_WRONLY);
BB_EXECVP("dd", (char**)args); /* 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) */ /* on failure we return to main, which does exit(1) */
#endif #endif
} }