mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 7.4.1975
Problem: On MS-Windows large files (> 2Gbyte) cause problems. Solution: Use "off_T" instead of "off_t". Use "stat_T" instead of "struct stat". Use 64 bit system functions if available. (Ken Takata)
This commit is contained in:
38
src/vim.h
38
src/vim.h
@@ -395,6 +395,36 @@ typedef long __w64 long_i;
|
||||
# define LONG_LONG_OFF_T
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We use 64-bit file functions here, if available. E.g. ftello() returns
|
||||
* off_t instead of long, which helps if long is 32 bit and off_t is 64 bit.
|
||||
* We assume that when fseeko() is available then ftello() is too.
|
||||
* Note that Windows has different function names.
|
||||
*/
|
||||
#if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__MINGW32__)
|
||||
typedef __int64 off_T;
|
||||
# ifdef __MINGW32__
|
||||
# define vim_lseek lseek64
|
||||
# define vim_fseek fseeko64
|
||||
# define vim_ftell ftello64
|
||||
# else
|
||||
# define vim_lseek _lseeki64
|
||||
# define vim_fseek _fseeki64
|
||||
# define vim_ftell _ftelli64
|
||||
# endif
|
||||
#else
|
||||
typedef off_t off_T;
|
||||
# ifdef HAVE_FSEEKO
|
||||
# define vim_lseek lseek
|
||||
# define vim_ftell ftello
|
||||
# define vim_fseek fseeko
|
||||
# else
|
||||
# define vim_lseek lseek
|
||||
# define vim_ftell ftell
|
||||
# define vim_fseek(a, b, c) fseek(a, (long)b, c)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The characters and attributes cached for the screen.
|
||||
*/
|
||||
@@ -2018,6 +2048,14 @@ typedef int VimClipboard; /* This is required for the prototypes. */
|
||||
# define stat(a,b) (access(a,0) ? -1 : stat(a,b))
|
||||
#endif
|
||||
|
||||
/* Use 64-bit stat structure if available. */
|
||||
#if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__MINGW32__)
|
||||
# define HAVE_STAT64
|
||||
typedef struct _stat64 stat_T;
|
||||
#else
|
||||
typedef struct stat stat_T;
|
||||
#endif
|
||||
|
||||
#include "ex_cmds.h" /* Ex command defines */
|
||||
#include "proto.h" /* function prototypes */
|
||||
|
||||
|
Reference in New Issue
Block a user