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-07-15 13:03:22 +02:00
parent 84f50b1ce9
commit 8fb0681018
10 changed files with 56 additions and 168 deletions

View File

@ -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)
{

View File

@ -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);

View File

@ -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)
{

View File

@ -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;

View File

@ -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)

View File

@ -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);

View File

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

View File

@ -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;

View File

@ -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)
{

View File

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