=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/sftp.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- src/usr.bin/ssh/sftp.c 2004/06/21 22:30:45 1.53 +++ src/usr.bin/ssh/sftp.c 2004/06/22 01:16:39 1.54 @@ -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 @@ -68,6 +68,7 @@ #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) @@ -374,6 +375,9 @@ case 'f': *lflag &= ~SORT_FLAGS; break; + case 'a': + *lflag |= LS_SHOW_ALL; + break; default: error("Invalid flag -%c", *cp); return(-1); @@ -662,8 +666,10 @@ 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); @@ -686,6 +692,9 @@ 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);