fix errors found with make_single_applets.sh
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 12 Apr 2017 13:48:19 +0000 (15:48 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 12 Apr 2017 13:48:19 +0000 (15:48 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/cat.c
coreutils/who.c
include/libbb.h
libbb/bb_cat.c [new file with mode: 0644]
libbb/print_numbered_lines.c [new file with mode: 0644]
procps/kill.c

index 4169d9516e63e1d282cf57865d727d41b3d6b6e2..96970b19d5e1d51fbc6f3a01ce6bdd22663eefc9 100644 (file)
@@ -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 */
 
 /* 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)
 {
index ec9d2515900e29ae4154266550fc04b2d410faca..4adead77e260dff51cf10b6f1c0c73731f171b0e 100644 (file)
 
 //                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'.  */
 
index 04071639af85a71725f7447bc56b79eeaf0332b4..2c30bde6fac2c59d7aded41e85cf56a34bb36e35 100644 (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);
diff --git a/libbb/bb_cat.c b/libbb/bb_cat.c
new file mode 100644 (file)
index 0000000..0a4a350
--- /dev/null
@@ -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;
+}
diff --git a/libbb/print_numbered_lines.c b/libbb/print_numbered_lines.c
new file mode 100644 (file)
index 0000000..702aed1
--- /dev/null
@@ -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);
+}
index 7ae5beead2589984a0207adfeb0407b62a3de76e..975a3e8c54c05ad335ba757cc69e55021670f061 100644 (file)
@@ -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