aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Mignot <victor@vmignot.fr>2026-03-13 14:58:29 +0100
committerVictor Mignot <victor@vmignot.fr>2026-03-13 14:58:29 +0100
commite59f8574dc849c800f347e9c55064b933d0931cc (patch)
tree07fced0e4fdc8418293d36e5a458d1fc8b54c53e
parent340ca1a5bdf9a03819872f7370891b6bf5529441 (diff)
downloadfutiles-main.tar.gz
[WIP] add dfHEADmain
-rw-r--r--src/df.c61
-rw-r--r--src/main.c4
2 files changed, 64 insertions, 1 deletions
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 <getopt.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#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;
+}
diff --git a/src/main.c b/src/main.c
index 80f369d..fe026e4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -9,6 +9,7 @@ extern util_main true_main;
extern util_main false_main;
extern util_main basename_main;
extern util_main cat_main;
+extern util_main df_main;
typedef struct futiles_util futiles_util_t;
struct futiles_util {
@@ -22,7 +23,8 @@ const futiles_util_t utils[] = {
{ .name = "true", .main = true_main },
{ .name = "false", .main = false_main },
{ .name = "basename", .main = basename_main },
- { .name = "cat", .main = cat_main }
+ { .name = "cat", .main = cat_main },
+ { .name = "df", .main = df_main }
};
#define UTILS_NB (sizeof(utils) / sizeof(futiles_util_t))