#include <__config>
#include <cstdlib>
#include <print>
#include <__system_error/system_error.h>
#include "filesystem/error.h"
#if defined(_LIBCPP_WIN32API)
# define WIN32_LEAN_AND_MEAN
# define NOMINMAX
# include <io.h>
# include <windows.h>
#elif __has_include(<unistd.h>)
# include <unistd.h>
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
#if defined(_LIBCPP_WIN32API)
_LIBCPP_EXPORTED_FROM_ABI bool __is_windows_terminal(FILE* __stream) {
intptr_t __handle = _get_osfhandle(fileno(__stream));
if (__handle == -1)
return false;
unsigned long __mode;
return GetConsoleMode(reinterpret_cast<void*>(__handle), &__mode);
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
_LIBCPP_EXPORTED_FROM_ABI void
__write_to_windows_console([[maybe_unused]] FILE* __stream, [[maybe_unused]] wstring_view __view) {
if (WriteConsoleW(reinterpret_cast<void*>(_get_osfhandle(fileno(__stream))),
__view.data(),
__view.size(),
nullptr,
nullptr) == 0) {
__throw_system_error(filesystem::detail::make_windows_error(GetLastError()), "failed to write formatted output");
}
}
# endif
#elif __has_include(<unistd.h>)
_LIBCPP_EXPORTED_FROM_ABI bool __is_posix_terminal(FILE* __stream) { return isatty(fileno(__stream)); }
#endif
_LIBCPP_END_NAMESPACE_STD