diff --git a/src/fdlib.c b/src/fdlib.c
index f141efa7731b4a00c949e4f85df421c36ac301f9..d9c77eaca1a4494d015ffb6cbe6aa9a51d60373d 100644
--- a/src/fdlib.c
+++ b/src/fdlib.c
@@ -3,7 +3,7 @@
 #include "error.h"
 #include <math.h>
 
-RCSID("$Id: fdlib.c,v 1.42 2000/08/19 11:31:36 grubba Exp $");
+RCSID("$Id: fdlib.c,v 1.43 2000/08/20 15:59:10 grubba Exp $");
 
 #ifdef HAVE_WINSOCK_H
 
@@ -452,45 +452,51 @@ PMOD_EXPORT int debug_fd_close(FD fd)
   return 0;
 }
 
-PMOD_EXPORT ptrdiff_t debug_fd_write(FD fd, void *buf, long len)
+PMOD_EXPORT ptrdiff_t debug_fd_write(FD fd, void *buf, ptrdiff_t len)
 {
-  long ret;
+  int kind;
   HANDLE handle;
+
   mt_lock(&fd_mutex);
-  FDDEBUG(fprintf(stderr,"Writing %d bytes to %d (%d)\n",len,fd,da_handle[fd]));
-  ret=fd_type[fd];
-  handle=da_handle[fd];
+  FDDEBUG(fprintf(stderr, "Writing %d bytes to %d (%d)\n",
+		  len, fd, da_handle[fd]));
+  kind = fd_type[fd];
+  handle = da_handle[fd];
   mt_unlock(&fd_mutex);
   
-  switch(ret)
+  switch(kind)
   {
     case FD_SOCKET:
-      ret=send((SOCKET)handle, buf, len, 0);
-      if(ret<0)
       {
-	errno=WSAGetLastError();
-	FDDEBUG(fprintf(stderr,"Write on %d failed (%d)\n",fd,errno));
-	if (errno == 1) {
-	  /* UGLY kludge */
-	  errno = WSAEWOULDBLOCK;
+	ptrdiff_t ret = send((SOCKET)handle, buf, len, 0);
+	if(ret<0)
+	{
+	  errno = WSAGetLastError();
+	  FDDEBUG(fprintf(stderr, "Write on %d failed (%d)\n", fd, errno));
+	  if (errno == 1) {
+	    /* UGLY kludge */
+	    errno = WSAEWOULDBLOCK;
+	  }
+	  return -1;
 	}
-	return -1;
+	FDDEBUG(fprintf(stderr, "Wrote %d bytes to %d)\n", len, fd));
+	return ret;
       }
-      FDDEBUG(fprintf(stderr,"Wrote %d bytes to %d)\n",len,fd));
-      return ret;
 
     case FD_CONSOLE:
     case FD_FILE:
     case FD_PIPE:
-      ret=0;
-      if(!WriteFile(handle, buf, len, &ret,0) && ret<=0)
       {
-	errno=GetLastError();
-	FDDEBUG(fprintf(stderr,"Write on %d failed (%d)\n",fd,errno));
-	return -1;
+	DWORD ret = 0;
+	if(!WriteFile(handle, buf, len, &ret,0) && ret<=0)
+	{
+	  errno = GetLastError();
+	  FDDEBUG(fprintf(stderr, "Write on %d failed (%d)\n", fd, errno));
+	  return -1;
+	}
+	FDDEBUG(fprintf(stderr, "Wrote %ld bytes to %d)\n", (long)ret, fd));
+	return ret;
       }
-      FDDEBUG(fprintf(stderr,"Wrote %d bytes to %d)\n",len,fd));
-      return ret;
 
     default:
       errno=ENOTSUPP;