From 2901e2daebe3a0890209f31d05d5bb9338cbed5b Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Wed, 13 Jan 2010 22:44:06 +1100 Subject: - djm@cvs.openbsd.org 2010/01/13 01:40:16 [sftp.c sftp-server.c sftp.1 sftp-common.c sftp-common.h] support '-h' (human-readable units) for sftp's ls command, just like ls(1); ok dtucker@ --- sftp-common.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'sftp-common.c') diff --git a/sftp-common.c b/sftp-common.c index 7ebadcc53..7393fc6a9 100644 --- a/sftp-common.c +++ b/sftp-common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-common.c,v 1.20 2006/08/03 03:34:42 deraadt Exp $ */ +/* $OpenBSD: sftp-common.c,v 1.21 2010/01/13 01:40:16 djm Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * Copyright (c) 2001 Damien Miller. All rights reserved. @@ -36,6 +36,7 @@ #include #include #include +#include #include "xmalloc.h" #include "buffer.h" @@ -184,7 +185,7 @@ fx2txt(int status) * drwxr-xr-x 5 markus markus 1024 Jan 13 18:39 .ssh */ char * -ls_file(const char *name, const struct stat *st, int remote) +ls_file(const char *name, const struct stat *st, int remote, int si_units) { int ulen, glen, sz = 0; struct passwd *pw; @@ -192,6 +193,7 @@ ls_file(const char *name, const struct stat *st, int remote) struct tm *ltime = localtime(&st->st_mtime); char *user, *group; char buf[1024], mode[11+1], tbuf[12+1], ubuf[11+1], gbuf[11+1]; + char sbuf[FMT_SCALED_STRSIZE]; strmode(st->st_mode, mode); if (!remote && (pw = getpwuid(st->st_uid)) != NULL) { @@ -216,8 +218,15 @@ ls_file(const char *name, const struct stat *st, int remote) tbuf[0] = '\0'; ulen = MAX(strlen(user), 8); glen = MAX(strlen(group), 8); - snprintf(buf, sizeof buf, "%s %3u %-*s %-*s %8llu %s %s", mode, - (u_int)st->st_nlink, ulen, user, glen, group, - (unsigned long long)st->st_size, tbuf, name); + if (si_units) { + fmt_scaled((long long)st->st_size, sbuf); + snprintf(buf, sizeof buf, "%s %3u %-*s %-*s %8s %s %s", mode, + (u_int)st->st_nlink, ulen, user, glen, group, + sbuf, tbuf, name); + } else { + snprintf(buf, sizeof buf, "%s %3u %-*s %-*s %8llu %s %s", mode, + (u_int)st->st_nlink, ulen, user, glen, group, + (unsigned long long)st->st_size, tbuf, name); + } return xstrdup(buf); } -- cgit v1.2.3 From 096630d06c75f762efeb778f8b43def6f85976c0 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Wed, 13 Jan 2010 23:00:38 +1100 Subject: - (dtucker) [sftp-common.c] Wrap include of util.h in an ifdef. --- ChangeLog | 1 + sftp-common.c | 2 ++ 2 files changed, 3 insertions(+) (limited to 'sftp-common.c') diff --git a/ChangeLog b/ChangeLog index 00cb316b2..18ce0aa38 100644 --- a/ChangeLog +++ b/ChangeLog @@ -30,6 +30,7 @@ [sftp.c] don't append a space after inserting a completion of a directory (i.e. a path ending in '/') for a slightly better user experience; ok dtucker@ + - (dtucker) [sftp-common.c] Wrap include of util.h in an ifdef. 20100112 - (dtucker) OpenBSD CVS Sync diff --git a/sftp-common.c b/sftp-common.c index 7393fc6a9..96eb4f79a 100644 --- a/sftp-common.c +++ b/sftp-common.c @@ -36,7 +36,9 @@ #include #include #include +#ifdef HAVE_UTIL_H #include +#endif #include "xmalloc.h" #include "buffer.h" -- cgit v1.2.3 From a788de206647e1ffa51b0a95bac1951a02880f76 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Fri, 15 Jan 2010 11:45:33 +1100 Subject: - dtucker@cvs.openbsd.org 2010/01/14 23:41:49 [sftp-common.c] use user_from{uid,gid} to lookup up ids since it keeps a small cache. ok djm --- ChangeLog | 4 ++++ sftp-common.c | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'sftp-common.c') diff --git a/ChangeLog b/ChangeLog index 8a324f350..257204240 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,10 @@ when using ChrootDirectory, make sure we test for the existence of the user's shell inside the chroot; bz #1679, patch from alex AT rtfs.hu; ok dtucker + - dtucker@cvs.openbsd.org 2010/01/14 23:41:49 + [sftp-common.c] + use user_from{uid,gid} to lookup up ids since it keeps a small cache. + ok djm 20100114 - (djm) [platform.h] Add missing prototype for diff --git a/sftp-common.c b/sftp-common.c index 96eb4f79a..d015d7549 100644 --- a/sftp-common.c +++ b/sftp-common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-common.c,v 1.21 2010/01/13 01:40:16 djm Exp $ */ +/* $OpenBSD: sftp-common.c,v 1.22 2010/01/14 23:41:49 dtucker Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * Copyright (c) 2001 Damien Miller. All rights reserved. @@ -198,14 +198,14 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units) char sbuf[FMT_SCALED_STRSIZE]; strmode(st->st_mode, mode); - if (!remote && (pw = getpwuid(st->st_uid)) != NULL) { - user = pw->pw_name; + if (!remote) { + user = user_from_uid(st->st_uid, 0); } else { snprintf(ubuf, sizeof ubuf, "%u", (u_int)st->st_uid); user = ubuf; } - if (!remote && (gr = getgrgid(st->st_gid)) != NULL) { - group = gr->gr_name; + if (!remote) { + group = group_from_gid(st->st_gid, 0); } else { snprintf(gbuf, sizeof gbuf, "%u", (u_int)st->st_gid); group = gbuf; -- cgit v1.2.3 From dab129bef57139232133a870430a9284858909bf Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Sat, 16 Jan 2010 13:43:50 +1100 Subject: - markus@cvs.openbsd.org 2010/01/15 09:24:23 [sftp-common.c] unused --- ChangeLog | 4 ++++ sftp-common.c | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'sftp-common.c') diff --git a/ChangeLog b/ChangeLog index 55e8bb1d7..0b533798d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,10 @@ and group_from_gid. - (dtucker) [openbsd-compat/openbsd-compat.h] Fix prototypes, spotted by Tim. + - (dtucker) OpenBSD CVS Sync + - markus@cvs.openbsd.org 2010/01/15 09:24:23 + [sftp-common.c] + unused 20100115 - (dtucker) OpenBSD CVS Sync diff --git a/sftp-common.c b/sftp-common.c index d015d7549..a042875c6 100644 --- a/sftp-common.c +++ b/sftp-common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp-common.c,v 1.22 2010/01/14 23:41:49 dtucker Exp $ */ +/* $OpenBSD: sftp-common.c,v 1.23 2010/01/15 09:24:23 markus Exp $ */ /* * Copyright (c) 2001 Markus Friedl. All rights reserved. * Copyright (c) 2001 Damien Miller. All rights reserved. @@ -190,8 +190,6 @@ char * ls_file(const char *name, const struct stat *st, int remote, int si_units) { int ulen, glen, sz = 0; - struct passwd *pw; - struct group *gr; struct tm *ltime = localtime(&st->st_mtime); char *user, *group; char buf[1024], mode[11+1], tbuf[12+1], ubuf[11+1], gbuf[11+1]; -- cgit v1.2.3