summaryrefslogtreecommitdiff
path: root/sftp-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'sftp-common.c')
-rw-r--r--sftp-common.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/sftp-common.c b/sftp-common.c
index 9dc1f983..677f27d6 100644
--- a/sftp-common.c
+++ b/sftp-common.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-common.c,v 1.28 2015/01/20 23:14:00 deraadt Exp $ */
+/* $OpenBSD: sftp-common.c,v 1.31 2018/09/13 15:23:32 millert Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2001 Damien Miller. All rights reserved.
@@ -26,7 +26,6 @@
#include "includes.h"
-#include <sys/param.h> /* MAX */
#include <sys/types.h>
#include <sys/stat.h>
@@ -37,6 +36,7 @@
#include <string.h>
#include <time.h>
#include <stdarg.h>
+#include <unistd.h>
#ifdef HAVE_UTIL_H
#include <util.h>
#endif
@@ -45,6 +45,7 @@
#include "ssherr.h"
#include "sshbuf.h"
#include "log.h"
+#include "misc.h"
#include "sftp.h"
#include "sftp-common.h"
@@ -215,23 +216,22 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units)
{
int ulen, glen, sz = 0;
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];
+ const char *user, *group;
+ char buf[1024], lc[8], mode[11+1], tbuf[12+1], ubuf[11+1], gbuf[11+1];
char sbuf[FMT_SCALED_STRSIZE];
time_t now;
strmode(st->st_mode, mode);
- if (!remote) {
- user = user_from_uid(st->st_uid, 0);
- } else {
+ if (remote) {
snprintf(ubuf, sizeof ubuf, "%u", (u_int)st->st_uid);
user = ubuf;
- }
- if (!remote) {
- group = group_from_gid(st->st_gid, 0);
- } else {
snprintf(gbuf, sizeof gbuf, "%u", (u_int)st->st_gid);
group = gbuf;
+ strlcpy(lc, "?", sizeof(lc));
+ } else {
+ user = user_from_uid(st->st_uid, 0);
+ group = group_from_gid(st->st_gid, 0);
+ snprintf(lc, sizeof(lc), "%u", (u_int)st->st_nlink);
}
if (ltime != NULL) {
now = time(NULL);
@@ -243,16 +243,16 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units)
}
if (sz == 0)
tbuf[0] = '\0';
- ulen = MAX(strlen(user), 8);
- glen = MAX(strlen(group), 8);
+ ulen = MAXIMUM(strlen(user), 8);
+ glen = MAXIMUM(strlen(group), 8);
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,
+ snprintf(buf, sizeof buf, "%s %3s %-*s %-*s %8s %s %s",
+ mode, lc, 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,
+ snprintf(buf, sizeof buf, "%s %3s %-*s %-*s %8llu %s %s",
+ mode, lc, ulen, user, glen, group,
(unsigned long long)st->st_size, tbuf, name);
}
return xstrdup(buf);