X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=miscutils%2Fman.c;h=ba6bb4c01f6df7a2570a37fbab53594cd3e63921;hb=4c9455f967e21d30db0de2e13b6e1115ab8f36ce;hp=01382c4d7197ab4b9db84f793c3991a3b33e925f;hpb=a92a74961d838209f3468d10426bc945ba26070c;p=oweals%2Fbusybox.git diff --git a/miscutils/man.c b/miscutils/man.c index 01382c4d7..ba6bb4c01 100644 --- a/miscutils/man.c +++ b/miscutils/man.c @@ -2,6 +2,15 @@ * Copyright (C) 2008 Denys Vlasenko * Licensed under GPLv2, see file LICENSE in this source tree. */ +//config:config MAN +//config: bool "man (27 kb)" +//config: default y +//config: help +//config: Format and display manual pages. + +//applet:IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP)) + +//kbuild:lib-$(CONFIG_MAN) += man.o //usage:#define man_trivial_usage //usage: "[-aw] [MANPAGE]..." @@ -9,6 +18,8 @@ //usage: "Format and display manual page\n" //usage: "\n -a Display all pages" //usage: "\n -w Show page locations" +//usage: "\n" +//usage: "\n$COLUMNS overrides output width" #include "libbb.h" #include "common_bufsiz.h" @@ -28,6 +39,8 @@ echo ".\\\"" echo ".pl \n(nlu+10" ) | gtbl | nroff -Tlatin1 -mandoc | less +Some systems use -Tascii. + On another system I see this: ... | tbl | nroff -mandoc -rLL=n -rLT=n -Tutf8 | less @@ -53,8 +66,8 @@ struct globals { setup_common_bufsiz(); \ G.col = "col"; \ G.tbl = "tbl"; \ - /* replaced -Tlatin1 with -Tascii for non-UTF8 displays */; \ - G.nroff = "nroff -mandoc -Tascii"; \ + /* Removed -Tlatin1. Assuming system nroff has suitable default */ \ + G.nroff = "nroff -mandoc"; \ G.pager = ENABLE_LESS ? "less" : "more"; \ } while (0) @@ -132,15 +145,12 @@ static int run_pipe(char *man_filename, int man, int level) close(STDIN_FILENO); open_zipped(man_filename, /*fail_if_not_compressed:*/ 0); /* guaranteed to use fd 0 (STDIN_FILENO) */ if (man) { - /* "man man" formats to screen width. - * "man man >file" formats to default 80 columns. - * "man man | cat" formats to default 80 columns. - */ - int w = get_terminal_width(STDOUT_FILENO); + int w = get_terminal_width(-1); if (w > 10) w -= 2; /* "2>&1" is added so that nroff errors are shown in pager too. - * Otherwise it may show just empty screen */ + * Otherwise it may show just empty screen. + */ cmd = xasprintf("%s | %s -rLL=%un -rLT=%un 2>&1 | %s", G.tbl, G.nroff, w, w, G.pager); @@ -243,8 +253,7 @@ int man_main(int argc UNUSED_PARAM, char **argv) INIT_G(); - opt_complementary = "-1"; /* at least one argument */ - opt = getopt32(argv, "+aw"); + opt = getopt32(argv, "^+" "aw" "\0" "-1"/*at least one arg*/); argv += optind; sec_list = xstrdup("0p:1:1p:2:3:3p:4:5:6:7:8:9");