Hi, The first patch tweaks the grammar of some loop-device error messages, removes an inconsistent period and ungettextizes an untranslatable string. Second patch does similar things for a bunch of other files, and adds the now standard angular brackets to non-literal arguments in command synopses. Third and fourth patch normalize formatting and grammar of the man pages for nsenter, unshare and column. Regards, Benno -- http://www.fastmail.fm - Faster than the air-speed velocity of an unladen european swallow
From f9f7d67c98b2cd582d5f527b13ce79be92d51f51 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> Date: Wed, 29 May 2013 21:43:49 +0200 Subject: [PATCH 1/4] textual: harmonize some loop-device error messages Signed-off-by: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> --- sys-utils/losetup.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c index 90e75eb..287761a 100644 --- a/sys-utils/losetup.c +++ b/sys-utils/losetup.c @@ -603,12 +603,12 @@ int main(int argc, char **argv) if (act != A_CREATE && (sizelimit || lo_flags || showdev)) errx(EXIT_FAILURE, - _("the options %s are allowed to loop device setup only"), + _("the options %s are allowed during loop device setup only"), "--{sizelimit,read-only,show}"); if ((flags & LOOPDEV_FL_OFFSET) && act != A_CREATE && (act != A_SHOW || !file)) - errx(EXIT_FAILURE, _("the option --offset is not allowed in this context.")); + errx(EXIT_FAILURE, _("the option --offset is not allowed in this context")); if (outarg && string_add_to_idarray(outarg, columns, ARRAY_SIZE(columns), &ncolumns, column_name_to_id) < 0) @@ -624,7 +624,7 @@ int main(int argc, char **argv) * loopcxt struct. */ if (!hasdev && (res = loopcxt_find_unused(&lc))) { - warnx(_("not found unused device")); + warnx(_("cannot find an unused loop device")); break; } if (flags & LOOPDEV_FL_OFFSET) @@ -642,7 +642,7 @@ int main(int argc, char **argv) if (res == 0) break; /* success */ if (errno != EBUSY) { - warn(_("%s: failed to setup loop device"), + warn(_("%s: failed to set up loop device"), hasdev && loopcxt_get_fd(&lc) < 0 ? loopcxt_get_device(&lc) : file); break; @@ -671,7 +671,7 @@ int main(int argc, char **argv) break; case A_FIND_FREE: if (loopcxt_find_unused(&lc)) - warn(_("find unused loop device failed")); + warn(_("cannot find an unused loop device")); else printf("%s\n", loopcxt_get_device(&lc)); break; @@ -687,7 +687,7 @@ int main(int argc, char **argv) else res = printf_loopdev(&lc); if (res) - warn(_("%s"), loopcxt_get_device(&lc)); + warn("%s", loopcxt_get_device(&lc)); break; case A_SET_CAPACITY: res = loopcxt_set_capacity(&lc); -- 1.7.0.4
From dc98243324b9ded0d91145f7e700c93559e56865 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> Date: Wed, 29 May 2013 21:52:56 +0200 Subject: [PATCH 2/4] textual: fix several typos and angular brackets in messages Signed-off-by: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> --- misc-utils/logger.c | 6 +++--- mount-deprecated/mount.c | 2 +- schedutils/chrt.c | 2 +- sys-utils/blkdiscard.c | 2 +- sys-utils/flock.c | 2 +- sys-utils/umount.c | 24 ++++++++++++------------ text-utils/column.c | 6 +++--- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/misc-utils/logger.c b/misc-utils/logger.c index 161a7aa..0717647 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -182,7 +182,7 @@ static int inet_socket(const char *servername, const char *port, hints.ai_family = AF_UNSPEC; errcode = getaddrinfo(servername, p, &hints, &res); if (errcode != 0) - errx(EXIT_FAILURE, _("getaddrinfo %s:%s: %s"), + errx(EXIT_FAILURE, _("failed to resolve name %s port %s: %s"), servername, p, gai_strerror(errcode)); if ((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) { freeaddrinfo(res); @@ -199,7 +199,7 @@ static int inet_socket(const char *servername, const char *port, } if (i == 0) - errx(EXIT_FAILURE, _("failed to connect %s port %s"), servername, p); + errx(EXIT_FAILURE, _("failed to connect to %s port %s"), servername, p); return fd; } @@ -235,7 +235,7 @@ static void mysyslog(int fd, int logflags, int pri, char *tag, char *msg) static void __attribute__ ((__noreturn__)) usage(FILE *out) { fputs(USAGE_HEADER, out); - fprintf(out, _(" %s [options] [message]\n"), program_invocation_short_name); + fprintf(out, _(" %s [options] [<message>]\n"), program_invocation_short_name); fputs(USAGE_OPTIONS, out); fputs(_(" -T, --tcp use TCP only\n"), out); diff --git a/mount-deprecated/mount.c b/mount-deprecated/mount.c index b32edc1..d8e1712 100644 --- a/mount-deprecated/mount.c +++ b/mount-deprecated/mount.c @@ -1311,7 +1311,7 @@ loop_check(const char **spec, const char **type, int *flags, } if (loopcxt_init(&lc, 0) < 0) { - error(_("mount: tailed to initialize loopdev context")); + error(_("mount: failed to initialize loopdev context")); return EX_FAIL; } diff --git a/schedutils/chrt.c b/schedutils/chrt.c index 20df6fa..e9af427 100644 --- a/schedutils/chrt.c +++ b/schedutils/chrt.c @@ -62,7 +62,7 @@ static void __attribute__((__noreturn__)) show_usage(int rc) fprintf(out, _( "\nchrt - manipulate real-time attributes of a process\n" "\nSet policy:\n" - " chrt [options] [-policy] <priority> [-p <pid> | <command> <arg> ...]\n" + " chrt [options] [<policy>] <priority> [-p <pid> | <command> [<arg>...]]\n" "\nGet policy:\n" " chrt [options] -p <pid>\n")); diff --git a/sys-utils/blkdiscard.c b/sys-utils/blkdiscard.c index bdcd06e..0e15c01 100644 --- a/sys-utils/blkdiscard.c +++ b/sys-utils/blkdiscard.c @@ -121,7 +121,7 @@ int main(int argc, char **argv) } if (optind == argc) - errx(EXIT_FAILURE, _("no device specified.")); + errx(EXIT_FAILURE, _("no device specified")); path = argv[optind++]; diff --git a/sys-utils/flock.c b/sys-utils/flock.c index 3322e14..1a1091d 100644 --- a/sys-utils/flock.c +++ b/sys-utils/flock.c @@ -49,7 +49,7 @@ static void __attribute__((__noreturn__)) usage(int ex) { fprintf(stderr, USAGE_HEADER); fprintf(stderr, - _(" %1$s [options] <file|directory> <command> [command args]\n" + _(" %1$s [options] <file|directory> <command> [<arguments>...]\n" " %1$s [options] <file|directory> -c <command>\n" " %1$s [options] <file descriptor number>\n"), program_invocation_short_name); diff --git a/sys-utils/umount.c b/sys-utils/umount.c index 17764b5..e3f0e2d 100644 --- a/sys-utils/umount.c +++ b/sys-utils/umount.c @@ -80,18 +80,18 @@ static void __attribute__((__noreturn__)) usage(FILE *out) fputs(USAGE_OPTIONS, out); fputs(_(" -a, --all unmount all filesystems\n"), out); - fputs(_(" -A, --all-targets unmount all mountpoins for the given device\n" - " in the current namespace\n"), out); + fputs(_(" -A, --all-targets unmount all mountpoins for the given device in the\n" + " current namespace\n"), out); fputs(_(" -c, --no-canonicalize don't canonicalize paths\n"), out); fputs(_(" -d, --detach-loop if mounted loop device, also free this loop device\n"), out); fputs(_(" --fake dry run; skip the umount(2) syscall\n"), out); fputs(_(" -f, --force force unmount (in case of an unreachable NFS system)\n"), out); fputs(_(" -i, --internal-only don't call the umount.<type> helpers\n"), out); fputs(_(" -n, --no-mtab don't write to /etc/mtab\n"), out); - fputs(_(" -l, --lazy detach the filesystem now, and cleanup all later\n"), out); + fputs(_(" -l, --lazy detach the filesystem now, clean up things later\n"), out); fputs(_(" -O, --test-opts <list> limit the set of filesystems (use with -a)\n"), out); fputs(_(" -R, --recursive recursively unmount a target with all its children\n"), out); - fputs(_(" -r, --read-only In case unmounting fails, try to remount read-only\n"), out); + fputs(_(" -r, --read-only in case unmounting fails, try to remount read-only\n"), out); fputs(_(" -t, --types <list> limit the set of filesystem types\n"), out); fputs(_(" -v, --verbose say what is being done\n"), out); @@ -207,7 +207,7 @@ static int mk_exit_code(struct libmnt_context *cxt, int rc) */ if (rc < 0) return handle_generic_errors(rc, - _("%s: filesystem umounted, but mount(8) failed"), + _("%s: filesystem was unmounted, but mount(8) failed"), tgt); return MOUNT_EX_SOFTWARE; /* internal error */ @@ -230,23 +230,23 @@ static int mk_exit_code(struct libmnt_context *cxt, int rc) warnx(_("%s: can't write superblock"), tgt); break; case EBUSY: - warnx(_("%s: target is busy.\n" - " (In some cases useful info about processes that use\n" - " the device is found by lsof(8) or fuser(1))"), + warnx(_("%s: target is busy\n" + " (In some cases useful info about processes that\n" + " use the device is found by lsof(8) or fuser(1).)"), tgt); break; case ENOENT: warnx(_("%s: not found"), tgt); break; case EPERM: - warnx(_("%s: must be superuser to umount"), tgt); + warnx(_("%s: must be superuser to unmount"), tgt); break; case EACCES: - warnx(_("%s: block devices not permitted on fs"), tgt); + warnx(_("%s: block devices are not permitted on filesystem"), tgt); break; default: errno = syserr; - warn(_("%s"), tgt); + warn("%s", tgt); break; } return MOUNT_EX_FAIL; @@ -275,7 +275,7 @@ static int umount_all(struct libmnt_context *cxt) rc |= mk_exit_code(cxt, mntrc); if (mnt_context_is_verbose(cxt)) - printf("%-25s: successfully umounted\n", tgt); + printf("%-25s: successfully unmounted\n", tgt); } } diff --git a/text-utils/column.c b/text-utils/column.c index 2649fec..7865cca 100644 --- a/text-utils/column.c +++ b/text-utils/column.c @@ -89,13 +89,13 @@ static void __attribute__((__noreturn__)) usage(int rc) FILE *out = rc == EXIT_FAILURE ? stderr : stdout; fputs(USAGE_HEADER, out); - fprintf(out, _(" %s [options] [file ...]\n"), program_invocation_short_name); + fprintf(out, _(" %s [options] [<file>...]\n"), program_invocation_short_name); fputs(USAGE_OPTIONS, out); fputs(_(" -c, --columns <width> width of output in number of characters\n"), out); fputs(_(" -t, --table create a table\n"), out); fputs(_(" -s, --separator <string> possible table delimiters\n"), out); - fputs(_(" -o, --output-separator <string>\n"), out); - fputs(_(" table output column separator, default is two spaces\n"), out); + fputs(_(" -o, --output-separator <string>\n" + " columns separator for table output; default is two spaces\n"), out); fputs(_(" -x, --fillrows fill rows before columns\n"), out); fputs(USAGE_SEPARATOR, out); fputs(USAGE_HELP, out); -- 1.7.0.4
From 2753efc364e0dc8868a0edf80ab7c2f001a3e1bb Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> Date: Thu, 30 May 2013 12:40:51 +0200 Subject: [PATCH 3/4] docs: normalize the formatting of man pages for nsenter and unshare Signed-off-by: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> --- sys-utils/nsenter.1 | 106 ++++++++++++++++++++++++-------------------------- sys-utils/unshare.1 | 54 +++++++++++++------------ 2 files changed, 79 insertions(+), 81 deletions(-) diff --git a/sys-utils/nsenter.1 b/sys-utils/nsenter.1 index 4789575..da22d08 100644 --- a/sys-utils/nsenter.1 +++ b/sys-utils/nsenter.1 @@ -1,44 +1,45 @@ -.TH NSENTER 1 "January 2013" "util-linux" "User Commands" +.TH NSENTER 1 "May 2013" "util-linux" "User Commands" .SH NAME nsenter \- run program with namespaces of other processes .SH SYNOPSIS .B nsenter -.RI [ options ] -.RI [ program ] -.RI [ arguments ] +.RB [ options ] +.RI [ program +.RI [ arguments ]] .SH DESCRIPTION Enters the namespaces of one or more other processes and then executes the specified program. Enterable namespaces are: .TP .B mount namespace -mounting and unmounting filesystems will not affect rest of the system +Mounting and unmounting filesystems will not affect the rest of the system .RB ( CLONE_\:NEWNS -flag), except for filesystems which are explicitly marked as shared (by mount ---make-\:shared). See /proc\:/self\:/mountinfo for the shared flag. +flag), except for filesystems which are explicitly marked as shared (with +\fBmount --make-\:shared\fP; see \fI/proc\:/self\:/mountinfo\fP for the +\fBshared\fP flag). .TP .B UTS namespace -setting hostname, domainname will not affect rest of the system +Setting hostname or domainname will not affect the rest of the system. .RB ( CLONE_\:NEWUTS -flag). +flag) .TP .B IPC namespace -process will have independent namespace for System V message queues, semaphore -sets and shared memory segments +The process will have an independent namespace for System V message queues, +semaphore sets and shared memory segments. .RB ( CLONE_\:NEWIPC -flag). +flag) .TP .B network namespace -process will have independent IPv4 and IPv6 stacks, IP routing tables, firewall -rules, the +The process will have independent IPv4 and IPv6 stacks, IP routing tables, +firewall rules, the .I /proc\:/net and .I /sys\:/class\:/net -directory trees, sockets etc. +directory trees, sockets, etc. .RB ( CLONE_\:NEWNET -flag). +flag) .TP .B PID namespace -children will have a set of PID to process mappings separate from the +Children will have a set of PID to process mappings separate from the .B nsenter process .RB ( CLONE_\:NEWPID @@ -46,23 +47,18 @@ flag). .B nsenter will fork by default if changing the PID namespace, so that the new program and its children share the same PID namespace and are visible to each other. -If \-\-no\-fork is used, the new program will be exec'ed without forking. +If \fB\-\-no\-fork\fP is used, the new program will be exec'ed without forking. .TP .B user namespace -process will have distinct set of UIDs, GIDs and capabilities +The process will have a distinct set of UIDs, GIDs and capabilities. .RB ( CLONE_\:NEWUSER -flag). +flag) .TP -See the -.BR clone (2) -for exact semantics of the flags. +See \fBclone\fP(2) for the exact semantics of the flags. .TP -If program is not given, run ``${SHELL}'' (default: /bin\:/sh). +If \fIprogram\fP is not given, then ``${SHELL}'' is run (default: /bin\:/sh). .SH OPTIONS -Argument with square brakets, such as [\fIfile\fR], means optional argument. -Command line syntax to specify optional argument \-\-mount=/path\:/to\:/file. -Please notice the equals sign. .TP \fB\-t\fR, \fB\-\-target\fR \fIpid\fP Specify a target process to get contexts from. The paths to the contexts @@ -99,56 +95,56 @@ the working directory respectively .PD .RE .TP -\fB\-m\fR, \fB\-\-mount\fR [\fIfile\fR] -Enter the mount namespace. If no file is specified enter the mount namespace -of the target process. If file is specified enter the mount namespace +\fB\-m\fR, \fB\-\-mount\fR[=\fIfile\fR] +Enter the mount namespace. If no file is specified, enter the mount namespace +of the target process. If file is specified, enter the mount namespace specified by file. .TP -\fB\-u\fR, \fB\-\-uts\fR [\fIfile\fR] -Enter the UTS namespace. If no file is specified enter the UTS namespace of -the target process. If file is specified enter the UTS namespace specified by +\fB\-u\fR, \fB\-\-uts\fR[=\fIfile\fR] +Enter the UTS namespace. If no file is specified, enter the UTS namespace of +the target process. If file is specified, enter the UTS namespace specified by file. .TP -\fB\-i\fR, \fB\-\-ipc\fR [\fIfile\fR] -Enter the IPC namespace. If no file is specified enter the IPC namespace of -the target process. If file is specified enter the IPC namespace specified by +\fB\-i\fR, \fB\-\-ipc\fR[=\fIfile\fR] +Enter the IPC namespace. If no file is specified, enter the IPC namespace of +the target process. If file is specified, enter the IPC namespace specified by file. .TP -\fB\-n\fR, \fB\-\-net\fR [\fIfile\fR] -Enter the network namespace. If no file is specified enter the network -namespace of the target process. If file is specified enter the network +\fB\-n\fR, \fB\-\-net\fR[=\fIfile\fR] +Enter the network namespace. If no file is specified, enter the network +namespace of the target process. If file is specified, enter the network namespace specified by file. .TP -\fB\-p\fR, \fB\-\-pid\fR [\fIfile\fR] -Enter the PID namespace. If no file is specified enter the PID namespace of -the target process. If file is specified enter the PID namespace specified by +\fB\-p\fR, \fB\-\-pid\fR[=\fIfile\fR] +Enter the PID namespace. If no file is specified, enter the PID namespace of +the target process. If file is specified, enter the PID namespace specified by file. .TP -\fB\-U\fR, \fB\-\-user\fR [\fIfile\fR] -Enter the user namespace. If no file is specified enter the user namespace of -the target process. If file is specified enter the user namespace specified by +\fB\-U\fR, \fB\-\-user\fR[=\fIfile\fR] +Enter the user namespace. If no file is specified, enter the user namespace of +the target process. If file is specified, enter the user namespace specified by file. .TP -\fB\-r\fR, \fB\-\-root\fR [\fIdirectory\fR] -Set the root directory. If no directory is specified set the root directory to -the root directory of the target process. If directory is specified set the +\fB\-r\fR, \fB\-\-root\fR[=\fIdirectory\fR] +Set the root directory. If no directory is specified, set the root directory to +the root directory of the target process. If directory is specified, set the root directory to the specified directory. .TP -\fB\-w\fR, \fB\-\-wd\fR [\fIdirectory\fR] -Set the working directory. If no directory is specified set the working +\fB\-w\fR, \fB\-\-wd\fR[=\fIdirectory\fR] +Set the working directory. If no directory is specified, set the working directory to the working directory of the target process. If directory is -specified set the working directory to the specified directory. +specified, set the working directory to the specified directory. .TP \fB\-F\fR, \fB\-\-no-fork\fR -Do not fork before exec'ing the specified program. By default when entering a -pid namespace enter calls fork before calling exec so that the children will be -in the newly entered pid namespace. +Do not fork before exec'ing the specified program. By default, when entering a +PID namespace, \fBnsenter\fP calls \fBfork\fP before calling \fBexec\fP so that +any children will also be in the newly entered PID namespace. .TP \fB\-V\fR, \fB\-\-version\fR Display version information and exit. .TP \fB\-h\fR, \fB\-\-help\fR -Print a help message. +Display a help message and exit. .SH SEE ALSO .BR setns (2), .BR clone (2) diff --git a/sys-utils/unshare.1 b/sys-utils/unshare.1 index 58f2bb2..5503faf 100644 --- a/sys-utils/unshare.1 +++ b/sys-utils/unshare.1 @@ -1,57 +1,56 @@ .\" Process this file with .\" groff -man -Tascii lscpu.1 .\" -.TH UNSHARE 1 "January 2013" "util-linux" "User Commands" +.TH UNSHARE 1 "May 2013" "util-linux" "User Commands" .SH NAME unshare \- run program with some namespaces unshared from parent .SH SYNOPSIS .B unshare -.RI [ options ] -program +.RB [ options ] +.I program .RI [ arguments ] .SH DESCRIPTION -Unshares specified namespaces from parent process and then executes specified -program. Unshareable namespaces are: +Unshares the indicated namespaces from the parent process and then executes +the specified program. Unshareable namespaces are: .TP .BR "mount namespace" -mounting and unmounting filesystems will not affect rest of the system +Mounting and unmounting filesystems will not affect the rest of the system (\fBCLONE_NEWNS\fP flag), except for filesystems which are explicitly marked as -shared (by mount --make-shared). See /proc/self/mountinfo for the shared flags. +shared (with \fBmount --make-shared\fP; see \fI/proc/self/mountinfo\fP for the +\fBshared\fP flags). .TP .BR "UTS namespace" -setting hostname, domainname will not affect rest of the system -(\fBCLONE_NEWUTS\fP flag). +Setting hostname or domainname will not affect the rest of the system. +(\fBCLONE_NEWUTS\fP flag) .TP .BR "IPC namespace" -process will have independent namespace for System V message queues, semaphore -sets and shared memory segments (\fBCLONE_NEWIPC\fP flag). +The process will have an independent namespace for System V message queues, +semaphore sets and shared memory segments. (\fBCLONE_NEWIPC\fP flag) .TP .BR "network namespace" -process will have independent IPv4 and IPv6 stacks, IP routing tables, firewall -rules, the \fI/proc/net\fP and \fI/sys/class/net\fP directory trees, sockets -etc. (\fBCLONE_NEWNET\fP flag). +The process will have independent IPv4 and IPv6 stacks, IP routing tables, +firewall rules, the \fI/proc/net\fP and \fI/sys/class/net\fP directory trees, +sockets, etc. (\fBCLONE_NEWNET\fP flag) .TP .BR "pid namespace" -children will have a distinct set of pid to process mappings than their parent. -(\fBCLONE_NEWPID\fP flag). +Children will have a distinct set of PID to process mappings from their parent. +(\fBCLONE_NEWPID\fP flag) .TP .BR "user namespace" -process will have distinct set of uids, gids and capabilities. (\fBCLONE_NEWUSER\fP flag). +The process will have a distinct set of UIDs, GIDs and capabilities. +(\fBCLONE_NEWUSER\fP flag) .TP -See the \fBclone\fR(2) for exact semantics of the flags. +See \fBclone\fR(2) for the exact semantics of the flags. .SH OPTIONS .TP .BR \-h , " \-\-help" -Print a help message, -.TP -.BR \-m , " \-\-mount" -Unshare the mount namespace, -.TP -.BR \-u , " \-\-uts" -Unshare the UTS namespace, +Display a help message and exit. .TP .BR \-i , " \-\-ipc" -Unshare the IPC namespace, +Unshare the IPC namespace. +.TP +.BR \-m , " \-\-mount" +Unshare the mount namespace. .TP .BR \-n , " \-\-net" Unshare the network namespace. @@ -59,6 +58,9 @@ Unshare the network namespace. .BR \-p , " \-\-pid" Unshare the pid namespace. .TP +.BR \-u , " \-\-uts" +Unshare the UTS namespace. +.TP .BR \-U , " \-\-user" Unshare the user namespace. .SH SEE ALSO -- 1.7.0.4
From c94a3972a3cac1b9cf96a44409476f21f5f5d041 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> Date: Thu, 30 May 2013 22:55:11 +0200 Subject: [PATCH 4/4] docs: slightly correct the man page of column Signed-off-by: Benno Schulenberg <bensberg@xxxxxxxxxxxxx> --- text-utils/column.1 | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/text-utils/column.1 b/text-utils/column.1 index b6da45f..fd87f50 100644 --- a/text-utils/column.1 +++ b/text-utils/column.1 @@ -36,14 +36,14 @@ column - columnate lists .SH SYNOPSIS .B column -.RI [ options ] -.IR file ... +.RB [ options ] +.RI [ file ...] .SH DESCRIPTION The .B column -utility formats its input into multiple columns. Rows -are filled before columns. Input is taken from \fIfile\fR or, by -default, from standard input. Empty lines are ignored. +utility formats its input into multiple columns. By default, rows +are filled before columns. Input is taken from \fIfile\fR, or +otherwise from standard input. Empty lines are ignored. .PP .SH OPTIONS .IP "\fB\-c, \-\-columns\fP \fIwidth\fP" @@ -51,15 +51,16 @@ Output is formatted to a width specified as number of characters. .IP "\fB\-t, \-\-table\fP" Determine the number of columns the input contains and create a table. Columns are delimited with whitespace, by default, or with the characters -supplied using the separator. Table output is useful for pretty-printing. +supplied using the \fB\-\-output-separator\fP option. +Table output is useful for pretty-printing. .IP "\fB\-s, \-\-separator\fP \fIseparators\fP" -Specify possible table delimiters (default is whitespace). -.IP "\fB\-o, \-\-output-separator\fP \fIseparators\fP" -Specify table output delimiter (default is two whitespaces). +Specify the possible input item delimiters (default is whitespace). +.IP "\fB\-o, \-\-output-separator\fP \fIstring\fP" +Specify the columns delimiter for table output (default is two spaces). .IP "\fB\-x, \-\-fillrows\fP" Fill columns before filling rows. .IP "\fB\-h, \-\-help\fP" -Print help and exit. +Display a help text and exit. .SH ENVIRONMENT The environment variable COLUMNS is used to determine the size of the screen if no other information is available. -- 1.7.0.4