Skip to content

Commit 872975b

Browse files
committed
[DFS] add df cmd in msh and provide better display.
re-write for #1138
1 parent 90e8f95 commit 872975b

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

components/dfs/src/dfs_fs.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,9 +540,13 @@ FINSH_FUNCTION_EXPORT(mkfs, make a file system);
540540
int df(const char *path)
541541
{
542542
int result;
543+
int minor = 0;
543544
long long cap;
544545
struct statfs buffer;
545546

547+
int unit_index = 0;
548+
char *unit_str[] = {"KB", "MB", "GB"};
549+
546550
result = dfs_statfs(path ? path : NULL, &buffer);
547551
if (result != 0)
548552
{
@@ -551,8 +555,16 @@ int df(const char *path)
551555
}
552556

553557
cap = buffer.f_bsize * buffer.f_bfree / 1024;
554-
rt_kprintf("disk free: %d KB [ %d block, %d bytes per block ]\n",
555-
(unsigned long)cap, buffer.f_bfree, buffer.f_bsize);
558+
for (unit_index = 0; unit_index < 3; unit_index ++)
559+
{
560+
if (cap < 1024) break;
561+
562+
minor = (cap % 1024) * 10 / 1024; /* only one decimal point */
563+
cap = cap / 1024;
564+
}
565+
566+
rt_kprintf("disk free: %d.%d %s [ %d block, %d bytes per block ]\n",
567+
(unsigned long)cap, minor, unit_str[unit_index], buffer.f_bfree, buffer.f_bsize);
556568
return 0;
557569
}
558570
FINSH_FUNCTION_EXPORT(df, get disk free);

components/finsh/msh_cmd.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,29 @@ int cmd_mkfs(int argc, char **argv)
255255
}
256256
FINSH_FUNCTION_EXPORT_ALIAS(cmd_mkfs, __cmd_mkfs, format disk with file system);
257257

258+
extern int df(const char *path);
259+
int cmd_df(int argc, char** argv)
260+
{
261+
if (argc != 2)
262+
{
263+
df("/");
264+
}
265+
else
266+
{
267+
if ((strcmp(argv[1], "--help") == 0) || (strcmp(argv[1], "-h") == 0))
268+
{
269+
rt_kprintf("df [path]\n");
270+
}
271+
else
272+
{
273+
df(argv[1]);
274+
}
275+
}
276+
277+
return 0;
278+
}
279+
FINSH_FUNCTION_EXPORT_ALIAS(cmd_df, __cmd_df, disk free);
280+
258281
int cmd_echo(int argc, char** argv)
259282
{
260283
if (argc == 2)

0 commit comments

Comments
 (0)