summaryrefslogtreecommitdiff
path: root/sftp.c
diff options
context:
space:
mode:
authordjm <djm>2010-10-07 10:39:55 +0000
committerdjm <djm>2010-10-07 10:39:55 +0000
commit2f52af274d4482c11262a914d162a658811d1977 (patch)
tree9e3d1d3a4a9aebf385b019e291d31d29c313c2cd /sftp.c
parent6cb118d5dd118e3e48e9c8f64978fb6da11829fc (diff)
downloadopenssh-2f52af274d4482c11262a914d162a658811d1977.tar.gz
- 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
Diffstat (limited to 'sftp.c')
-rw-r--r--sftp.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/sftp.c b/sftp.c
index 46bee198..7b4a8523 100644
--- a/sftp.c
+++ b/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>
*
@@ -758,11 +758,12 @@ static int
do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
int lflag)
{
- glob_t g;
- u_int i, c = 1, colspace = 0, columns = 1;
Attrib *a = NULL;
- int err;
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));
@@ -789,17 +790,14 @@ do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path,
return err;
}
- if (!(lflag & LS_SHORT_VIEW)) {
- u_int m = 0, width = 80;
- struct winsize ws;
+ if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1)
+ width = ws.ws_col;
+ if (!(lflag & LS_SHORT_VIEW)) {
/* Count entries for sort and find longest filename */
for (i = 0; g.gl_pathv[i]; 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 = MAX(columns, 1);
colspace = width / columns;