MSVC: xz: Make file_io.c and file_io.h compatible with MSVC.
Thanks to Kelvin Lee for the original patches and testing the modifications I made.
This commit is contained in:
parent
c660b8d78b
commit
79334e7f20
|
@ -39,6 +39,32 @@ static bool warn_fchown;
|
||||||
|
|
||||||
#include "tuklib_open_stdxxx.h"
|
#include "tuklib_open_stdxxx.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# ifdef _WIN64
|
||||||
|
typedef __int64 ssize_t;
|
||||||
|
# else
|
||||||
|
typedef int ssize_t;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef int mode_t;
|
||||||
|
# define S_IRUSR _S_IREAD
|
||||||
|
# define S_IWUSR _S_IWRITE
|
||||||
|
|
||||||
|
# define setmode _setmode
|
||||||
|
# define open _open
|
||||||
|
# define close _close
|
||||||
|
# define lseek _lseeki64
|
||||||
|
# define unlink _unlink
|
||||||
|
|
||||||
|
// The casts are to silence warnings.
|
||||||
|
// The sizes are known to be small enough.
|
||||||
|
# define read(fd, buf, size) _read(fd, buf, (unsigned int)(size))
|
||||||
|
# define write(fd, buf, size) _write(fd, buf, (unsigned int)(size))
|
||||||
|
|
||||||
|
# define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
|
||||||
|
# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef O_BINARY
|
#ifndef O_BINARY
|
||||||
# define O_BINARY 0
|
# define O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,6 +18,16 @@
|
||||||
# define IO_BUFFER_SIZE (BUFSIZ & ~7U)
|
# define IO_BUFFER_SIZE (BUFSIZ & ~7U)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
// The first one renames both "struct stat" -> "struct _stat64"
|
||||||
|
// and stat() -> _stat64(). The documentation mentions only
|
||||||
|
// "struct __stat64", not "struct _stat64", but the latter
|
||||||
|
// works too.
|
||||||
|
# define stat _stat64
|
||||||
|
# define fstat _fstat64
|
||||||
|
# define off_t __int64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/// is_sparse() accesses the buffer as uint64_t for maximum speed.
|
/// is_sparse() accesses the buffer as uint64_t for maximum speed.
|
||||||
/// The u32 and u64 members must only be access through this union
|
/// The u32 and u64 members must only be access through this union
|
||||||
|
|
Loading…
Reference in New Issue