/
nt_df.cpp
28 lines (24 loc) · 853 Bytes
/
nt_df.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// (c) Chris F. Ravenscroft, VoilaWeb. For licensing information, check attached LICENSE file.
#include "nativetools.hpp"
int nt_df(int argc, char** argv, char** env) {
int ret = EXIT_SUCCESS;
if(argc != 2) {
ret = nt_error("Wrong # of arguments for %s: %d", __FUNCTION__, argc);
}
else {
char *s = argv[1];
struct statfs st;
if (statfs(s, &st) < 0) {
ret = EXIT_FAILURE;
}
else {
// D,total,used,available,block_size
printf("D,%lld,%lld,%lld,%d",
((long long)st.f_blocks * (long long)st.f_bsize) / 1024,
((long long)(st.f_blocks - (long long)st.f_bfree) * st.f_bsize) / 1024,
((long long)st.f_bfree * (long long)st.f_bsize) / 1024,
(int) st.f_bsize);
}
}
return ret;
}