15a1d355fSStephan Aßmus// Entry.cpp
25a1d355fSStephan Aßmus
35a1d355fSStephan Aßmus#include "Entry.h"
45a1d355fSStephan Aßmus
55a1d355fSStephan Aßmus#include "Directory.h"
65a1d355fSStephan Aßmus#include "FDManager.h"
75a1d355fSStephan Aßmus#include "Path.h"
85a1d355fSStephan Aßmus#include "Volume.h"
95a1d355fSStephan Aßmus#include "VolumeManager.h"
105a1d355fSStephan Aßmus
115a1d355fSStephan Aßmus// #pragma mark -
125a1d355fSStephan Aßmus
135a1d355fSStephan Aßmus// Entry
145a1d355fSStephan Aßmus
155a1d355fSStephan Aßmus// constructor
165a1d355fSStephan AßmusEntry::Entry(Volume* volume, Directory* directory, const char* name, Node* node)
175a1d355fSStephan Aßmus	: fVolume(volume),
185a1d355fSStephan Aßmus	  fDirectory(directory),
195a1d355fSStephan Aßmus	  fName(name),
205a1d355fSStephan Aßmus	  fNode(node),
215a1d355fSStephan Aßmus	  fDirEntryLink()
225a1d355fSStephan Aßmus{
235a1d355fSStephan Aßmus}
245a1d355fSStephan Aßmus
255a1d355fSStephan Aßmus// destructor
265a1d355fSStephan AßmusEntry::~Entry()
275a1d355fSStephan Aßmus{
285a1d355fSStephan Aßmus}
295a1d355fSStephan Aßmus
305a1d355fSStephan Aßmus// InitCheck
315a1d355fSStephan Aßmusstatus_t
325a1d355fSStephan AßmusEntry::InitCheck() const
335a1d355fSStephan Aßmus{
345a1d355fSStephan Aßmus	return (fName.GetLength() > 0 ? B_OK : B_NO_MEMORY);
355a1d355fSStephan Aßmus}
365a1d355fSStephan Aßmus
375a1d355fSStephan Aßmus// GetVolume
385a1d355fSStephan AßmusVolume*
395a1d355fSStephan AßmusEntry::GetVolume() const
405a1d355fSStephan Aßmus{
415a1d355fSStephan Aßmus	return fVolume;
425a1d355fSStephan Aßmus}
435a1d355fSStephan Aßmus
445a1d355fSStephan Aßmus// GetDirectory
455a1d355fSStephan AßmusDirectory*
465a1d355fSStephan AßmusEntry::GetDirectory() const
475a1d355fSStephan Aßmus{
485a1d355fSStephan Aßmus	return fDirectory;
495a1d355fSStephan Aßmus}
505a1d355fSStephan Aßmus
515a1d355fSStephan Aßmus// GetEntryRef
525a1d355fSStephan AßmusNoAllocEntryRef
535a1d355fSStephan AßmusEntry::GetEntryRef() const
545a1d355fSStephan Aßmus{
555a1d355fSStephan Aßmus	return NoAllocEntryRef(fVolume->GetID(), fDirectory->GetID(),
565a1d355fSStephan Aßmus		fName.GetString());
575a1d355fSStephan Aßmus}
585a1d355fSStephan Aßmus
595a1d355fSStephan Aßmus// GetVolumeID
605a1d355fSStephan Aßmusdev_t
615a1d355fSStephan AßmusEntry::GetVolumeID() const
625a1d355fSStephan Aßmus{
635a1d355fSStephan Aßmus	return fVolume->GetID();
645a1d355fSStephan Aßmus}
655a1d355fSStephan Aßmus
665a1d355fSStephan Aßmus// GetDirectoryID
675a1d355fSStephan Aßmusino_t
685a1d355fSStephan AßmusEntry::GetDirectoryID() const
695a1d355fSStephan Aßmus{
705a1d355fSStephan Aßmus	return fDirectory->GetID();
715a1d355fSStephan Aßmus}
725a1d355fSStephan Aßmus
735a1d355fSStephan Aßmus// GetName
745a1d355fSStephan Aßmusconst char*
755a1d355fSStephan AßmusEntry::GetName() const
765a1d355fSStephan Aßmus{
775a1d355fSStephan Aßmus	return fName.GetString();
785a1d355fSStephan Aßmus}
795a1d355fSStephan Aßmus
805a1d355fSStephan Aßmus// GetNode
815a1d355fSStephan AßmusNode*
825a1d355fSStephan AßmusEntry::GetNode() const
835a1d355fSStephan Aßmus{
845a1d355fSStephan Aßmus	return fNode;
855a1d355fSStephan Aßmus}
865a1d355fSStephan Aßmus
875a1d355fSStephan Aßmus// GetPath
885a1d355fSStephan Aßmusstatus_t
895a1d355fSStephan AßmusEntry::GetPath(Path* path)
905a1d355fSStephan Aßmus{
915a1d355fSStephan Aßmus	return VolumeManager::GetDefault()->GetPath(this, path);
925a1d355fSStephan Aßmus}
935a1d355fSStephan Aßmus
945a1d355fSStephan Aßmus// Exists
955a1d355fSStephan Aßmusbool
965a1d355fSStephan AßmusEntry::Exists() const
975a1d355fSStephan Aßmus{
985a1d355fSStephan Aßmus	NoAllocEntryRef entryRef(GetEntryRef());
995a1d355fSStephan Aßmus	BEntry bEntry;
1005a1d355fSStephan Aßmus	return (FDManager::SetEntry(&bEntry, &entryRef) == B_OK && bEntry.Exists());
1015a1d355fSStephan Aßmus}
1025a1d355fSStephan Aßmus
1035a1d355fSStephan Aßmus// IsActualEntry
1045a1d355fSStephan Aßmusbool
1055a1d355fSStephan AßmusEntry::IsActualEntry() const
1065a1d355fSStephan Aßmus{
1075a1d355fSStephan Aßmus	return (fName.GetLength() > 0 && fName != "." && fName != "..");
1085a1d355fSStephan Aßmus}
109