mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 17:20:22 +00:00
win32: Use an 64-bit file offset type
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
This commit is contained in:
parent
a1c0728d12
commit
90d4d2f0fc
18
src/common.h
18
src/common.h
@ -25,6 +25,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#ifdef GIT_WIN32
|
#ifdef GIT_WIN32
|
||||||
|
|
||||||
@ -51,6 +52,23 @@ typedef SSIZE_T ssize_t;
|
|||||||
# define R_OK 4 /* read mode check */
|
# define R_OK 4 /* read mode check */
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
|
||||||
|
# define off_t off64_t
|
||||||
|
# define lseek _lseeki64
|
||||||
|
# define stat _stati64
|
||||||
|
# define fstat _fstati64
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
|
||||||
|
typedef __int64 off64_t;
|
||||||
|
# define off_t off64_t
|
||||||
|
# define lseek _lseeki64
|
||||||
|
# define stat _stat64
|
||||||
|
# define fstat _fstat64
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
|
@ -69,7 +69,8 @@ off_t gitfo_size(git_file fd)
|
|||||||
int gitfo_read_file(gitfo_buf *obj, const char *path)
|
int gitfo_read_file(gitfo_buf *obj, const char *path)
|
||||||
{
|
{
|
||||||
git_file fd;
|
git_file fd;
|
||||||
off_t len;
|
size_t len;
|
||||||
|
off_t size;
|
||||||
unsigned char *buff;
|
unsigned char *buff;
|
||||||
|
|
||||||
assert(obj && path && *path);
|
assert(obj && path && *path);
|
||||||
@ -77,8 +78,13 @@ int gitfo_read_file(gitfo_buf *obj, const char *path)
|
|||||||
if ((fd = gitfo_open(path, O_RDONLY)) < 0)
|
if ((fd = gitfo_open(path, O_RDONLY)) < 0)
|
||||||
return GIT_ERROR;
|
return GIT_ERROR;
|
||||||
|
|
||||||
if (((len = gitfo_size(fd)) < 0)
|
if (((size = gitfo_size(fd)) < 0) || !git__is_sizet(size+1)) {
|
||||||
|| ((buff = git__malloc(len + 1)) == NULL)) {
|
gitfo_close(fd);
|
||||||
|
return GIT_ERROR;
|
||||||
|
}
|
||||||
|
len = (size_t) size;
|
||||||
|
|
||||||
|
if ((buff = git__malloc(len + 1)) == NULL) {
|
||||||
gitfo_close(fd);
|
gitfo_close(fd);
|
||||||
return GIT_ERROR;
|
return GIT_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "dir.h"
|
#include "dir.h"
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
@ -77,8 +77,8 @@ int git__mmap(git_map *out, size_t len, int prot, int flags, int fd, off_t offse
|
|||||||
return GIT_ERROR;
|
return GIT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(sizeof(off_t) == 8);
|
||||||
off_low = (DWORD)(page_start);
|
off_low = (DWORD)(page_start);
|
||||||
if (sizeof(off_t) > 4)
|
|
||||||
off_hi = (DWORD)(page_start >> 32);
|
off_hi = (DWORD)(page_start >> 32);
|
||||||
out->data = MapViewOfFile(out->fmh, view_prot, off_hi, off_low, len);
|
out->data = MapViewOfFile(out->fmh, view_prot, off_hi, off_low, len);
|
||||||
if (!out->data) {
|
if (!out->data) {
|
||||||
|
Loading…
Reference in New Issue
Block a user