From 8efb3a26d2e9794dc02d84cd449430eb82cbae13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 12 Sep 2003 07:33:42 +0000 Subject: [PATCH] Add a simple Node implementation for BFS files (and everything else that needs access to the stream directly). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4654 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../boot/loader/file_systems/bfs/File.cpp | 79 +++++++++++++++++++ .../boot/loader/file_systems/bfs/File.h | 39 +++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/kernel/boot/loader/file_systems/bfs/File.cpp create mode 100644 src/kernel/boot/loader/file_systems/bfs/File.h diff --git a/src/kernel/boot/loader/file_systems/bfs/File.cpp b/src/kernel/boot/loader/file_systems/bfs/File.cpp new file mode 100644 index 0000000000..30e3e20840 --- /dev/null +++ b/src/kernel/boot/loader/file_systems/bfs/File.cpp @@ -0,0 +1,79 @@ +/* +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Distributed under the terms of the OpenBeOS License. +*/ + + +#include "File.h" + + +namespace BFS { + +File::File(Volume &volume, block_run run) + : + fStream(volume, run) +{ +} + + +File::File(Volume &volume, off_t id) + : + fStream(volume, id) +{ +} + + +File::File(const Stream &stream) + : + fStream(stream) +{ +} + + +File::~File() +{ +} + + +status_t +File::InitCheck() +{ + return fStream.InitCheck(); +} + + +ssize_t +File::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize) +{ + return fStream.ReadAt(pos, (uint8 *)buffer, &bufferSize); +} + + +ssize_t +File::WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize) +{ + return EROFS; +} + + +status_t +File::GetName(char *nameBuffer, size_t bufferSize) const +{ + return B_ERROR; +} + + +int32 +File::Type() const +{ + return S_IFREG; +} + + +off_t +File::Size() const +{ + return fStream.Size(); +} + +} // namespace BFS diff --git a/src/kernel/boot/loader/file_systems/bfs/File.h b/src/kernel/boot/loader/file_systems/bfs/File.h new file mode 100644 index 0000000000..55b34ee4a1 --- /dev/null +++ b/src/kernel/boot/loader/file_systems/bfs/File.h @@ -0,0 +1,39 @@ +/* +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Distributed under the terms of the OpenBeOS License. +*/ +#ifndef FILE_H +#define FILE_H + + +#include + +#include "Volume.h" +#include "Stream.h" + + +namespace BFS { + +class File : public Node { + public: + File(Volume &volume, block_run run); + File(Volume &volume, off_t id); + File(const Stream &stream); + virtual ~File(); + + status_t InitCheck(); + + virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize); + virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize); + + virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; + virtual int32 Type() const; + virtual off_t Size() const; + + private: + Stream fStream; +}; + +} // namespace BFS + +#endif /* FILE_H */