blob: 82f2ea4bfe203523490654e4747952dbdb9dde6e [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 <lib/fpromise/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 {
fpromise::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 fpromise::error("Failed to create temporary file at " + base +
". More specifically: " + strerror(errno));
}
return fpromise::ok(TempFile(base));
}
TempFile::~TempFile() { unlink(path_.c_str()); }
} // namespace storage::volume_image