updated for version 7.3.087
Problem:    EINTR is not always defined.
Solution:   Include errno.h in vim.h.
diff --git a/src/if_cscope.c b/src/if_cscope.c
index bc8ea94..8867f63 100644
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -13,8 +13,6 @@
 
 #if defined(FEAT_CSCOPE) || defined(PROTO)
 
-#include <string.h>
-#include <errno.h>
 #include <assert.h>
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/src/if_tcl.c b/src/if_tcl.c
index f87407d..e5eee29 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -74,7 +74,6 @@
 #endif
 
 #include <tcl.h>
-#include <errno.h>
 #include <string.h>
 
 typedef struct
diff --git a/src/integration.c b/src/integration.c
index 8de684c..3f38c55 100644
--- a/src/integration.c
+++ b/src/integration.c
@@ -33,7 +33,6 @@
 #include <sys/un.h>
 #endif
 
-#include <errno.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/param.h>
diff --git a/src/memline.c b/src/memline.c
index d978b90..0beaf54 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -52,10 +52,6 @@
 # include <proto/dos.h>	    /* for Open() and Close() */
 #endif
 
-#ifdef HAVE_ERRNO_H
-# include <errno.h>
-#endif
-
 typedef struct block0		ZERO_BL;    /* contents of the first block */
 typedef struct pointer_block	PTR_BL;	    /* contents of a pointer block */
 typedef struct data_block	DATA_BL;    /* contents of a data block */
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 7dcc053..0b9dfd9 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -30,7 +30,6 @@
 # include <string.h>
 #endif
 #include <sys/types.h>
-#include <errno.h>
 #include <signal.h>
 #include <limits.h>
 #include <process.h>
diff --git a/src/os_win16.c b/src/os_win16.c
index 66ca198..c4d9cfc 100644
--- a/src/os_win16.c
+++ b/src/os_win16.c
@@ -25,7 +25,6 @@
 #include <dos.h>
 #include <string.h>
 #include <sys/types.h>
-#include <errno.h>
 #include <signal.h>
 #include <limits.h>
 #include <process.h>
diff --git a/src/os_win32.c b/src/os_win32.c
index dcf95ee..30b725d 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -27,7 +27,6 @@
 #endif
 
 #include <sys/types.h>
-#include <errno.h>
 #include <signal.h>
 #include <limits.h>
 #include <process.h>
diff --git a/src/version.c b/src/version.c
index d3ad470..8c51226 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    87,
+/**/
     86,
 /**/
     85,
diff --git a/src/vim.h b/src/vim.h
index 5eea085..15595bf 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -480,6 +480,11 @@
 # include <sys/stat.h>
 #endif
 
+#if defined(HAVE_ERRNO_H) || defined(DJGPP) || defined(WIN16) \
+	|| defined(WIN32) || defined(_WIN64) || defined(__EMX__)
+# include <errno.h>
+#endif
+
 /*
  * Allow other (non-unix) systems to configure themselves now
  * These are also in os_unix.h, because osdef.sh needs them there.
diff --git a/src/workshop.c b/src/workshop.c
index 89f55ef..e0db10e 100644
--- a/src/workshop.c
+++ b/src/workshop.c
@@ -16,7 +16,6 @@
 #include <sys/types.h>
 #include <netdb.h>
 #include <netinet/in.h>
-#include <errno.h>
 #include <sys/socket.h>
 #ifdef HAVE_LIBGEN_H
 # include <libgen.h>