From cc4ff6c44c2774ab32c510e8c1136994d57204f9 Mon Sep 17 00:00:00 2001 From: dtucker Date: Tue, 22 Jun 2004 03:09:55 +0000 Subject: [PATCH] - djm@cvs.openbsd.org 2004/06/22 01:16:39 [sftp.c] don't show .files by default in ls, add -a option to turn them back on; ok markus --- ChangeLog | 4 ++++ sftp.c | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b105383..a197aea3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -33,6 +33,10 @@ - djm@cvs.openbsd.org 2004/06/21 22:41:31 [sftp.1] document sort options + - djm@cvs.openbsd.org 2004/06/22 01:16:39 + [sftp.c] + don't show .files by default in ls, add -a option to turn them back on; + ok markus 20040620 - (tim) [configure.ac Makefile.in] Only change TEST_SHELL on broken platforms. diff --git a/sftp.c b/sftp.c index 37adb028..6639672c 100644 --- a/sftp.c +++ b/sftp.c @@ -16,7 +16,7 @@ #include "includes.h" -RCSID("$OpenBSD: sftp.c,v 1.53 2004/06/21 22:30:45 djm Exp $"); +RCSID("$OpenBSD: sftp.c,v 1.54 2004/06/22 01:16:39 djm Exp $"); #include "buffer.h" #include "xmalloc.h" @@ -72,6 +72,7 @@ char *__progname; #define LS_TIME_SORT 0x10 /* Sort by mtime */ #define LS_SIZE_SORT 0x20 /* Sort by file size */ #define LS_REVERSE_SORT 0x40 /* Reverse sort order */ +#define LS_SHOW_ALL 0x80 /* Don't skip filenames starting with '.' */ #define VIEW_FLAGS (LS_LONG_VIEW|LS_SHORT_VIEW|LS_NUMERIC_VIEW) #define SORT_FLAGS (LS_NAME_SORT|LS_TIME_SORT|LS_SIZE_SORT) @@ -378,6 +379,9 @@ parse_ls_flags(const char **cpp, int *lflag) case 'f': *lflag &= ~SORT_FLAGS; break; + case 'a': + *lflag |= LS_SHOW_ALL; + break; default: error("Invalid flag -%c", *cp); return(-1); @@ -666,8 +670,10 @@ do_ls_dir(struct sftp_conn *conn, char *path, char *strip_path, int lflag) char *tmp; /* Count entries for sort and find longest filename */ - for (n = 0; d[n] != NULL; n++) - m = MAX(m, strlen(d[n]->filename)); + for (n = 0; d[n] != NULL; n++) { + if (d[n]->filename[0] != '.' || (lflag & LS_SHOW_ALL)) + m = MAX(m, strlen(d[n]->filename)); + } /* Add any subpath that also needs to be counted */ tmp = path_strip(path, strip_path); @@ -691,6 +697,9 @@ do_ls_dir(struct sftp_conn *conn, char *path, char *strip_path, int lflag) for (n = 0; d[n] != NULL && !interrupted; n++) { char *tmp, *fname; + if (d[n]->filename[0] == '.' && !(lflag & LS_SHOW_ALL)) + continue; + tmp = path_append(path, d[n]->filename); fname = path_strip(tmp, strip_path); xfree(tmp); -- 2.45.2