2022-10-11 17:21:16 +00:00
|
|
|
#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()
|
|
|
|
{
|
|
|
|
VFS::Node* dev = new VFS::Node;
|
|
|
|
dev->read_func = VersionDevice::read;
|
|
|
|
dev->inode = 0;
|
|
|
|
dev->length = strlen(moon_version()) + 5;
|
|
|
|
dev->type = VFS_FILE;
|
2022-10-11 19:04:14 +00:00
|
|
|
dev->flags = 0;
|
2022-10-11 17:21:16 +00:00
|
|
|
strncpy(dev->name, "version", 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;
|
|
|
|
}
|