From b215c5d8fec624a18751f03cfb416a340b07fa15 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Tue, 22 Jun 2004 12:30:53 +1000 Subject: - djm@cvs.openbsd.org 2004/06/20 18:53:39 [sftp.c] make "ls -l" listings print user/group names, add "ls -n" to show uid/gid (like /bin/ls); idea & ok markus@ --- ChangeLog | 6 +++++- sftp.c | 39 +++++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d7281a3a..5df566f6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,10 @@ - djm@cvs.openbsd.org 2004/06/20 17:36:59 [ssh.c] filter passed env vars at slave in connection sharing case; ok markus@ + - djm@cvs.openbsd.org 2004/06/20 18:53:39 + [sftp.c] + make "ls -l" listings print user/group names, add "ls -n" to show uid/gid + (like /bin/ls); idea & ok markus@ 20040620 - (tim) [configure.ac Makefile.in] Only change TEST_SHELL on broken platforms. @@ -1325,4 +1329,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.3418 2004/06/22 02:29:23 dtucker Exp $ +$Id: ChangeLog,v 1.3419 2004/06/22 02:30:53 dtucker Exp $ diff --git a/sftp.c b/sftp.c index 1e216be7d..df2aff657 100644 --- a/sftp.c +++ b/sftp.c @@ -16,7 +16,7 @@ #include "includes.h" -RCSID("$OpenBSD: sftp.c,v 1.49 2004/06/18 06:13:25 dtucker Exp $"); +RCSID("$OpenBSD: sftp.c,v 1.50 2004/06/20 18:53:39 djm Exp $"); #include "buffer.h" #include "xmalloc.h" @@ -61,9 +61,11 @@ char *__progname; /* Separators for interactive commands */ #define WHITESPACE " \t\r\n" -/* Define what type of ls view (0 - multi-column) */ -#define LONG_VIEW 1 /* Full view ala ls -l */ -#define SHORT_VIEW 2 /* Single row view ala ls -1 */ +/* Define what type of ls view */ +#define LONG_VIEW 1 /* Full view ala ls -l */ +#define SHORT_VIEW 2 /* Single row view ala ls -1 */ +#define NUMERIC_VIEW 4 /* Long view with numeric uid/gid */ +#define VIEW_FLAGS (LONG_VIEW|SHORT_VIEW|NUMERIC_VIEW) /* Commands for interactive mode */ #define I_CHDIR 1 @@ -339,10 +341,16 @@ parse_ls_flags(const char **cpp, int *lflag) for(; strchr(WHITESPACE, *cp) == NULL; cp++) { switch (*cp) { case 'l': - *lflag = LONG_VIEW; + *lflag &= ~VIEW_FLAGS; + *lflag |= LONG_VIEW; break; case '1': - *lflag = SHORT_VIEW; + *lflag &= ~VIEW_FLAGS; + *lflag |= SHORT_VIEW; + break; + case 'n': + *lflag &= ~VIEW_FLAGS; + *lflag |= NUMERIC_VIEW|LONG_VIEW; break; default: error("Invalid flag -%c", *cp); @@ -650,14 +658,17 @@ do_ls_dir(struct sftp_conn *conn, char *path, char *strip_path, int lflag) xfree(tmp); if (lflag & LONG_VIEW) { - char *lname; - struct stat sb; - - memset(&sb, 0, sizeof(sb)); - attrib_to_stat(&d[n]->a, &sb); - lname = ls_file(fname, &sb, 1); - printf("%s\n", lname); - xfree(lname); + if (lflag & NUMERIC_VIEW) { + char *lname; + struct stat sb; + + memset(&sb, 0, sizeof(sb)); + attrib_to_stat(&d[n]->a, &sb); + lname = ls_file(fname, &sb, 1); + printf("%s\n", lname); + xfree(lname); + } else + printf("%s\n", d[n]->longname); } else { printf("%-*s", colspace, fname); if (c >= columns) { -- cgit v1.2.3