Implement more virtuals in Node and Directory

* Node: Add default implementations for UserID(), GroupID(),
  OpenAttributeDirectory(), and OpenAttribute().
* Directory: Add default implementations for Mode() and FileSize().
* Remove the respective hook implementations in the PackageLink*
  classes.
This commit is contained in:
Ingo Weinhold
2011-11-25 06:19:40 +01:00
parent 84f50b1ce9
commit 8fb0681018
10 changed files with 56 additions and 168 deletions
@@ -41,6 +41,20 @@ Directory::Init(Directory* parent, const char* name, uint32 flags)
}
mode_t
Directory::Mode() const
{
return S_IFDIR | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
}
off_t
Directory::FileSize() const
{
return 0;
}
status_t
Directory::Read(off_t offset, void* buffer, size_t* bufferSize)
{
@@ -30,6 +30,9 @@ public:
virtual status_t Init(Directory* parent, const char* name,
uint32 flags);
virtual mode_t Mode() const;
virtual off_t FileSize() const;
virtual status_t Read(off_t offset, void* buffer,
size_t* bufferSize);
virtual status_t Read(io_request* request);
@@ -10,6 +10,7 @@
#include <string.h>
#include "DebugSupport.h"
#include "EmptyAttributeDirectoryCookie.h"
Node::Node(ino_t id)
@@ -79,6 +80,40 @@ Node::SetParent(Directory* parent)
}
uid_t
Node::UserID() const
{
return 0;
}
gid_t
Node::GroupID() const
{
return 0;
}
status_t
Node::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie)
{
AttributeDirectoryCookie* cookie
= new(std::nothrow) EmptyAttributeDirectoryCookie;
if (cookie == NULL)
return B_NO_MEMORY;
_cookie = cookie;
return B_OK;
}
status_t
Node::OpenAttribute(const char* name, int openMode, AttributeCookie*& _cookie)
{
return B_ENTRY_NOT_FOUND;
}
status_t
Node::IndexAttribute(AttributeIndexer* indexer)
{
@@ -67,8 +67,8 @@ public:
void SetParent(Directory* parent);
virtual mode_t Mode() const = 0;
virtual uid_t UserID() const = 0;
virtual gid_t GroupID() const = 0;
virtual uid_t UserID() const;
virtual gid_t GroupID() const;
virtual timespec ModifiedTime() const = 0;
virtual off_t FileSize() const = 0;
@@ -80,9 +80,9 @@ public:
size_t* bufferSize) = 0;
virtual status_t OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie) = 0;
AttributeDirectoryCookie*& _cookie);
virtual status_t OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie) = 0;
AttributeCookie*& _cookie);
virtual status_t IndexAttribute(AttributeIndexer* indexer);
virtual void* IndexCookieForAttribute(const char* name) const;
@@ -12,7 +12,6 @@
#include <AutoDeleter.h>
#include "EmptyAttributeDirectoryCookie.h"
#include "DebugSupport.h"
#include "PackageLinksListener.h"
#include "Utils.h"
@@ -86,63 +85,12 @@ PackageLinkDirectory::Init(Directory* parent, const char* name, uint32 flags)
}
mode_t
PackageLinkDirectory::Mode() const
{
return S_IFDIR | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
}
uid_t
PackageLinkDirectory::UserID() const
{
return 0;
}
gid_t
PackageLinkDirectory::GroupID() const
{
return 0;
}
timespec
PackageLinkDirectory::ModifiedTime() const
{
return fModifiedTime;
}
off_t
PackageLinkDirectory::FileSize() const
{
return 0;
}
status_t
PackageLinkDirectory::OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie)
{
AttributeDirectoryCookie* cookie
= new(std::nothrow) EmptyAttributeDirectoryCookie;
if (cookie == NULL)
return B_NO_MEMORY;
_cookie = cookie;
return B_OK;
}
status_t
PackageLinkDirectory::OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie)
{
return B_ENTRY_NOT_FOUND;
}
void
PackageLinkDirectory::AddPackage(Package* package,
PackageLinksListener* listener)
@@ -23,16 +23,7 @@ public:
virtual status_t Init(Directory* parent, const char* name,
uint32 flags);
virtual mode_t Mode() const;
virtual uid_t UserID() const;
virtual gid_t GroupID() const;
virtual timespec ModifiedTime() const;
virtual off_t FileSize() const;
virtual status_t OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie);
virtual status_t OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie);
void AddPackage(Package* package,
PackageLinksListener* listener);
@@ -10,7 +10,6 @@
#include <NodeMonitor.h>
#include "EmptyAttributeDirectoryCookie.h"
#include "DebugSupport.h"
#include "NodeListener.h"
#include "PackageLinksListener.h"
@@ -116,20 +115,6 @@ PackageLinkSymlink::Mode() const
}
uid_t
PackageLinkSymlink::UserID() const
{
return 0;
}
gid_t
PackageLinkSymlink::GroupID() const
{
return 0;
}
timespec
PackageLinkSymlink::ModifiedTime() const
{
@@ -167,24 +152,3 @@ PackageLinkSymlink::ReadSymlink(void* buffer, size_t* bufferSize)
return B_OK;
}
status_t
PackageLinkSymlink::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie)
{
AttributeDirectoryCookie* cookie
= new(std::nothrow) EmptyAttributeDirectoryCookie;
if (cookie == NULL)
return B_NO_MEMORY;
_cookie = cookie;
return B_OK;
}
status_t
PackageLinkSymlink::OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie)
{
return B_ENTRY_NOT_FOUND;
}
@@ -22,8 +22,6 @@ public:
PackageLinksListener* listener);
virtual mode_t Mode() const;
virtual uid_t UserID() const;
virtual gid_t GroupID() const;
virtual timespec ModifiedTime() const;
virtual off_t FileSize() const;
@@ -33,11 +31,6 @@ public:
virtual status_t ReadSymlink(void* buffer, size_t* bufferSize);
virtual status_t OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie);
virtual status_t OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie);
private:
struct OldAttributes;
@@ -8,7 +8,6 @@
#include <AutoDeleter.h>
#include "EmptyAttributeDirectoryCookie.h"
#include "DebugSupport.h"
#include "PackageLinkDirectory.h"
#include "PackageLinksListener.h"
@@ -30,27 +29,6 @@ PackageLinksDirectory::~PackageLinksDirectory()
}
mode_t
PackageLinksDirectory::Mode() const
{
return S_IFDIR | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
}
uid_t
PackageLinksDirectory::UserID() const
{
return 0;
}
gid_t
PackageLinksDirectory::GroupID() const
{
return 0;
}
timespec
PackageLinksDirectory::ModifiedTime() const
{
@@ -58,35 +36,6 @@ PackageLinksDirectory::ModifiedTime() const
}
off_t
PackageLinksDirectory::FileSize() const
{
return 0;
}
status_t
PackageLinksDirectory::OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie)
{
AttributeDirectoryCookie* cookie
= new(std::nothrow) EmptyAttributeDirectoryCookie;
if (cookie == NULL)
return B_NO_MEMORY;
_cookie = cookie;
return B_OK;
}
status_t
PackageLinksDirectory::OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie)
{
return B_ENTRY_NOT_FOUND;
}
status_t
PackageLinksDirectory::AddPackage(Package* package)
{
@@ -18,16 +18,7 @@ public:
PackageLinksDirectory();
virtual ~PackageLinksDirectory();
virtual mode_t Mode() const;
virtual uid_t UserID() const;
virtual gid_t GroupID() const;
virtual timespec ModifiedTime() const;
virtual off_t FileSize() const;
virtual status_t OpenAttributeDirectory(
AttributeDirectoryCookie*& _cookie);
virtual status_t OpenAttribute(const char* name, int openMode,
AttributeCookie*& _cookie);
void SetListener(PackageLinksListener* listener)
{ fListener = listener; }