#define W_OK 2
#define R_OK 4
+/*
+ * isinf() and isnan() should per spec be in , but MSVC older than
+ * 2013 does not have them there. It does have _fpclass() and _isnan(), but
+ * they're in , so include that here even though it means float.h
+ * percolates to our whole tree. Recent versions don't require any of this.
+ */
#if (_MSC_VER < 1800)
+#include
#define isinf(x) ((_fpclass(x) == _FPCLASS_PINF) || (_fpclass(x) == _FPCLASS_NINF))
#define isnan(x) _isnan(x)
#endif