mirror of https://github.com/mirror/busybox.git
sleep: fix "sleep -- ARGS"
function old new delta sleep_main 116 119 +3 printf_main 860 837 -23 single_argv 50 25 -25 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 3/-48) Total: -45 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>master
parent
2cc9d436e8
commit
791b222dd5
|
@ -425,9 +425,9 @@ int printf_main(int argc UNUSED_PARAM, char **argv)
|
||||||
/* bash builtin errors out on "printf '-%s-\n' foo",
|
/* bash builtin errors out on "printf '-%s-\n' foo",
|
||||||
* coreutils-6.9 works. Both work with "printf -- '-%s-\n' foo".
|
* coreutils-6.9 works. Both work with "printf -- '-%s-\n' foo".
|
||||||
* We will mimic coreutils. */
|
* We will mimic coreutils. */
|
||||||
if (argv[1] && argv[1][0] == '-' && argv[1][1] == '-' && !argv[1][2])
|
argv = skip_dash_dash(argv);
|
||||||
argv++;
|
|
||||||
if (!argv[1]) {
|
if (!argv[0]) {
|
||||||
if ((ENABLE_ASH_PRINTF || ENABLE_HUSH_PRINTF)
|
if ((ENABLE_ASH_PRINTF || ENABLE_HUSH_PRINTF)
|
||||||
&& applet_name[0] != 'p'
|
&& applet_name[0] != 'p'
|
||||||
) {
|
) {
|
||||||
|
@ -437,8 +437,8 @@ int printf_main(int argc UNUSED_PARAM, char **argv)
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
format = argv[1];
|
format = argv[0];
|
||||||
argv2 = argv + 2;
|
argv2 = argv + 1;
|
||||||
|
|
||||||
conv_err = 0;
|
conv_err = 0;
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -71,8 +71,8 @@ int sleep_main(int argc UNUSED_PARAM, char **argv)
|
||||||
* + we can't use bb_show_usage
|
* + we can't use bb_show_usage
|
||||||
* + applet_name can be the name of the shell
|
* + applet_name can be the name of the shell
|
||||||
*/
|
*/
|
||||||
++argv;
|
argv = skip_dash_dash(argv);
|
||||||
if (!*argv) {
|
if (!argv[0]) {
|
||||||
/* Without this, bare "sleep" in ash shows _ash_ --help */
|
/* Without this, bare "sleep" in ash shows _ash_ --help */
|
||||||
/* (ash can be the "sh" applet as well, so check 2nd char) */
|
/* (ash can be the "sh" applet as well, so check 2nd char) */
|
||||||
if (ENABLE_ASH_SLEEP && applet_name[1] != 'l') {
|
if (ENABLE_ASH_SLEEP && applet_name[1] != 'l') {
|
||||||
|
|
|
@ -1344,6 +1344,7 @@ int sanitize_env_if_suid(void) FAST_FUNC;
|
||||||
/* For top, ps. Some argv[i] are replaced by malloced "-opt" strings */
|
/* For top, ps. Some argv[i] are replaced by malloced "-opt" strings */
|
||||||
void make_all_argv_opts(char **argv) FAST_FUNC;
|
void make_all_argv_opts(char **argv) FAST_FUNC;
|
||||||
char* single_argv(char **argv) FAST_FUNC;
|
char* single_argv(char **argv) FAST_FUNC;
|
||||||
|
char **skip_dash_dash(char **argv) FAST_FUNC;
|
||||||
extern const char *const bb_argv_dash[]; /* { "-", NULL } */
|
extern const char *const bb_argv_dash[]; /* { "-", NULL } */
|
||||||
extern uint32_t option_mask32;
|
extern uint32_t option_mask32;
|
||||||
uint32_t getopt32(char **argv, const char *applet_opts, ...) FAST_FUNC;
|
uint32_t getopt32(char **argv, const char *applet_opts, ...) FAST_FUNC;
|
||||||
|
|
|
@ -8,11 +8,18 @@
|
||||||
*/
|
*/
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
|
char** FAST_FUNC skip_dash_dash(char **argv)
|
||||||
|
{
|
||||||
|
argv++;
|
||||||
|
if (argv[0] && argv[0][0] == '-' && argv[0][1] == '-' && argv[0][2] == '\0')
|
||||||
|
argv++;
|
||||||
|
return argv;
|
||||||
|
}
|
||||||
|
|
||||||
char* FAST_FUNC single_argv(char **argv)
|
char* FAST_FUNC single_argv(char **argv)
|
||||||
{
|
{
|
||||||
if (argv[1] && strcmp(argv[1], "--") == 0)
|
argv = skip_dash_dash(argv);
|
||||||
argv++;
|
if (!argv[0] || argv[1])
|
||||||
if (!argv[1] || argv[2])
|
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
return argv[1];
|
return argv[0];
|
||||||
}
|
}
|
||||||
|
|
|
@ -10883,14 +10883,6 @@ static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char **skip_dash_dash(char **argv)
|
|
||||||
{
|
|
||||||
argv++;
|
|
||||||
if (argv[0] && argv[0][0] == '-' && argv[0][1] == '-' && argv[0][2] == '\0')
|
|
||||||
argv++;
|
|
||||||
return argv;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int FAST_FUNC builtin_cd(char **argv)
|
static int FAST_FUNC builtin_cd(char **argv)
|
||||||
{
|
{
|
||||||
const char *newdir;
|
const char *newdir;
|
||||||
|
|
Loading…
Reference in New Issue