A BNode represents a chunk of data in the filesystem. More...
Inherits BStatable.
Inherited by BDirectory, BFile, and BSymLink.
Public Member Functions | |
BNode () | |
Creates an uninitialized BNode object. | |
BNode (const BDirectory *dir, const char *path) | |
Creates a BNode object and initializes it to the entry referred to by the specified path rooted in the specified directory. | |
BNode (const BEntry *entry) | |
Creates a BNode object and initializes it to the specified filesystem entry. | |
BNode (const BNode &node) | |
Creates a copy of the given BNode. | |
BNode (const char *path) | |
Creates a BNode object and initializes it to the entry referred to by the specified path. | |
BNode (const entry_ref *ref) | |
Creates a BNode object and initializes it to the specified entry_ref. | |
virtual | ~BNode () |
Frees all resources associated with the BNode. | |
int | Dup () |
Gets the POSIX file descriptor referred to by this node. | |
virtual status_t | GetStat (struct stat *st) const |
Fills in the given stat structure with the stat() information for this object. | |
Constructor Helpers | |
status_t | InitCheck () const |
Checks whether the object has been properly initialized or not. | |
status_t | SetTo (const entry_ref *ref) |
Initializes the object to the specified entry_ref. | |
status_t | SetTo (const BEntry *entry) |
Initializes the object to the specified filesystem entry. | |
status_t | SetTo (const char *path) |
Initializes the object to the specified path. | |
status_t | SetTo (const BDirectory *dir, const char *path) |
Initializes the object to the entry referred by the specified path relative to the the specified directory. | |
void | Unset () |
Returns the object to an uninitialized state. | |
Locking Methods | |
status_t | Lock () |
Attains an exclusive lock on the data referred to by this node so that it may not be modified by any other objects or methods. | |
status_t | Unlock () |
Unlocks the date referred to by this node. | |
status_t | Sync () |
Immediately performs any pending disk actions on the node. | |
Attribute Methods | |
ssize_t | WriteAttr (const char *name, type_code type, off_t offset, const void *buffer, size_t length) |
Writes data from a buffer to an attribute. | |
ssize_t | ReadAttr (const char *name, type_code type, off_t offset, void *buffer, size_t length) const |
Reads data from an attribute into buffer. | |
status_t | RemoveAttr (const char *name) |
Deletes the attribute given by name. | |
status_t | RenameAttr (const char *oldName, const char *newName) |
Moves the attribute given by oldName to newName. | |
status_t | GetAttrInfo (const char *name, struct attr_info *info) const |
Fills in the pre-allocated attr_info struct pointed to by info with information about the attribute specified by name. | |
status_t | GetNextAttrName (char *buffer) |
Copies the name of the attribute into buffer and then advances the pointer to the next attribute. | |
status_t | RewindAttrs () |
Resets the object's attribute pointer to the first attribute in the list. | |
status_t | WriteAttrString (const char *name, const BString *data) |
Writes the specified string to the specified attribute, clobbering any previous data. | |
status_t | ReadAttrString (const char *name, BString *result) const |
Reads the data of the specified attribute into the pre-allocated result. | |
Operators | |
BNode & | operator= (const BNode &node) |
Initializes the object as a copy of other. | |
bool | operator== (const BNode &node) const |
Tests whether this and the supplied BNode object are equal. | |
bool | operator!= (const BNode &node) const |
Tests whether this and the supplied BNode object are not equal. | |
Public Member Functions inherited from BStatable | |
status_t | GetAccessTime (time_t *atime) const |
Fills out atime with the access time of the node. | |
status_t | GetCreationTime (time_t *ctime) const |
Fills out ctime with the creation time of the node. | |
status_t | GetGroup (gid_t *group) const |
Fills out the node's GID into group. | |
status_t | GetModificationTime (time_t *mtime) const |
Fills out mtime with the last modification time of the node. | |
status_t | GetNodeRef (node_ref *ref) const |
Fills out ref with the node_ref of the node. | |
status_t | GetOwner (uid_t *owner) const |
Fills out the node's UID into owner. | |
status_t | GetPermissions (mode_t *permissions) const |
Fills out perms with the permissions of the node. | |
status_t | GetSize (off_t *size) const |
Fills out the size of the node's data (not counting attributes) into size. | |
virtual status_t | GetStat (struct stat *stat) const =0 |
Fills out the stat structure for the node. | |
status_t | GetVolume (BVolume *volume) const |
Fills out vol with the the volume that the node lives on. | |
bool | IsDirectory () const |
Returns whether or not the node is a directory. | |
bool | IsFile () const |
Returns whether or not the node is a file. | |
bool | IsSymLink () const |
Returns whether or not the node is a symbolic link. | |
status_t | SetAccessTime (time_t atime) |
Sets the node's access time to atime. | |
status_t | SetCreationTime (time_t ctime) |
Sets the node's creation time to ctime. | |
status_t | SetGroup (gid_t group) |
Sets the node's GID to group. | |
status_t | SetModificationTime (time_t mtime) |
Sets the node's last modification time to mtime. | |
status_t | SetOwner (uid_t owner) |
Sets the node's UID to owner. | |
status_t | SetPermissions (mode_t permissions) |
Sets the node's permissions to perms. | |
A BNode represents a chunk of data in the filesystem.
The BNode class provides an interface for manipulating the data and attributes belonging to filesystem entries. The BNode is unaware of the name that refers to it in the filesystem (i.e. its entry), instead, a BNode is concerned solely with the entry's data and attributes.
BNode::BNode | ( | const entry_ref * | ref | ) |
BNode::BNode | ( | const BEntry * | entry | ) |
BNode::BNode | ( | const char * | path | ) |
Creates a BNode object and initializes it to the entry referred to by the specified path.
path | The path referring to the node. |
BNode::BNode | ( | const BDirectory * | dir, |
const char * | path | ||
) |
Creates a BNode object and initializes it to the entry referred to by the specified path rooted in the specified directory.
dir | The base BDirectory. |
path | The path name relative to dir. |
BNode::BNode | ( | const BNode & | other | ) |
|
virtual |
Frees all resources associated with the BNode.
int BNode::Dup | ( | ) |
Gets the POSIX file descriptor referred to by this node.
Remember to call close() on the file descriptor when you're through with it.
status_t BNode::GetAttrInfo | ( | const char * | name, |
struct attr_info * | info | ||
) | const |
Fills in the pre-allocated attr_info struct pointed to by info with information about the attribute specified by name.
name | The name of the attribute. |
info | The attr_info structure to be filled in. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | name was NULL . |
B_FILE_ERROR | The object was not initialized. |
B_ENTRY_NOT_FOUND | The node had no attribute name. |
status_t BNode::GetNextAttrName | ( | char * | buffer | ) |
Copies the name of the attribute into buffer
and then advances the pointer to the next attribute.
The name of the node is first copied into buffer, which should be at least B_ATTR_NAME_LENGTH
characters long. The copied node name is \0 terminated. Once the name is copied the attribute list pointer is advanced to the next attribute in the list. When GetNextAttrName() reaches the end of the list it returns B_ENTRY_NOT_FOUND
.
buffer | A buffer to copy the name of the attribute into. |
B_OK
on success or an error code otherwise. B_OK | The Attribute name was copied and there are more attribute names to copy. |
B_BAD_VALUE | passed in buffer was NULL . |
B_FILE_ERROR | The object was not initialized. |
B_ENTRY_NOT_FOUND | There were no more attributes, the last attribute name had already been copied. |
|
virtual |
Fills in the given stat structure with the stat()
information for this object.
stat | A pointer to a stat structure to be filled in. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | NULL stat. |
Implements BStatable.
status_t BNode::InitCheck | ( | ) | const |
Checks whether the object has been properly initialized or not.
B_OK
if the object has been properly initialized, or B_NO_INIT
otherwise.status_t BNode::Lock | ( | ) |
Attains an exclusive lock on the data referred to by this node so that it may not be modified by any other objects or methods.
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_FILE_ERROR | The object is not initialized. |
B_BUSY | The node is already locked. |
bool BNode::operator!= | ( | const BNode & | node | ) | const |
bool BNode::operator== | ( | const BNode & | node | ) | const |
ssize_t BNode::ReadAttr | ( | const char * | attr, |
type_code | type, | ||
off_t | offset, | ||
void * | buffer, | ||
size_t | length | ||
) | const |
Reads data from an attribute into buffer.
Reads length bytes of data from the attribute given by name into buffer. type and offset are currently ignored.
attr | The name of the attribute. |
type | The type of the attribute (currently ignored). |
offset | The index from which to read the data (currently ignored). |
buffer | The buffer for the data to be read. |
length | The number of bytes to be read. |
B_BAD_VALUE | attr or buffer was NULL . |
B_FILE_ERROR | The object was not initialized. |
B_ENTRY_NOT_FOUND | The node had no attribute attr. |
Reads the data of the specified attribute into the pre-allocated result.
name | the name of the attribute. |
result | the BString to be set to the value of the attribute. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | name or result was NULL . |
B_FILE_ERROR | The object was not initialized. |
B_ENTRY_NOT_FOUND | The node had no attribute attr. |
status_t BNode::RemoveAttr | ( | const char * | name | ) |
Deletes the attribute given by name.
name | The name of the attribute to remove. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | name was NULL . |
B_FILE_ERROR | The object was not initialized or the node it referred to was read-only. |
B_ENTRY_NOT_FOUND | The node had no attribute name. |
B_NOT_ALLOWED | The node resided on a read-only volume. |
status_t BNode::RenameAttr | ( | const char * | oldName, |
const char * | newName | ||
) |
Moves the attribute given by oldName to newName.
If newName already exists, the data is clobbered.
oldName | The name of the attribute to be renamed. |
newName | The new name for the attribute. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | oldName or newName was NULL . |
B_FILE_ERROR | The object was not initialized or the node it referred to was read only. |
B_ENTRY_NOT_FOUND | The node had no attribute oldName. |
B_NOT_ALLOWED | The node resided on a read-only volume. |
status_t BNode::RewindAttrs | ( | ) |
Resets the object's attribute pointer to the first attribute in the list.
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_FILE_ERROR | Some other error occurred. |
status_t BNode::SetTo | ( | const BDirectory * | dir, |
const char * | path | ||
) |
Initializes the object to the entry referred by the specified path relative to the the specified directory.
dir | The base BDirectory. |
path | The path name relative to dir. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | dir was NULL . |
B_ENTRY_NOT_FOUND | The entry could not be found. |
B_BUSY | The entry was locked. |
Initializes the object to the specified filesystem entry.
entry | The BEntry representing the entry. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | entry was NULL . |
B_ENTRY_NOT_FOUND | The entry could not be found. |
B_BUSY | The entry was locked. |
status_t BNode::SetTo | ( | const char * | path | ) |
Initializes the object to the specified path.
path | The entry's path name; path can be relative or absolute, and can contain "." and ".." elements. If path is relative, it uses the current working directory as the base directory. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | path was NULL . |
B_ENTRY_NOT_FOUND | The entry could not be found. |
B_BUSY | The entry of was locked. |
Initializes the object to the specified entry_ref.
ref | The entry_ref referring to the entry. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | ref was NULL . |
B_ENTRY_NOT_FOUND | The entry could not be found. |
B_BUSY | The entry was locked. |
status_t BNode::Sync | ( | ) |
Immediately performs any pending disk actions on the node.
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_FILE_ERROR | Something went wrong. |
status_t BNode::Unlock | ( | ) |
Unlocks the date referred to by this node.
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_FILE_ERROR | The object is not initialized. |
B_BAD_VALUE | The node is not locked. |
void BNode::Unset | ( | ) |
Returns the object to an uninitialized state.
ssize_t BNode::WriteAttr | ( | const char * | attr, |
type_code | type, | ||
off_t | offset, | ||
const void * | buffer, | ||
size_t | length | ||
) |
Writes data from a buffer to an attribute.
Write length bytes of data from buffer to the attribute specified by name after erasing any data that existed previously. The type specified by type is remembered, and may be queried with GetAttrInfo(). The value of offset is currently ignored.
attr | The name of the attribute. |
type | The type of the attribute. |
offset | The index at which to write the data (currently ignored). |
buffer | The buffer containing the data to be written. |
length | The number of bytes to be written. |
B_BAD_VALUE | attr or buffer was NULL . |
B_FILE_ERROR | The object was not initialized or the node it refers to was read only. |
B_NOT_ALLOWED | The node resides on a read only volume. |
B_DEVICE_FULL | There was insufficient disk space to complete the operation. |
B_NO_MEMORY | There was insufficient memory to complete the operation. |
Writes the specified string to the specified attribute, clobbering any previous data.
name | the name of the attribute. |
data | the BString to be written to the attribute. |
B_OK
on success or an error code otherwise. B_OK | Everything went fine. |
B_BAD_VALUE | name or data was NULL . |
B_FILE_ERROR | The object was not initialized or the node it referred to was read-only. |
B_NOT_ALLOWED | The node resided on a read-only volume. |
B_DEVICE_FULL | There was insufficient disk space to complete the operation. |
B_NO_MEMORY | There was insufficient memory to complete the operation. |