summaryrefslogtreecommitdiff
path: root/emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp
diff options
context:
space:
mode:
authorBeat Gaetzi <beat@FreeBSD.org>2009-08-14 16:10:23 +0000
committerBeat Gaetzi <beat@FreeBSD.org>2009-08-14 16:10:23 +0000
commitd75f09543a64492e0f1e6148df41fc013ad198bc (patch)
treee900f14c4308db8119b08ec9d4ffe7523947c897 /emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp
parent- Update to 0.9 (diff)
- Update to 3.0.51r22226
- Update Guest Additions to 3.0.4 - Add wiki page link to pkg-message - Add missing libxslt dependency [1] - Add NLS support [2] - Installing C and Python bindings [3] - Add patch to pass a physical disk to vbox [4] Submitted by: Guido Falsi <mad AT madpilot.net> [1], nork [2], Bernhard Froehlich <decke AT bluelife.at> [3], nox [4] Thanks to: All testers and patch submitters their patch already included upstream On behalf of: vbox@ (decke, dhn, miwi, nox)
Diffstat (limited to 'emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp')
-rw-r--r--emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp b/emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp
new file mode 100644
index 000000000000..0a1f735fb79a
--- /dev/null
+++ b/emulators/virtualbox-ose-kmod/files/patch-src-VBox-Frontends-VBoxManage-VBoxInternalManage.cpp
@@ -0,0 +1,50 @@
+Index: src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp
+@@ -54,7 +54,8 @@
+ #ifdef RT_OS_WINDOWS
+ # include <windows.h>
+ # include <winioctl.h>
+-#elif defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS)
++#elif defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) \
++ || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
+ # include <errno.h>
+ # include <sys/ioctl.h>
+ # include <sys/types.h>
+@@ -76,6 +77,9 @@
+ # include <sys/dkio.h>
+ # include <sys/vtoc.h>
+ #endif /* RT_OS_SOLARIS */
++#ifdef RT_OS_FREEBSD
++# include <sys/disk.h>
++#endif /* RT_OS_FREEBSD */
+
+ using namespace com;
+
+@@ -1013,6 +1017,28 @@
+ vrc = VERR_INVALID_PARAMETER;
+ goto out;
+ }
++#elif defined(RT_OS_FREEBSD)
++ struct stat DevStat;
++ if (!fstat(RawFile, &DevStat) && S_ISCHR(DevStat.st_mode))
++ {
++ off_t cMediasize = 0;
++ if (!ioctl(RawFile, DIOCGMEDIASIZE, &cMediasize))
++ {
++ cbSize = cMediasize;
++ }
++ else
++ {
++ vrc = RTErrConvertFromErrno(errno);
++ RTPrintf("Cannot get the block count for file '%s': %Rrc", rawdisk.raw(), vrc);
++ goto out;
++ }
++ }
++ else
++ {
++ RTPrintf("File '%s' is no character device\n", rawdisk.raw());
++ vrc = VERR_INVALID_PARAMETER;
++ goto out;
++ }
+ #else /* all unrecognized OSes */
+ /* Hopefully this works on all other hosts. If it doesn't, it'll just fail
+ * creating the VMDK, so no real harm done. */