mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[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:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user