[PATCH] Replace truncate() with ftruncate()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>

Mingw32 does not have any truncate() API defined, but it does
have ftruncate(). So replace use of the former with the latter
---
 src/util/storage_file.c |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/util/storage_file.c b/src/util/storage_file.c
index 8260adb..a8661e3 100644
--- a/src/util/storage_file.c
+++ b/src/util/storage_file.c
@@ -939,12 +939,29 @@ virStorageFileFreeMetadata(virStorageFileMetadata *meta)
 int
 virStorageFileResize(const char *path, unsigned long long capacity)
 {
-    if (truncate(path, capacity) < 0) {
+    int fd = -1;
+    int ret = -1;
+
+    if ((fd = open(path, O_RDWR)) < 0) {
+        virReportSystemError(errno, _("Unable to open '%s'"), path);
+        goto cleanup;
+    }
+
+    if (ftruncate(fd, capacity) < 0) {
         virReportSystemError(errno, _("Failed to truncate file '%s'"), path);
-        return -1;
+        goto cleanup;
     }
 
-    return 0;
+    if (VIR_CLOSE(fd) < 0) {
+        virReportSystemError(errno, _("Unable to save '%s'"), path);
+        goto cleanup;
+    }
+
+    ret = 0;
+
+cleanup:
+    VIR_FORCE_CLOSE(fd);
+    return ret;
 }
 
 #ifdef __linux__
-- 
1.7.7.6

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]