#include "Args.hpp"
#include "ArgsInfo.hpp"
#include "Config.hpp"
-#include "File.hpp"
#include "MiniTrace.hpp"
+#include <util/FileStream.hpp>
#include <util/NonCopyable.hpp>
#ifdef INODE_CACHE_SUPPORTED
pid_t compiler_pid = 0;
// Files used by the hash debugging functionality.
- std::vector<File> hash_debug_files;
+ std::vector<util::FileStream> hash_debug_files;
// Options to ignore for the hash.
const std::vector<std::string>& ignore_options() const;
#include "Logging.hpp"
#include "Config.hpp"
-#include "File.hpp"
#include "Util.hpp"
#include "Win32Util.hpp"
#include "execute.hpp"
+#include <util/FileStream.hpp>
#include <util/file.hpp>
#include <util/fmtmacros.hpp>
#include <util/time.hpp>
// Logfile path and file handle, read from Config::log_file().
std::string logfile_path;
-File logfile;
+util::FileStream logfile;
// Whether to use syslog() instead.
bool use_syslog = false;
if (!enabled()) {
return;
}
- File file(path, "w");
+ util::FileStream file(path, "w");
if (file) {
(void)fwrite(debug_log_buffer.data(), debug_log_buffer.length(), 1, *file);
} else {
#include "ArgsInfo.hpp"
#include "Context.hpp"
#include "Depfile.hpp"
-#include "File.hpp"
#include "Hash.hpp"
#include "Logging.hpp"
#include "MiniTrace.hpp"
#include <core/types.hpp>
#include <storage/Storage.hpp>
#include <util/Fd.hpp>
+#include <util/FileStream.hpp>
#include <util/Finalizer.hpp>
#include <util/TemporaryFile.hpp>
#include <util/UmaskScope.hpp>
ctx.time_of_invocation,
ctx.args_info.output_obj,
FMT("input-{}", type));
- File debug_binary_file(path, "wb");
+ util::FileStream debug_binary_file(path, "wb");
if (debug_binary_file) {
hash.enable_debug(section_name, debug_binary_file.get(), debug_text_file);
ctx.hash_debug_files.push_back(std::move(debug_binary_file));
ctx.time_of_invocation,
ctx.args_info.orig_output_obj,
"input-text");
- File debug_text_file(path, "w");
+ util::FileStream debug_text_file(path, "w");
if (debug_text_file) {
ctx.hash_debug_files.push_back(std::move(debug_text_file));
} else {
#include "Config.hpp"
#include "Context.hpp"
-#include "File.hpp"
#include "Logging.hpp"
#include "Util.hpp"
#include <core/exceptions.hpp>
#include <util/Bytes.hpp>
#include <util/DirEntry.hpp>
+#include <util/FileStream.hpp>
#include <util/expected.hpp>
#include <util/file.hpp>
#include <util/fmtmacros.hpp>
-// Copyright (C) 2021 Joel Rosdahl and other contributors
+// Copyright (C) 2021-2023 Joel Rosdahl and other contributors
//
// See doc/AUTHORS.adoc for a complete list of contributors.
//
#include "StatsLog.hpp"
-#include <File.hpp>
#include <Logging.hpp>
#include <core/Statistics.hpp>
+#include <util/FileStream.hpp>
#include <util/fmtmacros.hpp>
#include <fstream>
StatsLog::log_result(const std::string& input_file,
const std::vector<std::string>& result_ids)
{
- File file(m_path, "ab");
+ util::FileStream file(m_path, "ab");
if (!file) {
LOG("Failed to open {}: {}", m_path, strerror(errno));
return;
#include "mainoptions.hpp"
#include <Config.hpp>
-#include <File.hpp>
#include <Hash.hpp>
#include <InodeCache.hpp>
#include <Logging.hpp>
#include <storage/Storage.hpp>
#include <storage/local/LocalStorage.hpp>
#include <util/Fd.hpp>
+#include <util/FileStream.hpp>
#include <util/TemporaryFile.hpp>
#include <util/TextTable.hpp>
#include <util/ThreadPool.hpp>
}
if (sh.empty() && getenv("CCACHE_DETECT_SHEBANG")) {
// Detect shebang.
- File fp(path, "r");
+ util::FileStream fp(path, "r");
if (fp) {
char buf[10] = {0};
fgets(buf, sizeof(buf) - 1, fp.get());
#include <Config.hpp>
#include <Context.hpp>
-#include <File.hpp>
#include <Logging.hpp>
#include <MiniTrace.hpp>
#include <Util.hpp>
#include <core/common.hpp>
#include <core/exceptions.hpp>
#include <util/Duration.hpp>
+#include <util/FileStream.hpp>
#include <util/TemporaryFile.hpp>
#include <util/TextTable.hpp>
#include <util/ThreadPool.hpp>
#include <cstdio>
#include <string>
-class File : util::NonCopyable
+namespace util {
+
+class FileStream : util::NonCopyable
{
public:
- File() = default;
- explicit File(FILE* file);
- File(const std::string& path, const char* mode);
- File(File&& other) noexcept;
- ~File();
+ FileStream() = default;
+ explicit FileStream(FILE* file);
+ FileStream(const std::string& path, const char* mode);
+ FileStream(FileStream&& other) noexcept;
+ ~FileStream();
- File& operator=(File&& other) noexcept;
+ FileStream& operator=(FileStream&& other) noexcept;
void open(const std::string& path, const char* mode);
void close();
bool m_owned = false;
};
-inline File::File(FILE* const file) : m_file(file), m_owned(false)
+inline FileStream::FileStream(FILE* const file) : m_file(file), m_owned(false)
{
}
-inline File::File(const std::string& path, const char* mode)
+inline FileStream::FileStream(const std::string& path, const char* mode)
{
open(path, mode);
}
-inline File::File(File&& other) noexcept
+inline FileStream::FileStream(FileStream&& other) noexcept
: m_file(other.m_file),
m_owned(other.m_owned)
{
other.m_owned = false;
}
-inline File::~File()
+inline FileStream::~FileStream()
{
close();
}
-inline File&
-File::operator=(File&& other) noexcept
+inline FileStream&
+FileStream::operator=(FileStream&& other) noexcept
{
m_file = other.m_file;
m_owned = other.m_owned;
}
inline void
-File::open(const std::string& path, const char* mode)
+FileStream::open(const std::string& path, const char* mode)
{
close();
m_file = fopen(path.c_str(), mode);
}
inline void
-File::close()
+FileStream::close()
{
if (m_file && m_owned) {
fclose(m_file);
m_owned = false;
}
-inline File::operator bool() const
+inline FileStream::operator bool() const
{
return m_file;
}
inline FILE*
-File::operator*() const
+FileStream::operator*() const
{
return m_file;
}
inline FILE*
-File::get()
+FileStream::get()
{
return m_file;
}
+
+} // namespace util