/* * This source code is released into the public domain. */ #include "argv.hh" namespace lfjail { argv::~argv() { for (auto *arg : _args) delete[] arg; } auto argv::_add_arg(this argv &self, std::string_view arg) -> void { // Create a nul-terminated C string. auto ptr = std::make_unique(arg.size() + 1); std::ranges::copy(arg, ptr.get()); ptr[arg.size()] = '\0'; // Ensure we won't throw when emplacing the pointer. self._args.reserve(self._args.size() + 1); self._args.emplace_back(ptr.release()); } } // namespace lfjail