Kernel/userspace: Implement KD_LOADFONT and loadfont program
This commit is contained in:
parent
940fb0d1fd
commit
5dc441c4af
|
@ -44,6 +44,8 @@ namespace Kernel
|
|||
virtual BAN::ErrorOr<void> chmod_impl(mode_t) override;
|
||||
virtual BAN::ErrorOr<void> chown_impl(uid_t, gid_t) override;
|
||||
|
||||
virtual BAN::ErrorOr<long> ioctl_impl(int, void*) override;
|
||||
|
||||
virtual bool can_read_impl() const override { return m_output.flush; }
|
||||
virtual bool can_write_impl() const override { return true; }
|
||||
virtual bool has_error_impl() const override { return false; }
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <stropts.h>
|
||||
#include <sys/banan-os.h>
|
||||
#include <sys/sysmacros.h>
|
||||
|
||||
|
@ -122,6 +123,22 @@ namespace Kernel
|
|||
return {};
|
||||
}
|
||||
|
||||
BAN::ErrorOr<long> TTY::ioctl_impl(int request, void* argument)
|
||||
{
|
||||
switch (request)
|
||||
{
|
||||
case KD_LOADFONT:
|
||||
{
|
||||
auto absolute_path = TRY(Process::current().absolute_path_of(BAN::StringView(reinterpret_cast<const char*>(argument))));
|
||||
auto new_font = TRY(LibFont::Font::load(absolute_path));
|
||||
set_font(new_font);
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
return BAN::Error::from_errno(EINVAL);
|
||||
}
|
||||
}
|
||||
|
||||
void TTY::on_key_event(LibInput::KeyEvent event)
|
||||
{
|
||||
LockGuard _(m_mutex);
|
||||
|
|
|
@ -11,6 +11,7 @@ set(USERSPACE_PROJECTS
|
|||
id
|
||||
image
|
||||
init
|
||||
loadfont
|
||||
loadkeys
|
||||
ls
|
||||
meminfo
|
||||
|
|
|
@ -101,6 +101,8 @@ struct str_list
|
|||
#define I_SWROPT 28
|
||||
#define I_UNLINK 29
|
||||
|
||||
#define KD_LOADFONT 30
|
||||
|
||||
#define FLUSHR 1
|
||||
#define FLUSHRW 2
|
||||
#define FLUSHW 3
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
set(SOURCES
|
||||
main.cpp
|
||||
)
|
||||
|
||||
add_executable(loadfont ${SOURCES})
|
||||
banan_link_library(loadfont ban)
|
||||
banan_link_library(loadfont libc)
|
||||
|
||||
install(TARGETS loadfont)
|
|
@ -0,0 +1,30 @@
|
|||
#include <stdio.h>
|
||||
#include <stropts.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int usage(int ret, const char* argv0)
|
||||
{
|
||||
FILE* fout = ret ? stderr : stdout;
|
||||
fprintf(fout, "usage: %s FILE\n", argv0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (argc != 2)
|
||||
return usage(1, argv[0]);
|
||||
|
||||
if (!isatty(STDOUT_FILENO))
|
||||
{
|
||||
fprintf(stderr, "stdout is not tty\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (ioctl(STDOUT_FILENO, KD_LOADFONT, argv[1]) == -1)
|
||||
{
|
||||
perror("ioctl");
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue