mirror of git://anongit.mindrot.org/openssh.git
- djm@cvs.openbsd.org 2010/09/26 22:26:33
[sftp.c] when performing an "ls" in columnated (short) mode, only call ioctl(TIOCGWINSZ) once to get the window width instead of per- filename
This commit is contained in:
parent
a6e121aaa0
commit
68e2e56ea9
|
@ -13,6 +13,11 @@
|
||||||
rountrips to fetch per-file stat(2) information.
|
rountrips to fetch per-file stat(2) information.
|
||||||
NB. update openbsd-compat/ glob(3) implementation from OpenBSD libc to
|
NB. update openbsd-compat/ glob(3) implementation from OpenBSD libc to
|
||||||
match.
|
match.
|
||||||
|
- djm@cvs.openbsd.org 2010/09/26 22:26:33
|
||||||
|
[sftp.c]
|
||||||
|
when performing an "ls" in columnated (short) mode, only call
|
||||||
|
ioctl(TIOCGWINSZ) once to get the window width instead of per-
|
||||||
|
filename
|
||||||
|
|
||||||
20100924
|
20100924
|
||||||
- (djm) OpenBSD CVS Sync
|
- (djm) OpenBSD CVS Sync
|
||||||
|
|
18
sftp.c
18
sftp.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sftp.c,v 1.128 2010/09/25 09:30:16 djm Exp $ */
|
/* $OpenBSD: sftp.c,v 1.129 2010/09/26 22:26:33 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
||||||
*
|
*
|
||||||
|
@ -758,11 +758,12 @@ static int
|
||||||
do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
|
do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
|
||||||
int lflag)
|
int lflag)
|
||||||
{
|
{
|
||||||
glob_t g;
|
|
||||||
u_int i, c = 1, colspace = 0, columns = 1;
|
|
||||||
Attrib *a = NULL;
|
Attrib *a = NULL;
|
||||||
int err;
|
|
||||||
char *fname, *lname;
|
char *fname, *lname;
|
||||||
|
glob_t g;
|
||||||
|
int err;
|
||||||
|
struct winsize ws;
|
||||||
|
u_int i, c = 1, colspace = 0, columns = 1, m = 0, width = 80;
|
||||||
|
|
||||||
memset(&g, 0, sizeof(g));
|
memset(&g, 0, sizeof(g));
|
||||||
|
|
||||||
|
@ -789,17 +790,14 @@ do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(lflag & LS_SHORT_VIEW)) {
|
if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1)
|
||||||
u_int m = 0, width = 80;
|
width = ws.ws_col;
|
||||||
struct winsize ws;
|
|
||||||
|
|
||||||
|
if (!(lflag & LS_SHORT_VIEW)) {
|
||||||
/* Count entries for sort and find longest filename */
|
/* Count entries for sort and find longest filename */
|
||||||
for (i = 0; g.gl_pathv[i]; i++)
|
for (i = 0; g.gl_pathv[i]; i++)
|
||||||
m = MAX(m, strlen(g.gl_pathv[i]));
|
m = MAX(m, strlen(g.gl_pathv[i]));
|
||||||
|
|
||||||
if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1)
|
|
||||||
width = ws.ws_col;
|
|
||||||
|
|
||||||
columns = width / (m + 2);
|
columns = width / (m + 2);
|
||||||
columns = MAX(columns, 1);
|
columns = MAX(columns, 1);
|
||||||
colspace = width / columns;
|
colspace = width / columns;
|
||||||
|
|
Loading…
Reference in New Issue