#ifndef NET_FS_VOLUME_SUPPORT_H
#define NET_FS_VOLUME_SUPPORT_H
#include <dirent.h>
#include "DebugSupport.h"
static inline
status_t
set_dirent_name(struct dirent* buffer, size_t bufferSize, const char* name,
int32 nameLen)
{
size_t length = (buffer->d_name + nameLen + 1) - (char*)buffer;
if (length <= bufferSize) {
memcpy(buffer->d_name, name, nameLen);
buffer->d_name[nameLen] = '\0';
buffer->d_reclen = length;
return B_OK;
} else {
RETURN_ERROR(B_BAD_VALUE);
}
}
static inline
bool
next_dirent(struct dirent*& buffer, size_t& bufferSize)
{
char* nextBuffer = (char*)buffer + buffer->d_reclen;
nextBuffer = (char*)(((addr_t)nextBuffer + 3) & ~0x3);
int32 len = nextBuffer - (char*)buffer;
if (len > (int32)bufferSize)
return false;
buffer->d_reclen = len;
buffer = (dirent*)nextBuffer;
bufferSize -= len;
return true;
}
#endif