[6s] Allow 6s to know about filesystems

Added a j6_proto_vfs_tag/_get_tag pair of messages to the VFS protocol
to allow filesystems to label themselves, and gave 6s the concept of
current fs and current working directory.
This commit is contained in:
Justin C. Miller
2024-04-30 22:23:04 -07:00
parent 29332cbd45
commit eb62588b79
10 changed files with 195 additions and 43 deletions

View File

@@ -1,23 +1,45 @@
#include <edit/line.h>
#include <util/format.h>
#include "commands.h"
#include "shell.h"
static void
help(edit::source &s)
fslist(shell &s)
{
char line[100];
util::counted<char> output { line, sizeof(line) };
for (auto &f : s.filesystems()) {
size_t len = util::format(output, "%s\r\n", f.tag);
s.write(line, len);
}
}
static void
help(shell &s)
{
char line[100];
util::counted<char> output { line, sizeof(line) };
for (unsigned i = 0; i < g_builtins_count; ++i) {
char line[100];
util::counted<char> output { line, sizeof(line) };
builtin &cmd = g_builtins[i];
size_t len = util::format(output, "%20s - %s\r\n", cmd.name(), cmd.description());
s.write(line, len);
}
}
static void
version(edit::source &s)
pwd(shell &s)
{
char line[100];
util::counted<char> output { line, sizeof(line) };
size_t len = util::format(output, "%s:%s\r\n", s.cfs(), s.cwd());
s.write(line, len);
}
static void
version(shell &s)
{
static const char *gv = GIT_VERSION;
@@ -29,7 +51,9 @@ version(edit::source &s)
}
builtin g_builtins[] = {
{ "help", "list availble commands", help },
{ "fslist", "list available filesystems", fslist },
{ "help", "list available commands", help },
{ "pwd", "print current working directory", pwd },
{ "version", "print current jsix version", version },
};
size_t g_builtins_count = sizeof(g_builtins) / sizeof(g_builtins[0]);