Fix mingw32 portability

This commit is contained in:
Daniel P. Berrange 2009-04-02 18:42:33 +00:00
parent 0722925986
commit d9ec9c6937
3 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,10 @@
Thu Apr 2 19:41:00 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Mingw portability fixes
* src/util.c: Fix virFileResolveLink for Win32 platform.
Fix offset usage in safezero for mmap() and write() impls
* configure.in: Add check for readlink()
Thu Apr 2 15:18:00 CEST 2009 Daniel Veillard <veillard@redhat.com> Thu Apr 2 15:18:00 CEST 2009 Daniel Veillard <veillard@redhat.com>
* docs/schemas/domain.rng: some missing disk bus values and cleanups * docs/schemas/domain.rng: some missing disk bus values and cleanups

View File

@ -72,7 +72,7 @@ dnl Use --disable-largefile if you don't want this.
AC_SYS_LARGEFILE AC_SYS_LARGEFILE
dnl Availability of various common functions (non-fatal if missing). dnl Availability of various common functions (non-fatal if missing).
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid posix_fallocate mmap]) AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid posix_fallocate mmap readlink])
dnl Availability of various not common threadsafe functions dnl Availability of various not common threadsafe functions
AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r]) AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r])
@ -937,8 +937,8 @@ if test "$with_storage_scsi" = "check"; then
AC_DEFINE_UNQUOTED([WITH_STORAGE_SCSI], 1, AC_DEFINE_UNQUOTED([WITH_STORAGE_SCSI], 1,
[whether SCSI backend for storage driver is enabled]) [whether SCSI backend for storage driver is enabled])
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
fi fi
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
LIBPARTED_CFLAGS= LIBPARTED_CFLAGS=

View File

@ -136,7 +136,7 @@ int safezero(int fd, int flags ATTRIBUTE_UNUSED, off_t offset, off_t len)
/* memset wants the mmap'ed file to be present on disk so create a /* memset wants the mmap'ed file to be present on disk so create a
* sparse file * sparse file
*/ */
r = ftruncate(fd, len); r = ftruncate(fd, offset + len);
if (r < 0) if (r < 0)
return -errno; return -errno;
@ -158,6 +158,9 @@ int safezero(int fd, int flags ATTRIBUTE_UNUSED, off_t offset, off_t len)
char *buf; char *buf;
unsigned long long remain, bytes; unsigned long long remain, bytes;
if (lseek(fd, offset, SEEK_SET) < 0)
return errno;
/* Split up the write in small chunks so as not to allocate lots of RAM */ /* Split up the write in small chunks so as not to allocate lots of RAM */
remain = len; remain = len;
bytes = 1024 * 1024; bytes = 1024 * 1024;
@ -949,6 +952,7 @@ int virFileLinkPointsTo(const char *checkLink,
int virFileResolveLink(const char *linkpath, int virFileResolveLink(const char *linkpath,
char **resultpath) char **resultpath)
{ {
#ifdef HAVE_READLINK
struct stat st; struct stat st;
char *buf; char *buf;
int n; int n;
@ -981,6 +985,11 @@ int virFileResolveLink(const char *linkpath,
*resultpath = buf; *resultpath = buf;
return 0; return 0;
#else
if (!(*resultpath = strdup(linkpath)))
return -ENOMEM;
return 0;
#endif
} }