Luna/kernel/src/fs/devices/Version.cpp
apio 97b7572933 VFS: Implement a new type of Node, VFS_DEVICE
This is used to differentiate normal files from devices.
2022-10-12 15:22:34 +02:00

26 lines
800 B
C++

#include "fs/devices/Version.h"
#include "config.h"
#include "std/stdio.h"
#include "std/stdlib.h"
#include "std/string.h"
VFS::Node* VersionDevice::create_new(const char* devname)
{
VFS::Node* dev = new VFS::Node;
dev->read_func = VersionDevice::read;
dev->inode = 0;
dev->length = strlen(moon_version()) + 5;
dev->type = VFS_DEVICE;
dev->flags = 0;
strncpy(dev->name, devname, sizeof(dev->name));
return dev;
}
ssize_t VersionDevice::read(VFS::Node* node, size_t offset, size_t size, char* buffer)
{
if (!node) return -1;
if (offset > node->length) return -1;
if (offset + size > node->length) { size = node->length - offset; }
snprintf(buffer, size + 1, "moon %s", moon_version()); // FIXME: Support offseting this read
return (ssize_t)size;
}