aboutsummaryrefslogtreecommitdiff
path: root/emulators/qemu/files/patch-bg
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/qemu/files/patch-bg')
-rw-r--r--emulators/qemu/files/patch-bg37
1 files changed, 37 insertions, 0 deletions
diff --git a/emulators/qemu/files/patch-bg b/emulators/qemu/files/patch-bg
new file mode 100644
index 000000000000..26d0bf2833bc
--- /dev/null
+++ b/emulators/qemu/files/patch-bg
@@ -0,0 +1,37 @@
+Index: qemu/qemu-mkcow.c
+@@ -21,6 +21,8 @@
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
++#include "config-host.h"
++
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+@@ -36,6 +38,12 @@
+ #include <sys/stat.h>
+ #include <netinet/in.h>
+
++#ifdef _BSD
++#include <sys/types.h>
++#include <sys/ioctl.h>
++#include <sys/disk.h>
++#endif
++
+ #include "cow.h"
+
+ #include "bswap.h"
+@@ -56,6 +64,13 @@ int cow_create(int cow_fd, const char *i
+ perror(image_filename);
+ exit(1);
+ }
++#ifdef _BSD
++ struct stat sb;
++ if (!fstat(fd,&sb) && (S_IFCHR & sb.st_mode)) {
++ if (ioctl(fd, DIOCGMEDIASIZE, (off_t *)&image_sectors))
++ image_sectors = lseek(fd, 0LL, SEEK_END);
++ } else
++#endif
+ image_sectors = lseek64(fd, 0, SEEK_END);
+ if (fstat(fd, &st) != 0) {
+ close(fd);