diff --git a/lib/input.cpp b/lib/input.cpp index 5a8fd00f..94850289 100644 --- a/lib/input.cpp +++ b/lib/input.cpp @@ -39,7 +39,13 @@ #include #include -#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(__BORLANDC__)) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__) +#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(__BORLANDC__)) && !defined(__CYGWIN__) +# define REFLEX_WINDOWS_FILE_IO 1 +#else +# define REFLEX_WINDOWS_FILE_IO 0 +#endif + +#if REFLEX_WINDOWS_FILE_IO # include # include # define off_t __int64 @@ -47,11 +53,7 @@ # define fseeko _fseeki64 #else # include // off_t, fstat() -# if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64)) && (defined(__MINGW32__) || defined(__MINGW64__)) && defined(_UCRT) -# include -# else -# include -# endif +# include #endif namespace reflex { @@ -653,7 +655,7 @@ void Input::file_init() { // attempt to determine the file size with fstat() #if !defined(HAVE_CONFIG_H) || defined(HAVE_FSTAT) -#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(__BORLANDC__)) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__) +#if REFLEX_WINDOWS_FILE_IO struct _stat st; if (_fstat(_fileno(file_), &st) == 0 && ((st.st_mode & S_IFMT) == S_IFREG) && st.st_size <= 4294967295LL) #else @@ -1030,7 +1032,7 @@ bool Input::file_ready() { if (file_ == NULL || feof(file_)) return false; -#if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(__BORLANDC__)) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__) +#if REFLEX_WINDOWS_FILE_IO return !ferror(file_); #else int fd = fileno(file_);