From 0e3f14ee1deed21df4458d04aaf16ca764e5b5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 15 Jun 2004 17:05:34 +0000 Subject: [PATCH] Now return useful inode numbers. The BFS inode numbers match the ones from the real kernel file system (as there is no amiga_ffs add-on yet). The file systems now also return the module name of their kernel counterparts. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7995 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../loader/file_systems/amiga_ffs/Directory.cpp | 13 ++++++++++--- .../boot/loader/file_systems/amiga_ffs/Directory.h | 1 + .../boot/loader/file_systems/amiga_ffs/File.cpp | 7 +++++++ .../boot/loader/file_systems/amiga_ffs/File.h | 1 + .../boot/loader/file_systems/amiga_ffs/Volume.cpp | 1 + .../boot/loader/file_systems/bfs/Directory.cpp | 9 ++++++++- src/kernel/boot/loader/file_systems/bfs/Directory.h | 1 + src/kernel/boot/loader/file_systems/bfs/File.cpp | 13 ++++++++++--- src/kernel/boot/loader/file_systems/bfs/File.h | 1 + src/kernel/boot/loader/file_systems/bfs/bfs.cpp | 1 + 10 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.cpp b/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.cpp index 31ddd1beaf..75739b8168 100644 --- a/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.cpp +++ b/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.cpp @@ -134,7 +134,7 @@ Directory::GetNextNode(void *cookie, Node **_node) } -status_t +status_t Directory::Rewind(void *cookie) { HashIterator *iterator = (HashIterator *)cookie; @@ -144,7 +144,7 @@ Directory::Rewind(void *cookie) } -bool +bool Directory::IsEmpty() { int32 index; @@ -152,10 +152,17 @@ Directory::IsEmpty() } -status_t +status_t Directory::GetName(char *name, size_t size) const { return fNode.GetName(name, size); } + +ino_t +Directory::Inode() const +{ + return fNode.HeaderKey(); +} + } // namespace FFS diff --git a/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.h b/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.h index c3c99ecd34..bed55f8f32 100644 --- a/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.h +++ b/src/kernel/boot/loader/file_systems/amiga_ffs/Directory.h @@ -35,6 +35,7 @@ class Directory : public ::Directory { virtual bool IsEmpty(); virtual status_t GetName(char *name, size_t size) const; + virtual ino_t Inode() const; private: Volume &fVolume; diff --git a/src/kernel/boot/loader/file_systems/amiga_ffs/File.cpp b/src/kernel/boot/loader/file_systems/amiga_ffs/File.cpp index f173516dbd..269c6896ad 100644 --- a/src/kernel/boot/loader/file_systems/amiga_ffs/File.cpp +++ b/src/kernel/boot/loader/file_systems/amiga_ffs/File.cpp @@ -247,4 +247,11 @@ File::Size() const return fNode.Size(); } + +ino_t +File::Inode() const +{ + return fNode.HeaderKey(); +} + } // namespace FFS diff --git a/src/kernel/boot/loader/file_systems/amiga_ffs/File.h b/src/kernel/boot/loader/file_systems/amiga_ffs/File.h index 6edccab058..d7a0c13400 100644 --- a/src/kernel/boot/loader/file_systems/amiga_ffs/File.h +++ b/src/kernel/boot/loader/file_systems/amiga_ffs/File.h @@ -29,6 +29,7 @@ class File : public Node { virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; virtual int32 Type() const; virtual off_t Size() const; + virtual ino_t Inode() const; private: Volume &fVolume; diff --git a/src/kernel/boot/loader/file_systems/amiga_ffs/Volume.cpp b/src/kernel/boot/loader/file_systems/amiga_ffs/Volume.cpp index daa255b9c7..b94f62d016 100644 --- a/src/kernel/boot/loader/file_systems/amiga_ffs/Volume.cpp +++ b/src/kernel/boot/loader/file_systems/amiga_ffs/Volume.cpp @@ -118,6 +118,7 @@ amiga_ffs_get_file_system(boot::Partition *partition, ::Directory **_root) file_system_module_info gAmigaFFSFileSystemModule = { + "file_systems/amiga_ffs/v1", kPartitionTypeAmigaFFS, amiga_ffs_get_file_system }; diff --git a/src/kernel/boot/loader/file_systems/bfs/Directory.cpp b/src/kernel/boot/loader/file_systems/bfs/Directory.cpp index 69e2ac5358..d2134e2271 100644 --- a/src/kernel/boot/loader/file_systems/bfs/Directory.cpp +++ b/src/kernel/boot/loader/file_systems/bfs/Directory.cpp @@ -179,7 +179,7 @@ Directory::IsEmpty() } -status_t +status_t Directory::GetName(char *name, size_t size) const { if (fStream.inode_num == fStream.GetVolume().Root()) { @@ -190,4 +190,11 @@ Directory::GetName(char *name, size_t size) const return fStream.GetName(name, size); } + +ino_t +Directory::Inode() const +{ + return fStream.ID(); +} + } // namespace BFS diff --git a/src/kernel/boot/loader/file_systems/bfs/Directory.h b/src/kernel/boot/loader/file_systems/bfs/Directory.h index 0f5ec4f810..4645b8154c 100644 --- a/src/kernel/boot/loader/file_systems/bfs/Directory.h +++ b/src/kernel/boot/loader/file_systems/bfs/Directory.h @@ -35,6 +35,7 @@ class Directory : public ::Directory { virtual bool IsEmpty(); virtual status_t GetName(char *name, size_t size) const; + virtual ino_t Inode() const; private: Stream fStream; diff --git a/src/kernel/boot/loader/file_systems/bfs/File.cpp b/src/kernel/boot/loader/file_systems/bfs/File.cpp index b4cea6b7d4..626731d39f 100644 --- a/src/kernel/boot/loader/file_systems/bfs/File.cpp +++ b/src/kernel/boot/loader/file_systems/bfs/File.cpp @@ -62,24 +62,31 @@ File::WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize) } -status_t +status_t File::GetName(char *nameBuffer, size_t bufferSize) const { return fStream.GetName(nameBuffer, bufferSize); } -int32 +int32 File::Type() const { return S_IFREG; } -off_t +off_t File::Size() const { return fStream.Size(); } + +ino_t +File::Inode() const +{ + return fStream.ID(); +} + } // namespace BFS diff --git a/src/kernel/boot/loader/file_systems/bfs/File.h b/src/kernel/boot/loader/file_systems/bfs/File.h index 8cf0ab26cb..935e36ab57 100644 --- a/src/kernel/boot/loader/file_systems/bfs/File.h +++ b/src/kernel/boot/loader/file_systems/bfs/File.h @@ -29,6 +29,7 @@ class File : public Node { virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; virtual int32 Type() const; virtual off_t Size() const; + virtual ino_t Inode() const; protected: Stream fStream; diff --git a/src/kernel/boot/loader/file_systems/bfs/bfs.cpp b/src/kernel/boot/loader/file_systems/bfs/bfs.cpp index 580755f670..1c3a29d088 100644 --- a/src/kernel/boot/loader/file_systems/bfs/bfs.cpp +++ b/src/kernel/boot/loader/file_systems/bfs/bfs.cpp @@ -150,6 +150,7 @@ bfs_get_file_system(boot::Partition *partition, ::Directory **_root) file_system_module_info gBFSFileSystemModule = { + "file_systems/bfs/v1", kPartitionTypeBFS, bfs_get_file_system };