From e59f8574dc849c800f347e9c55064b933d0931cc Mon Sep 17 00:00:00 2001 From: Victor Mignot Date: Fri, 13 Mar 2026 14:58:29 +0100 Subject: [WIP] add df --- src/df.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/df.c (limited to 'src/df.c') diff --git a/src/df.c b/src/df.c new file mode 100644 index 0000000..9f9e275 --- /dev/null +++ b/src/df.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include + +#define DF_USAGE "Usage: df [-k] [-P] [file...]" +#define FS_NAME_LEN 256 +#define HEADER_FMT "Filesystem %u-blocks Used Available Capacity Mounted on\n" + +struct fs_results { + const char *name; + unsigned int total; + unsigned int used; + const char *root; +}; + +static void display_results(struct fs_results results[], size_t results_nb, bool display_in_kb) { + unsigned int block_size = display_in_kb ? 1024 : 512; + printf(HEADER_FMT, block_size); + + for (size_t i = 0; i < results_nb; i++) { + struct fs_results cur = results[i]; + unsigned int available = cur.total - cur.used; + unsigned int capacity = (cur.used / (float) cur.total) * 100; + printf("%s %d %d %d %d%% %s\n", cur.name, cur.total, cur.used, available, capacity, cur.root); + } + +} + +int df_main(int argc, char *argv[]) { + bool display_in_kb = false; + int ret = 0; + + while ((ret = getopt(argc, argv, "kP")) != -1) { + switch (ret) { + case 'k': + display_in_kb = true; + break; + + case 'P': + break; + + default: + fputs(DF_USAGE, stderr); + return EXIT_FAILURE; + } + } + + struct fs_results results[] = { + { + .name = "test", + .total = 872986112, + .used = 95206402, + .root = "/dev/test", + } + }; + + display_results(results, 1, false); + + return 0; +} -- cgit v1.2.3