]> sjero.net Git - wget/blobdiff - src/sysdep.h
[svn] New function xsleep that resumes sleeps interrupted by signals
[wget] / src / sysdep.h
index 7854eafafa17e65e9605f1815aecae2e7fb0672b..2c94579501ebb83edcacbca747693f56ca9ed138 100644 (file)
@@ -48,6 +48,10 @@ so, delete this exception statement from your version.  */
 #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
@@ -107,8 +111,8 @@ so, delete this exception statement from your version.  */
 #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.  */
@@ -122,10 +126,13 @@ so, delete this exception statement from your version.  */
 # 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
@@ -142,12 +149,12 @@ do {                                              \
 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
@@ -176,9 +183,6 @@ int snprintf ();
 #ifndef HAVE_VSNPRINTF
 int vsnprintf ();
 #endif
-#ifndef HAVE_USLEEP
-int usleep PARAMS ((unsigned long));
-#endif
 #ifndef HAVE_MEMMOVE
 void *memmove ();
 #endif
@@ -245,23 +249,23 @@ void *memcpy ();
 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