diff --git a/base/scripts/fmtdisk.tb b/base/scripts/fmtdisk.tb new file mode 100644 index 0000000..fb7a720 --- /dev/null +++ b/base/scripts/fmtdisk.tb @@ -0,0 +1 @@ +$fs fmt -dev $0 -fs $1 diff --git a/user/fs/fmt.c b/user/fs/fmt.c new file mode 100644 index 0000000..7708e1b --- /dev/null +++ b/user/fs/fmt.c @@ -0,0 +1,36 @@ +#include +#include +#include + +struct { + char *devname; + char *fstype; +} FS_FMT_CONFIG = {0}; + +static Arg ARGS[] = { + ARG("-dev", ARG_STRING, &FS_FMT_CONFIG.devname), + ARG("-fs", ARG_STRING, &FS_FMT_CONFIG.fstype), + ARG_END(), +}; + +void fs_fmt(void) { + int32_t ret; + if ((ret = parse_args(args()+1, argslen()-1, ARGS)) < 0) { + uprintf("fs fmt: Could not parse args: %d\n", ret); + } + + Dev_t dev; + ret = dev_gethandle(&dev, FS_FMT_CONFIG.devname); + if (ret != E_OK) { + uprintf("fs: device %s not found\n", FS_FMT_CONFIG.devname); + return; + } + + ret = vfsmount("fmt-dummy", FS_FMT_CONFIG.fstype, &dev, true); + if (ret != E_OK) { + uprintf("fs: mount error %s\n", ERRSTRING(ret)); + return; + } + + /* vfsunmount("fmt-dummy"); */ +} diff --git a/user/fs/main.c b/user/fs/main.c index 3b97590..01c0b2c 100644 --- a/user/fs/main.c +++ b/user/fs/main.c @@ -4,7 +4,8 @@ #define CMDS(X) \ X(fetch) X(mkf) X(mkd) \ - X(tree) X(mount) X(del) + X(tree) X(mount) X(del) \ + X(fmt) void main(void) { if (argslen() == 0) {