// VolumeSupport.h #ifndef NET_FS_VOLUME_SUPPORT_H #define NET_FS_VOLUME_SUPPORT_H #include #include "DebugSupport.h" // set_dirent_name 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); } } // next_dirent static inline bool next_dirent(struct dirent*& buffer, size_t& bufferSize) { // align char* nextBuffer = (char*)buffer + buffer->d_reclen; nextBuffer = (char*)(((addr_t)nextBuffer + 3) & ~0x3); // check, if the buffer is at least large enough to align the current entry int32 len = nextBuffer - (char*)buffer; if (len > (int32)bufferSize) return false; buffer->d_reclen = len; buffer = (dirent*)nextBuffer; bufferSize -= len; return true; } #endif // NET_FS_VOLUME_SUPPORT_H