#include <sys/types.h>
#include <sys/stat.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+
#ifdef WINDOWS
/* Windows doesn't have some functions. Include mswindows.h so we get
their declarations, as well as some additional declarations and
#ifdef __BEOS__
# undef READ
# undef WRITE
-# define READ(fd, buf, cnt) recv((fd), (buf), (cnt), 0)
-# define WRITE(fd, buf, cnt) send((fd), (buf), (cnt), 0)
+# define READ(fd, buf, cnt) recv ((fd), (buf), (cnt), 0)
+# define WRITE(fd, buf, cnt) send ((fd), (buf), (cnt), 0)
#endif
/* mswindows.h defines these. */
# define REALCLOSE(x) close (x)
#endif
-#define CLOSE(x) \
-do { \
- REALCLOSE (x); \
- DEBUGP (("Closing fd %d\n", x)); \
+#define CLOSE(x) do { \
+ int C_sock = (x); \
+ if (C_sock >= 0) \
+ { \
+ REALCLOSE (C_sock); \
+ DEBUGP (("Closing fd %d\n", C_sock)); \
+ } \
} while (0)
/* Define a large integral type useful for storing large sizes that
typedef long LARGE_INT;
# define LARGE_INT_FMT "%ld"
#else
-# if SIZEOF_LONG_LONG == 8
+# if SIZEOF_LONG_LONG >= 8
/* Long long is large enough: use it. */
typedef long long LARGE_INT;
# define LARGE_INT_FMT "%lld"
# else
-/* Use `double'. */
+/* Large integer type unavailable; use `double' instead. */
typedef double LARGE_INT;
# define LARGE_INT_FMT "%.0f"
# endif
#ifndef HAVE_VSNPRINTF
int vsnprintf ();
#endif
-#ifndef HAVE_USLEEP
-int usleep PARAMS ((unsigned long));
-#endif
#ifndef HAVE_MEMMOVE
void *memmove ();
#endif
int fnmatch ();
#endif
-/* Provide u_int32_t on the platforms that don't define it. Although
+/* Provide uint32_t on the platforms that don't define it. Although
most code should be agnostic about integer sizes, some code really
- does need a 32-bit integral type. Such code should use u_int32_t.
+ does need a 32-bit integral type. Such code should use uint32_t.
(The exception is gnu-md5.[ch], which uses its own detection for
portability across platforms.) */
-#ifndef HAVE_U_INT32_T
+#ifndef HAVE_UINT32_T
# if SIZEOF_INT == 4
-typedef unsigned int u_int32_t;
+typedef unsigned int uint32_t;
# else
# if SIZEOF_LONG == 4
-typedef unsigned long u_int32_t;
+typedef unsigned long uint32_t;
# else
# if SIZEOF_SHORT == 4
-typedef unsigned short u_int32_t;
+typedef unsigned short uint32_t;
# else
- #error "Cannot determine a 32-bit type"
+ #error "Cannot determine a 32-bit unsigned integer type"
# endif
# endif
# endif