#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; }