$NetBSD$

--- lib/sshutil/sshsysutil/sshunixfdstream.c.orig	2003-12-03 15:17:31.000000000 +0200
+++ lib/sshutil/sshsysutil/sshunixfdstream.c
@@ -337,16 +337,21 @@ int ssh_stream_fd_write(void *context, c
   if (sdata->writefd >= 0)
     {
       len = write(sdata->writefd, buf, size);
-      if (len >= 0)
+      if (len > 0)
         return len;
 
-      if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)
+      if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR ||
+	  /* Special case for NetBSD 2.0, it may return len = 0 and errno = 0
+	     which simply means, try again */
+	  (len == 0 && errno == 0))
         {
           /* Cannot write more at this time. */
           sdata->write_has_failed = TRUE;
           ssh_stream_fd_request(sdata);
           return -1;
         }
+      else if (len == 0)
+	return 0;
 
       /* A real error occurred while writing. */
       sdata->write_has_failed = TRUE;
