53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
/*
|
|
* Deskflow -- mouse and keyboard sharing utility
|
|
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
|
|
* SPDX-FileCopyrightText: (C) 2021 Barrier Contributors
|
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
|
*/
|
|
|
|
#include "Filesystem.h"
|
|
|
|
#include "common/Common.h"
|
|
|
|
#include <fstream>
|
|
|
|
namespace deskflow {
|
|
|
|
namespace {
|
|
|
|
template <class Stream> void openUtf8PathImpl(Stream &stream, const fs::path &path, std::ios_base::openmode mode)
|
|
{
|
|
stream.open(path.native().c_str(), mode);
|
|
}
|
|
|
|
} // namespace
|
|
|
|
void openUtf8Path(std::ifstream &stream, const fs::path &path, std::ios_base::openmode mode)
|
|
{
|
|
openUtf8PathImpl(stream, path, mode);
|
|
}
|
|
|
|
void openUtf8Path(std::ofstream &stream, const fs::path &path, std::ios_base::openmode mode)
|
|
{
|
|
openUtf8PathImpl(stream, path, mode);
|
|
}
|
|
|
|
void openUtf8Path(std::fstream &stream, const fs::path &path, std::ios_base::openmode mode)
|
|
{
|
|
openUtf8PathImpl(stream, path, mode);
|
|
}
|
|
|
|
std::FILE *fopenUtf8Path(const fs::path &path, const std::string &mode)
|
|
{
|
|
#if SYSAPI_WIN32
|
|
std::wstring wpath = path.native();
|
|
std::wstring wmode(mode.begin(), mode.end());
|
|
|
|
return _wfopen(wpath.c_str(), wmode.c_str());
|
|
#else
|
|
return std::fopen(path.native().c_str(), mode.c_str());
|
|
#endif
|
|
}
|
|
|
|
} // namespace deskflow
|