diff --git a/monitor.c b/monitor.c index de0783bf98a3e899f9627bc2196ab73c9bba6ee1..379733333c92717a227e25a8ca2d9f34e32eb7f3 100644 --- a/monitor.c +++ b/monitor.c @@ -235,6 +235,12 @@ static void do_info_version(void) term_printf("%s\n", QEMU_VERSION); } +static void do_info_name(void) +{ + if (qemu_name) + term_printf("%s\n", qemu_name); +} + static void do_info_block(void) { bdrv_info(); @@ -1314,6 +1320,8 @@ static term_cmd_t info_cmds[] = { "", "show which guest mouse is receiving events" }, { "vnc", "", do_info_vnc, "", "show the vnc server status"}, + { "name", "", do_info_name, + "", "show the current VM name" }, #if defined(TARGET_PPC) { "cpustats", "", do_info_cpu_stats, "", "show CPU statistics", }, diff --git a/qemu-doc.texi b/qemu-doc.texi index 1acd7451a326c4185732b9c2a6f0689c9a1e1714..74d0edf057b4cd8951ecd9af4a9b055aae668f8f 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -331,6 +331,10 @@ slows down the IDE transfers). Load the contents of file as an option ROM. This option is useful to load things like EtherBoot. +@item -name string +Sets the name of the guest. This name will be display in the SDL window +caption. The name will also be used for the VNC server. + @end table USB options: diff --git a/sdl.c b/sdl.c index 0cb22411df23fbf9053165fce2e4dbd4714af7c6..aa5c669929421c12345a02cb2e17f97f894b6512 100644 --- a/sdl.c +++ b/sdl.c @@ -216,13 +216,18 @@ static void sdl_process_key(SDL_KeyboardEvent *ev) static void sdl_update_caption(void) { char buf[1024]; - strcpy(buf, "QEMU"); - if (!vm_running) { - strcat(buf, " [Stopped]"); - } - if (gui_grab) { - strcat(buf, " - Press Ctrl-Alt to exit grab"); - } + const char *status = ""; + + if (!vm_running) + status = " [Stopped]"; + else if (gui_grab) + status = " - Press Ctrl-Alt to exit grab"; + + if (qemu_name) + snprintf(buf, sizeof(buf), "QEMU (%s)%s", qemu_name, status); + else + snprintf(buf, sizeof(buf), "QEMU%s", status); + SDL_WM_SetCaption(buf, "QEMU"); } diff --git a/vl.c b/vl.c index fc0f8ff4c3bf8a7211bd30e3477cad1391c9f692..86677854bc7a85722eef03f139d9350fd3e2d84e 100644 --- a/vl.c +++ b/vl.c @@ -189,6 +189,7 @@ const char *option_rom[MAX_OPTION_ROMS]; int nb_option_roms; int semihosting_enabled = 0; int autostart = 1; +const char *qemu_name; /***********************************************************/ /* x86 ISA bus support */ @@ -6395,6 +6396,7 @@ void help(void) #if defined(TARGET_PPC) || defined(TARGET_SPARC) "-g WxH[xDEPTH] Set the initial graphical resolution and depth\n" #endif + "-name string set the name of the guest\n" "\n" "Network options:\n" "-net nic[,vlan=n][,macaddr=addr][,model=type]\n" @@ -6553,7 +6555,8 @@ enum { QEMU_OPTION_no_reboot, QEMU_OPTION_daemonize, QEMU_OPTION_option_rom, - QEMU_OPTION_semihosting + QEMU_OPTION_semihosting, + QEMU_OPTION_name, }; typedef struct QEMUOption { @@ -6644,6 +6647,7 @@ const QEMUOption qemu_options[] = { #if defined(TARGET_ARM) { "semihosting", 0, QEMU_OPTION_semihosting }, #endif + { "name", HAS_ARG, QEMU_OPTION_name }, { NULL }, }; @@ -7340,6 +7344,9 @@ int main(int argc, char **argv) case QEMU_OPTION_semihosting: semihosting_enabled = 1; break; + case QEMU_OPTION_name: + qemu_name = optarg; + break; } } } diff --git a/vl.h b/vl.h index 464bf899c0b2697cd6dcf298931bcd95b0e01715..b911f92b4b70001f1a346a14ea1985ef5dd57fa2 100644 --- a/vl.h +++ b/vl.h @@ -114,6 +114,7 @@ void hw_error(const char *fmt, ...); extern const char *bios_dir; extern int vm_running; +extern const char *qemu_name; typedef struct vm_change_state_entry VMChangeStateEntry; typedef void VMChangeStateHandler(void *opaque, int running); diff --git a/vnc.c b/vnc.c index f729e05d8fb723c3c3eb04e0c42cb5a1ea4fd87a..aba60d4c24523470640d07421ffc2d2cebe22037 100644 --- a/vnc.c +++ b/vnc.c @@ -1056,6 +1056,8 @@ static int protocol_client_msg(VncState *vs, char *data, size_t len) static int protocol_client_init(VncState *vs, char *data, size_t len) { char pad[3] = { 0, 0, 0 }; + char buf[1024]; + int size; vs->width = vs->ds->width; vs->height = vs->ds->height; @@ -1100,8 +1102,13 @@ static int protocol_client_init(VncState *vs, char *data, size_t len) vnc_write(vs, pad, 3); /* padding */ - vnc_write_u32(vs, 4); - vnc_write(vs, "QEMU", 4); + if (qemu_name) + size = snprintf(buf, sizeof(buf), "QEMU (%s)", qemu_name); + else + size = snprintf(buf, sizeof(buf), "QEMU"); + + vnc_write_u32(vs, size); + vnc_write(vs, buf, size); vnc_flush(vs); vnc_read_when(vs, protocol_client_msg, 1);