changeset 9605:846d4bad2df7 v7.4.2080

commit https://github.com/vim/vim/commit/b869c0da31716ff14bbfd63346d140d0a1d68af7 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 20 00:10:51 2016 +0200 patch 7.4.2080 Problem: When using PERROR() on some systems assert_fails() does not see the error. Solution: Make PERROR() always report the error.
author Christian Brabandt <cb@256bit.org>
date Wed, 20 Jul 2016 00:15:06 +0200
parents a16f2505a6b3
children 19d4f5a47ae6
files src/message.c src/proto/message.pro src/version.c src/vim.h
diffstat 4 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/message.c
+++ b/src/message.c
@@ -521,6 +521,21 @@ emsg_not_now(void)
     return FALSE;
 }
 
+#if !defined(HAVE_STRERROR) || defined(PROTO)
+/*
+ * Replacement for perror() that behaves more or less like emsg() was called.
+ * v:errmsg will be set and called_emsg will be set.
+ */
+    void
+do_perror(char *msg)
+{
+    perror(msg);
+    ++emsg_silent;
+    emsg((char_u *)msg);
+    --emsg_silent;
+}
+#endif
+
 /*
  * emsg() - display an error message
  *
--- a/src/proto/message.pro
+++ b/src/proto/message.pro
@@ -8,6 +8,7 @@ void trunc_string(char_u *s, char_u *buf
 void reset_last_sourcing(void);
 void msg_source(int attr);
 int emsg_not_now(void);
+void do_perror(char *msg);
 int emsg(char_u *s);
 int emsg2(char_u *s, char_u *a1);
 void emsg_invreg(int name);
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2080,
+/**/
     2079,
 /**/
     2078,
--- a/src/vim.h
+++ b/src/vim.h
@@ -1652,7 +1652,7 @@ typedef UINT32_TYPEDEF UINT32_T;
 #ifdef HAVE_STRERROR
 # define PERROR(msg)		    (void)emsg3((char_u *)"%s: %s", (char_u *)msg, (char_u *)strerror(errno))
 #else
-# define PERROR(msg)		    perror(msg)
+# define PERROR(msg)		    do_perror(msg)
 #endif
 
 typedef long	linenr_T;		/* line number type */