summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2009-04-02 18:42:33 +0000
committerDaniel P. Berrange <berrange@redhat.com>2009-04-02 18:42:33 +0000
commitd9ec9c693756ddabcc8f243c083b4f169d9e73f8 (patch)
treebfa211469fea713b6a6a91ab7d37d8456908446b
parent0722925986d681becbfb9919134e3468cc06cf2c (diff)
downloadlibvirt-d9ec9c693756ddabcc8f243c083b4f169d9e73f8.tar.gz
Fix mingw32 portability
-rw-r--r--ChangeLog7
-rw-r--r--configure.in4
-rw-r--r--src/util.c11
3 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3e84344131..4bcaf13eb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/configure.in b/configure.in
index 392f2b9f05..70a6b1ac77 100644
--- a/configure.in
+++ b/configure.in
@@ -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=
diff --git a/src/util.c b/src/util.c
index 65088b04c5..5abdbbcec4 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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
}