Use the width of the output device by default in mc(1)
If that fails, fallback to 65 characters as before. If the -c option is specified then just use that.
This commit is contained in:
parent
fe6144793f
commit
cc2d762798
9
mc.1
9
mc.1
|
@ -19,9 +19,9 @@ If no file is given, mc reads from stdin.
|
|||
specifies the maximum number of character columns to use
|
||||
(unless the input contains lines longer than
|
||||
.I chars
|
||||
characters).
|
||||
.I chars
|
||||
defaults to 65.
|
||||
characters). By default mc tries to figure out the width
|
||||
of the output device, if that fails it defaults to 65
|
||||
chars.
|
||||
.SH BUGS
|
||||
This implementation of
|
||||
.B mc
|
||||
|
@ -32,5 +32,4 @@ or TAB characters correctly.
|
|||
.B mc
|
||||
currently mangles files which contain embedded NULs.
|
||||
.B mc
|
||||
does not attempt to determine the width of its output device,
|
||||
nor does it allow the user to set a default width in its environment.
|
||||
does not allow the user to set a default width in its environment.
|
||||
|
|
11
mc.c
11
mc.c
|
@ -5,10 +5,12 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
|
||||
static long chars = 65;
|
||||
static int cflag;
|
||||
static struct linebuf b = EMPTY_LINEBUF;
|
||||
|
||||
static long n_columns;
|
||||
|
@ -26,10 +28,12 @@ main(int argc, char *argv[])
|
|||
long i, l, col;
|
||||
size_t maxlen = 0;
|
||||
char *space;
|
||||
struct winsize w;
|
||||
FILE *fp;
|
||||
|
||||
ARGBEGIN {
|
||||
case 'c':
|
||||
cflag = 1;
|
||||
chars = estrtol(EARGF(usage()), 0);
|
||||
if(chars < 3)
|
||||
eprintf("%d: too few character columns");
|
||||
|
@ -38,6 +42,12 @@ main(int argc, char *argv[])
|
|||
usage();
|
||||
} ARGEND;
|
||||
|
||||
if (cflag == 0) {
|
||||
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
|
||||
if (w.ws_col != 0)
|
||||
chars = w.ws_col;
|
||||
}
|
||||
|
||||
/* XXX librarify this chunk, too? only useful in sponges though */
|
||||
if(argc == 0) {
|
||||
getlines(stdin, &b);
|
||||
|
@ -84,4 +94,3 @@ main(int argc, char *argv[])
|
|||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user