blob: ff34d006c3236634742ee39dcc9cd85e9f634bd3 [file] [log] [blame]
#include <sys/mman.h>
#include <stdplus/fd/managed.hpp>
#include <stdplus/fd/ops.hpp>
#include <stdplus/util/cexec.hpp>
#include <algorithm>
#include <string_view>
namespace stdplus::fd
{
inline ManagedFd makeMemfd(std::string_view contents)
{
auto fd = ManagedFd(CHECK_ERRNO(memfd_create("test", 0), "memfd_create"));
write(fd, contents);
lseek(fd, 0, Whence::Set);
return fd;
}
constexpr auto readSv(std::string_view s) noexcept
{
return [s](std::span<std::byte> buf) {
auto end = std::copy_n(reinterpret_cast<const std::byte*>(s.data()),
std::min(buf.size(), s.size()), buf.begin());
return std::span(buf.begin(), end);
};
}
} // namespace stdplus::fd