diff options
Diffstat (limited to 'emulators/qemu/files/patch-bg')
-rw-r--r-- | emulators/qemu/files/patch-bg | 37 |
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); |