size_t varyad_push(struct varyad **v, void *data, size_t size, int realloc) { if (_avail(*v) < size + sizeof(size_t)) { if (!realloc) { errno = ENOMEM; return 0; } else { struct varyad *const tmp = _realloc(*v); if (!tmp) { return 0; } else { *v = tmp; } } } const size_t off = (*v)->rank ? _size(*v, (*v)->rank-1) : 0; memcpy(_head(*v) + off, data, size); _set_size(*v, (*v)->rank++, off + size); return (*v)->size; }
void UfsFileBase::set_size(offset_type newsize) { std::unique_lock<std::mutex> fd_lock(fd_mutex_); return _set_size(newsize); }