# HG changeset patch # User Christian Brabandt # Date 1501704904 -7200 # Node ID bafbdbc64bbe3f3d58df4700b691d272796742fa # Parent b7ae697d13e681f74941deaef411df8b6c31fc4f patch 8.0.0840: MS-Windows: fopen() and open() prototypes are wrong commit https://github.com/vim/vim/commit/b6843a007da9c06bd8f9491cc12e5e0afd858f33 Author: Bram Moolenaar Date: Wed Aug 2 22:07:12 2017 +0200 patch 8.0.0840: MS-Windows: fopen() and open() prototypes are wrong Problem: MS-Windows: fopen() and open() prototypes do not match the ones in the system header file. Can't build without FEAT_MBYTE. Solution: Add "const". Move macro to after including protoo.h. diff --git a/src/macros.h b/src/macros.h --- a/src/macros.h +++ b/src/macros.h @@ -191,9 +191,6 @@ # ifndef WIN32 # define mch_access(n, p) access((n), (p)) # endif -# if !(defined(FEAT_MBYTE) && defined(WIN3264)) -# define mch_fopen(n, p) fopen((n), (p)) -# endif # define mch_fstat(n, p) fstat((n), (p)) # ifdef MSWIN /* has it's own mch_stat() function */ # define mch_stat(n, p) vim_stat((n), (p)) @@ -223,10 +220,6 @@ * but it is not recommended, because it can destroy indexes etc. */ # define mch_open(n, m, p) open(vms_fixfilename(n), (m), (p)) -# else -# if !(defined(FEAT_MBYTE) && defined(WIN3264)) -# define mch_open(n, m, p) open((n), (m), (p)) -# endif # endif #endif diff --git a/src/os_win32.c b/src/os_win32.c --- a/src/os_win32.c +++ b/src/os_win32.c @@ -6503,7 +6503,7 @@ getout: * Version of open() that may use UTF-16 file name. */ int -mch_open(char *name, int flags, int mode) +mch_open(const char *name, int flags, int mode) { /* _wopen() does not work with Borland C 5.5: creates a read-only file. */ # ifndef __BORLANDC__ @@ -6536,7 +6536,7 @@ mch_open(char *name, int flags, int mode * Version of fopen() that may use UTF-16 file name. */ FILE * -mch_fopen(char *name, char *mode) +mch_fopen(const char *name, const char *mode) { WCHAR *wn, *wm; FILE *f = NULL; diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro --- a/src/proto/os_win32.pro +++ b/src/proto/os_win32.pro @@ -4,6 +4,8 @@ HINSTANCE find_imported_module_by_funcna void *get_dll_import_func(HINSTANCE hInst, const char *funcname); int dyn_libintl_init(void); void dyn_libintl_end(void); +int null_libintl_putenv(const char *envstring); +int null_libintl_wputenv(const wchar_t *envstring); void PlatformId(void); void mch_setmouse(int on); void mch_update_cursor(void); @@ -56,8 +58,8 @@ int mch_wrename(WCHAR *wold, WCHAR *wnew int mch_rename(const char *pszOldFile, const char *pszNewFile); char *default_shell(void); int mch_access(char *n, int p); -int mch_open(char *name, int flags, int mode); -FILE *mch_fopen(char *name, char *mode); +int mch_open(const char *name, int flags, int mode); +FILE *mch_fopen(const char *name, const char *mode); int mch_copy_file_attribute(char_u *from, char_u *to); int myresetstkoflw(void); int get_cmd_argsW(char ***argvp); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 840, +/**/ 839, /**/ 838, diff --git a/src/vim.h b/src/vim.h --- a/src/vim.h +++ b/src/vim.h @@ -2141,6 +2141,11 @@ typedef enum { # define number_width(x) 7 #endif +/* This must come after including proto.h */ +#if !(defined(FEAT_MBYTE) && defined(WIN3264)) +# define mch_open(n, m, p) open((n), (m), (p)) +# define mch_fopen(n, p) fopen((n), (p)) +#endif #include "globals.h" /* global variables and messages */