fix errors found with make_single_applets.sh
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
0cecbe7d5d
commit
d9eb40c185
@ -16,8 +16,6 @@
|
||||
//applet:IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
|
||||
|
||||
//kbuild:lib-$(CONFIG_CAT) += cat.o
|
||||
// For -n:
|
||||
//kbuild:lib-$(CONFIG_CAT) += nl.o
|
||||
|
||||
/* BB_AUDIT SUSv3 compliant */
|
||||
/* http://www.opengroup.org/onlinepubs/007904975/utilities/cat.html */
|
||||
@ -49,31 +47,6 @@
|
||||
|
||||
/* This is a NOFORK applet. Be very careful! */
|
||||
|
||||
|
||||
int bb_cat(char **argv)
|
||||
{
|
||||
int fd;
|
||||
int retval = EXIT_SUCCESS;
|
||||
|
||||
if (!*argv)
|
||||
argv = (char**) &bb_argv_dash;
|
||||
|
||||
do {
|
||||
fd = open_or_warn_stdin(*argv);
|
||||
if (fd >= 0) {
|
||||
/* This is not a xfunc - never exits */
|
||||
off_t r = bb_copyfd_eof(fd, STDOUT_FILENO);
|
||||
if (fd != STDIN_FILENO)
|
||||
close(fd);
|
||||
if (r >= 0)
|
||||
continue;
|
||||
}
|
||||
retval = EXIT_FAILURE;
|
||||
} while (*++argv);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int cat_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int cat_main(int argc UNUSED_PARAM, char **argv)
|
||||
{
|
||||
|
@ -40,11 +40,12 @@
|
||||
|
||||
// APPLET_ODDNAME:name main location suid_type help
|
||||
//applet:IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users))
|
||||
//applet:IF_USERS(APPLET_ODDNAME(w, who, BB_DIR_USR_BIN, BB_SUID_DROP, w))
|
||||
//applet:IF_W( APPLET_ODDNAME(w, who, BB_DIR_USR_BIN, BB_SUID_DROP, w))
|
||||
//applet:IF_WHO( APPLET( who, BB_DIR_USR_BIN, BB_SUID_DROP))
|
||||
|
||||
//kbuild:lib-$(CONFIG_USERS) += who.o
|
||||
//kbuild:lib-$(CONFIG_WHO) += who.o
|
||||
//kbuild:lib-$(CONFIG_W) += who.o
|
||||
//kbuild:lib-$(CONFIG_WHO) += who.o
|
||||
|
||||
/* BB_AUDIT SUSv3 _NOT_ compliant -- missing options -b, -d, -l, -m, -p, -q, -r, -s, -t, -T, -u; Missing argument 'file'. */
|
||||
|
||||
|
@ -1247,7 +1247,7 @@ extern void bb_logenv_override(void) FAST_FUNC;
|
||||
|
||||
|
||||
/* Applets which are useful from another applets */
|
||||
int bb_cat(char** argv);
|
||||
int bb_cat(char** argv) FAST_FUNC;
|
||||
/* If shell needs them, they exist even if not enabled as applets */
|
||||
int echo_main(int argc, char** argv) IF_ECHO(MAIN_EXTERNALLY_VISIBLE);
|
||||
int printf_main(int argc, char **argv) IF_PRINTF(MAIN_EXTERNALLY_VISIBLE);
|
||||
|
33
libbb/bb_cat.c
Normal file
33
libbb/bb_cat.c
Normal file
@ -0,0 +1,33 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org>
|
||||
*
|
||||
* Licensed under GPLv2, see file LICENSE in this source tree.
|
||||
*/
|
||||
//kbuild:lib-y += bb_cat.o
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
int FAST_FUNC bb_cat(char **argv)
|
||||
{
|
||||
int fd;
|
||||
int retval = EXIT_SUCCESS;
|
||||
|
||||
if (!*argv)
|
||||
argv = (char**) &bb_argv_dash;
|
||||
|
||||
do {
|
||||
fd = open_or_warn_stdin(*argv);
|
||||
if (fd >= 0) {
|
||||
/* This is not a xfunc - never exits */
|
||||
off_t r = bb_copyfd_eof(fd, STDOUT_FILENO);
|
||||
if (fd != STDIN_FILENO)
|
||||
close(fd);
|
||||
if (r >= 0)
|
||||
continue;
|
||||
}
|
||||
retval = EXIT_FAILURE;
|
||||
} while (*++argv);
|
||||
|
||||
return retval;
|
||||
}
|
29
libbb/print_numbered_lines.c
Normal file
29
libbb/print_numbered_lines.c
Normal file
@ -0,0 +1,29 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Copyright (C) 2017 Denys Vlasenko <vda.linux@googlemail.com>
|
||||
*
|
||||
* Licensed under GPLv2, see file LICENSE in this source tree.
|
||||
*/
|
||||
//kbuild:lib-y += print_numbered_lines.o
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
void FAST_FUNC print_numbered_lines(struct number_state *ns, const char *filename)
|
||||
{
|
||||
FILE *fp = fopen_or_warn_stdin(filename);
|
||||
unsigned N = ns->start;
|
||||
char *line;
|
||||
|
||||
while ((line = xmalloc_fgetline(fp)) != NULL) {
|
||||
if (ns->all
|
||||
|| (ns->nonempty && line[0])
|
||||
) {
|
||||
printf("%*u%s%s\n", ns->width, N, ns->sep, line);
|
||||
N += ns->inc;
|
||||
} else if (ns->empty_str)
|
||||
fputs(ns->empty_str, stdout);
|
||||
free(line);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
}
|
@ -201,7 +201,7 @@ int kill_main(int argc UNUSED_PARAM, char **argv)
|
||||
pid_t sid;
|
||||
procps_status_t* p = NULL;
|
||||
/* compat: exitcode 2 is "no one was signaled" */
|
||||
int ret = 2;
|
||||
errors = 2;
|
||||
|
||||
/* Find out our session id */
|
||||
sid = getsid(pid);
|
||||
@ -229,7 +229,7 @@ int kill_main(int argc UNUSED_PARAM, char **argv)
|
||||
arg = *args++;
|
||||
if (arg[0] != '-' || arg[1] != 'o') {
|
||||
bb_error_msg("bad option '%s'", arg);
|
||||
ret = 1;
|
||||
errors = 1;
|
||||
goto resume;
|
||||
}
|
||||
arg += 2;
|
||||
@ -238,21 +238,21 @@ int kill_main(int argc UNUSED_PARAM, char **argv)
|
||||
omit = bb_strtoi(arg, NULL, 10);
|
||||
if (errno) {
|
||||
bb_error_msg("invalid number '%s'", arg);
|
||||
ret = 1;
|
||||
errors = 1;
|
||||
goto resume;
|
||||
}
|
||||
if (p->pid == omit)
|
||||
goto dont_kill;
|
||||
}
|
||||
kill(p->pid, signo);
|
||||
ret = 0;
|
||||
errors = 0;
|
||||
dont_kill: ;
|
||||
}
|
||||
resume:
|
||||
/* And let them continue */
|
||||
if (signo != SIGSTOP && signo != SIGCONT)
|
||||
kill(-1, SIGCONT);
|
||||
return ret;
|
||||
return errors;
|
||||
}
|
||||
|
||||
#if ENABLE_KILL || ENABLE_KILLALL
|
||||
|
Loading…
Reference in New Issue
Block a user