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>
* 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
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
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,
[whether SCSI backend for storage driver is enabled])
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
fi
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
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
* sparse file
*/
r = ftruncate(fd, len);
r = ftruncate(fd, offset + len);
if (r < 0)
return -errno;
@ -158,6 +158,9 @@ int safezero(int fd, int flags ATTRIBUTE_UNUSED, off_t offset, off_t len)
char *buf;
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 */
remain = len;
bytes = 1024 * 1024;
@ -949,6 +952,7 @@ int virFileLinkPointsTo(const char *checkLink,
int virFileResolveLink(const char *linkpath,
char **resultpath)
{
#ifdef HAVE_READLINK
struct stat st;
char *buf;
int n;
@ -981,6 +985,11 @@ int virFileResolveLink(const char *linkpath,
*resultpath = buf;
return 0;
#else
if (!(*resultpath = strdup(linkpath)))
return -ENOMEM;
return 0;
#endif
}