tdlight/tdutils/td/utils/port/Fd.cpp
levlam c6afabd633 Reimplement NativeFd::duplicate.
GitOrigin-RevId: 7f2dcff066d8f944514cb0bbc48991bbe3706820
2018-09-10 17:47:28 +03:00

54 lines
1.3 KiB
C++

//
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#if 0
namespace td {
#if TD_PORT_WINDOWS
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
Fd &Fd::Stderr() {
static auto handle = GetStdHandle(STD_ERROR_HANDLE);
LOG_IF(FATAL, handle == INVALID_HANDLE_VALUE) << "Failed to get stderr";
static auto fd = Fd(Fd::Type::FileFd, Fd::Mode::Reference, handle);
return fd;
}
Fd &Fd::Stdin() {
static auto handle = GetStdHandle(STD_INPUT_HANDLE);
LOG_IF(FATAL, handle == INVALID_HANDLE_VALUE) << "Failed to get stdin";
static auto fd = Fd(Fd::Type::FileFd, Fd::Mode::Reference, handle);
return fd;
}
Fd &Fd::Stdout() {
static auto handle = GetStdHandle(STD_OUTPUT_HANDLE);
LOG_IF(FATAL, handle == INVALID_HANDLE_VALUE) << "Failed to get stdout";
static auto fd = Fd(Fd::Type::FileFd, Fd::Mode::Reference, handle);
return fd;
}
#else
Fd &Fd::Stderr() {
static Fd result;
result = Fd();
return result;
}
Fd &Fd::Stdin() {
static Fd result;
result = Fd();
return result;
}
Fd &Fd::Stdout() {
static Fd result;
result = Fd();
return result;
}
#endif
#endif
} // namespace td
#endif