From a080819c3ef93c41a0bbd14b3c5f76d26bb9d404 Mon Sep 17 00:00:00 2001 From: Stefan Hoffmann Date: Fri, 2 May 2014 18:25:49 +0200 Subject: replaced mch_fstat() with os_file_get_info_fd() --- src/macros.h | 1 - src/memfile.c | 35 ++++++----------------------------- src/tag.c | 8 +++----- 3 files changed, 9 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/macros.h b/src/macros.h index 5f7147be23..f016da484a 100644 --- a/src/macros.h +++ b/src/macros.h @@ -98,7 +98,6 @@ #define vim_isbreak(c) (breakat_flags[(char_u)(c)]) # define mch_fopen(n, p) fopen((n), (p)) -# define mch_fstat(n, p) fstat((n), (p)) # ifdef STAT_IGNORES_SLASH /* On Solaris stat() accepts "file/" as if it was "file". Return -1 if * the name ends in "/" and it's not a directory. */ diff --git a/src/memfile.c b/src/memfile.c index 5330fb7fc5..87ac56b955 100644 --- a/src/memfile.c +++ b/src/memfile.c @@ -46,25 +46,6 @@ #include "ui.h" #include "os/os.h" -/* - * Some systems have the page size in statfs.f_bsize, some in stat.st_blksize - */ -#ifdef HAVE_ST_BLKSIZE -# define STATFS stat -# define F_BSIZE st_blksize -# define fstatfs(fd, buf, len, nul) mch_fstat((fd), (buf)) -#else -# ifdef HAVE_SYS_STATFS_H -# include -# define STATFS statfs -# define F_BSIZE f_bsize -# endif -#endif - -/* - * for Amiga Dos 2.0x we use Flush - */ - #define MEMFILE_PAGE_SIZE 4096 /* default page size */ static long_u total_mem_used = 0; /* total memory used for memfiles */ @@ -125,10 +106,6 @@ memfile_T *mf_open(char_u *fname, int flags) { memfile_T *mfp; off_t size; -#if defined(STATFS) && defined(UNIX) && !defined(__QNX__) && !defined(__minix) -# define USE_FSTATFS - struct STATFS stf; -#endif if ((mfp = (memfile_T *)alloc((unsigned)sizeof(memfile_T))) == NULL) return NULL; @@ -157,7 +134,6 @@ memfile_T *mf_open(char_u *fname, int flags) mfp->mf_page_size = MEMFILE_PAGE_SIZE; mfp->mf_old_key = NULL; -#ifdef USE_FSTATFS /* * Try to set the page size equal to the block size of the device. * Speeds up I/O a lot. @@ -165,12 +141,13 @@ memfile_T *mf_open(char_u *fname, int flags) * in ml_recover(). The size used here may be wrong, therefore * mf_blocknr_max must be rounded up. */ + FileInfo file_info; if (mfp->mf_fd >= 0 - && fstatfs(mfp->mf_fd, &stf, sizeof(struct statfs), 0) == 0 - && stf.F_BSIZE >= MIN_SWAP_PAGE_SIZE - && stf.F_BSIZE <= MAX_SWAP_PAGE_SIZE) - mfp->mf_page_size = stf.F_BSIZE; -#endif + && os_get_file_info_fd(mfp->mf_fd, &file_info) + && file_info.stat.st_blksize >= MIN_SWAP_PAGE_SIZE + && file_info.stat.st_blksize <= MAX_SWAP_PAGE_SIZE) { + mfp->mf_page_size = file_info.stat.st_blksize; + } if (mfp->mf_fd < 0 || (flags & (O_TRUNC|O_EXCL)) || (size = lseek(mfp->mf_fd, (off_t)0L, SEEK_END)) <= 0) diff --git a/src/tag.c b/src/tag.c index d97eb61ab4..bfef5366d9 100644 --- a/src/tag.c +++ b/src/tag.c @@ -1511,12 +1511,10 @@ line_read_in: * compute the first offset. */ if (state == TS_BINARY) { - /* Get the tag file size (don't use mch_fstat(), it's not - * portable). */ - if ((filesize = lseek(fileno(fp), - (off_t)0L, SEEK_END)) <= 0) + // Get the tag file size. + if ((filesize = lseek(fileno(fp), (off_t)0L, SEEK_END)) <= 0) { state = TS_LINEAR; - else { + } else { lseek(fileno(fp), (off_t)0L, SEEK_SET); /* Calculate the first read offset in the file. Start -- cgit