version 1.20, 2016/12/25 00:07:47 |
version 1.21, 2017/04/18 18:41:46 |
|
|
/* $NetBSD$ */ |
/* $NetBSD$ */ |
/* $OpenBSD: sftp.c,v 1.177 2016/10/18 12:41:22 millert Exp $ */ |
/* $OpenBSD: sftp.c,v 1.178 2017/02/15 01:46:47 djm Exp $ */ |
|
|
/* |
/* |
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
* |
* |
|
|
do_df(struct sftp_conn *conn, const char *path, int hflag, int iflag) |
do_df(struct sftp_conn *conn, const char *path, int hflag, int iflag) |
{ |
{ |
struct sftp_statvfs st; |
struct sftp_statvfs st; |
char s_used[FMT_SCALED_STRSIZE]; |
char s_used[FMT_SCALED_STRSIZE], s_avail[FMT_SCALED_STRSIZE]; |
char s_avail[FMT_SCALED_STRSIZE]; |
char s_root[FMT_SCALED_STRSIZE], s_total[FMT_SCALED_STRSIZE]; |
char s_root[FMT_SCALED_STRSIZE]; |
char s_icapacity[16], s_dcapacity[16]; |
char s_total[FMT_SCALED_STRSIZE]; |
|
unsigned long long ffree; |
|
|
|
if (do_statvfs(conn, path, &st, 1) == -1) |
if (do_statvfs(conn, path, &st, 1) == -1) |
return -1; |
return -1; |
|
if (st.f_files == 0) |
|
strlcpy(s_icapacity, "ERR", sizeof(s_icapacity)); |
|
else { |
|
snprintf(s_icapacity, sizeof(s_icapacity), "%3llu%%", |
|
(unsigned long long)(100 * (st.f_files - st.f_ffree) / |
|
st.f_files)); |
|
} |
|
if (st.f_blocks == 0) |
|
strlcpy(s_dcapacity, "ERR", sizeof(s_dcapacity)); |
|
else { |
|
snprintf(s_dcapacity, sizeof(s_dcapacity), "%3llu%%", |
|
(unsigned long long)(100 * (st.f_blocks - st.f_bfree) / |
|
st.f_blocks)); |
|
} |
if (iflag) { |
if (iflag) { |
ffree = st.f_files ? (100 * (st.f_files - st.f_ffree) / st.f_files) : 0; |
|
printf(" Inodes Used Avail " |
printf(" Inodes Used Avail " |
"(root) %%Capacity\n"); |
"(root) %%Capacity\n"); |
printf("%11llu %11llu %11llu %11llu %3llu%%\n", |
printf("%11llu %11llu %11llu %11llu %s\n", |
(unsigned long long)st.f_files, |
(unsigned long long)st.f_files, |
(unsigned long long)(st.f_files - st.f_ffree), |
(unsigned long long)(st.f_files - st.f_ffree), |
(unsigned long long)st.f_favail, |
(unsigned long long)st.f_favail, |
(unsigned long long)st.f_ffree, ffree); |
(unsigned long long)st.f_ffree, s_icapacity); |
} else if (hflag) { |
} else if (hflag) { |
strlcpy(s_used, "error", sizeof(s_used)); |
strlcpy(s_used, "error", sizeof(s_used)); |
strlcpy(s_avail, "error", sizeof(s_avail)); |
strlcpy(s_avail, "error", sizeof(s_avail)); |
Line 1000 do_df(struct sftp_conn *conn, const char |
|
Line 1010 do_df(struct sftp_conn *conn, const char |
|
fmt_scaled(st.f_bfree * st.f_frsize, s_root); |
fmt_scaled(st.f_bfree * st.f_frsize, s_root); |
fmt_scaled(st.f_blocks * st.f_frsize, s_total); |
fmt_scaled(st.f_blocks * st.f_frsize, s_total); |
printf(" Size Used Avail (root) %%Capacity\n"); |
printf(" Size Used Avail (root) %%Capacity\n"); |
printf("%7sB %7sB %7sB %7sB %3llu%%\n", |
printf("%7sB %7sB %7sB %7sB %s\n", |
s_total, s_used, s_avail, s_root, |
s_total, s_used, s_avail, s_root, s_dcapacity); |
(unsigned long long)(100 * (st.f_blocks - st.f_bfree) / |
|
st.f_blocks)); |
|
} else { |
} else { |
printf(" Size Used Avail " |
printf(" Size Used Avail " |
"(root) %%Capacity\n"); |
"(root) %%Capacity\n"); |
printf("%12llu %12llu %12llu %12llu %3llu%%\n", |
printf("%12llu %12llu %12llu %12llu %s\n", |
(unsigned long long)(st.f_frsize * st.f_blocks / 1024), |
(unsigned long long)(st.f_frsize * st.f_blocks / 1024), |
(unsigned long long)(st.f_frsize * |
(unsigned long long)(st.f_frsize * |
(st.f_blocks - st.f_bfree) / 1024), |
(st.f_blocks - st.f_bfree) / 1024), |
(unsigned long long)(st.f_frsize * st.f_bavail / 1024), |
(unsigned long long)(st.f_frsize * st.f_bavail / 1024), |
(unsigned long long)(st.f_frsize * st.f_bfree / 1024), |
(unsigned long long)(st.f_frsize * st.f_bfree / 1024), |
(unsigned long long)(100 * (st.f_blocks - st.f_bfree) / |
s_dcapacity); |
st.f_blocks)); |
|
} |
} |
return 0; |
return 0; |
} |
} |