script: make -t[FILE] compatible with util-linux
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 7 Aug 2017 00:12:36 +0000 (02:12 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 7 Aug 2017 00:12:36 +0000 (02:12 +0200)
function                                             old     new   delta
script_main                                         1056    1102     +46
packed_usage                                       31736   31765     +29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 75/0)               Total: 75 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/sed.c
util-linux/script.c

index bec20040a91242c923544a8b22791f44897b452d..22580cf71e2fa564827972a9a418c59dc9920117 100644 (file)
@@ -68,8 +68,8 @@
 //applet:IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
 
 //usage:#define sed_trivial_usage
-//usage:       "[-inrE] [-f FILE]... [-e CMD]... [FILE]...\n"
-//usage:       "or: sed [-inrE] CMD [FILE]..."
+//usage:       "[-i[SFX]] [-nrE] [-f FILE]... [-e CMD]... [FILE]...\n"
+//usage:       "or: sed [-i[SFX]] [-nrE] CMD [FILE]..."
 //usage:#define sed_full_usage "\n\n"
 //usage:       "       -e CMD  Add CMD to sed commands to be executed"
 //usage:     "\n       -f FILE Add FILE contents to sed commands to be executed"
index 6e80943128e3c9300572fcfdcc35a79d49e04679..62a2417624e4682e3bd96915c36f33963acb8bf6 100644 (file)
 //kbuild:lib-$(CONFIG_SCRIPT) += script.o
 
 //usage:#define script_trivial_usage
-//usage:       "[-afqt] [-c PROG] [OUTFILE]"
+//usage:       "[-afq] [-t[FILE]] [-c PROG] [OUTFILE]"
 //usage:#define script_full_usage "\n\n"
-//usage:       "       -a      Append output"
+//usage:       "Default OUTFILE is 'typescript'"
+//usage:     "\n"
+//usage:     "\n       -a      Append output"
 //usage:     "\n       -c PROG Run PROG, not shell"
 //usage:     "\n       -f      Flush output after each write"
 //usage:     "\n       -q      Quiet"
-//usage:     "\n       -t      Send timing to stderr"
+//usage:     "\n       -t[FILE] Send timing to stderr or FILE"
 
 //util-linux-2.28:
-//-t[FILE]
 //-e: return exit code of the child
 
 //FYI (reported as bbox bug #2749):
@@ -54,6 +55,8 @@ int script_main(int argc UNUSED_PARAM, char **argv)
        char pty_line[GETPTY_BUFSIZE];
        struct termios tt, rtt;
        struct winsize win;
+       FILE *timing_fp;
+       const char *str_t = NULL;
        const char *fname = "typescript";
        const char *shell;
        char shell_opt[] = "-i";
@@ -72,14 +75,14 @@ int script_main(int argc UNUSED_PARAM, char **argv)
                "command\0" Required_argument "c"
                "flush\0"   No_argument       "f"
                "quiet\0"   No_argument       "q"
-               "timing\0"  No_argument       "t"
+               "timing\0"  Optional_argument "t"
                ;
 
        applet_long_options = getopt_longopts;
 #endif
 
        opt_complementary = "?1"; /* max one arg */
-       opt = getopt32(argv, "ac:fqt", &shell_arg);
+       opt = getopt32(argv, "ac:fqt::", &shell_arg, &str_t);
        //argc -= optind;
        argv += optind;
        if (argv[0]) {
@@ -95,6 +98,10 @@ int script_main(int argc UNUSED_PARAM, char **argv)
        if (!(opt & OPT_q)) {
                printf("Script started, file is %s\n", fname);
        }
+       timing_fp = stderr;
+       if (str_t) {
+               timing_fp = xfopen_for_write(str_t);
+       }
 
        shell = get_shell_name();
 
@@ -130,6 +137,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
                int outfd, count, loop;
                double oldtime = time(NULL);
                smallint fd_count = 2;
+
 #define buf bb_common_bufsiz1
                setup_common_bufsiz();
 
@@ -165,7 +173,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 
                                                gettimeofday(&tv, NULL);
                                                newtime = tv.tv_sec + (double) tv.tv_usec / 1000000;
-                                               fprintf(stderr, "%f %u\n", newtime - oldtime, count);
+                                               fprintf(timing_fp, "%f %u\n", newtime - oldtime, count);
                                                oldtime = newtime;
                                        }
                                        full_write(STDOUT_FILENO, buf, count);