blob: f73110263b4f4a5b6ddcdef0ef40e49e2f16d75e [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/storage/volume_image/utils/fd_test_helper.h"
#include <fcntl.h>
#include <lib/fit/result.h>
#include <unistd.h>
#include <array>
#include <cstdio>
#include <cstdlib>
#include <filesystem>
#include <string>
#include <string_view>
#include <vector>
#include <fbl/unique_fd.h>
namespace storage::volume_image {
fit::result<TempFile, std::string> TempFile::Create() {
std::string base = std::filesystem::temp_directory_path().generic_string() + "/tmp_XXXXXXX";
fbl::unique_fd created_file(mkstemp(base.data()));
if (!created_file.is_valid()) {
return fit::error("Failed to create temporary file at " + base +
". More specifically: " + strerror(errno));
}
return fit::ok(TempFile(base));
}
TempFile::~TempFile() { unlink(path_.c_str()); }
} // namespace storage::volume_image