On 2 September 2015 at 01:56, Programmingkid <programmingk...@gmail.com> wrote: > Add "Mount Image File..." and a "Eject Image File" menu items to > cocoa interface. This patch makes sharing files between the > host and the guest user-friendly. > > The "Mount Image File..." menu item displays a dialog box having the > user pick an image file to use in QEMU. The image file is setup as > a USB flash drive. The user can do the equivalent of removing the > flash drive by selecting the file in the "Eject Image File" submenu. > > Signed-off-by: John Arbuckle <programmingk...@gmail.com> > > --- > ui/cocoa.m | 212 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 files changed, 210 insertions(+), 1 deletions(-) > > diff --git a/ui/cocoa.m b/ui/cocoa.m > index 334e6f6..6c0ec18 100644 > --- a/ui/cocoa.m > +++ b/ui/cocoa.m > @@ -52,6 +52,9 @@ > #endif > > > > #define cgrect(nsrect) (*(CGRect *)&(nsrect)) > +#define USB_DISK_ID "USB_DISK" > +#define EJECT_IMAGE_FILE_TAG 2099 > > > > typedef struct { > int width; > @@ -263,6 +266,43 @@ static void handleAnyDeviceErrors(Error * err) > } > } > > > > +/* Sends a command to the monitor console */ > +static void sendMonitorCommand(const char * commandString) > +{ > + int index; > + char * consoleName; > + static QemuConsole *monitor; > + > + /* If the monitor console hasn't been found yet */ > + if(!monitor) { > + index = 0; > + /* Find the monitor console */ > + while (qemu_console_lookup_by_index(index) != NULL) { > + consoleName = > qemu_console_get_label(qemu_console_lookup_by_index(index)); > + if(strstr(consoleName, "monitor")) { > + monitor = qemu_console_lookup_by_index(index); > + break; > + } > + index++; > + } > + } > + > + /* If the monitor console was not found */ > + if(!monitor) { > + NSBeep(); > + QEMU_Alert(@"Failed to find the monitor console!"); > + return; > + } > + > + /* send each letter in the commandString to the monitor */ > + for (index = 0; index < strlen(commandString); index++) { > + kbd_put_keysym_console(monitor, commandString[index]); > + }
We're doing this by sending a string to the human monitor? That definitely doesn't seem like the right way to do this (and there might not even be a human monitor to talk to)... What happens on machines with no USB bus? thanks -- PMM