chardev: Properly initialize ChardevCommon components
Commit d0d7708b forgot to parse logging for spice chardevs and virtual consoles. This requires making qemu_chr_parse_common() non-static. While at it, use a temporary variable to make the code shorter, as well as reduce the churn when a later patch alters the layout of simple unions. Signed-off-by: Eric Blake <eblake@redhat.com> CC: Daniel P. Berrange <berrange@redhat.com> Message-Id: <1455927587-28033-2-git-send-email-eblake@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									d61524486c
								
							
						
					
					
						commit
						21a933ea33
					
				| @ -114,6 +114,16 @@ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, | ||||
|                                     void (*init)(struct CharDriverState *s), | ||||
|                                     Error **errp); | ||||
| 
 | ||||
| /**
 | ||||
|  * @qemu_chr_parse_common: | ||||
|  * | ||||
|  * Parse the common options available to all character backends. | ||||
|  * | ||||
|  * @opts the options that still need parsing | ||||
|  * @backend a new backend | ||||
|  */ | ||||
| void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); | ||||
| 
 | ||||
| /**
 | ||||
|  * @qemu_chr_new: | ||||
|  * | ||||
|  | ||||
| @ -3490,7 +3490,7 @@ fail: | ||||
|     return NULL; | ||||
| } | ||||
| 
 | ||||
| static void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend) | ||||
| void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend) | ||||
| { | ||||
|     const char *logfile = qemu_opt_get(opts, "logfile"); | ||||
| 
 | ||||
|  | ||||
| @ -366,26 +366,30 @@ static void qemu_chr_parse_spice_vmc(QemuOpts *opts, ChardevBackend *backend, | ||||
|                                      Error **errp) | ||||
| { | ||||
|     const char *name = qemu_opt_get(opts, "name"); | ||||
|     ChardevSpiceChannel *spicevmc; | ||||
| 
 | ||||
|     if (name == NULL) { | ||||
|         error_setg(errp, "chardev: spice channel: no name given"); | ||||
|         return; | ||||
|     } | ||||
|     backend->u.spicevmc = g_new0(ChardevSpiceChannel, 1); | ||||
|     backend->u.spicevmc->type = g_strdup(name); | ||||
|     spicevmc = backend->u.spicevmc = g_new0(ChardevSpiceChannel, 1); | ||||
|     qemu_chr_parse_common(opts, qapi_ChardevSpiceChannel_base(spicevmc)); | ||||
|     spicevmc->type = g_strdup(name); | ||||
| } | ||||
| 
 | ||||
| static void qemu_chr_parse_spice_port(QemuOpts *opts, ChardevBackend *backend, | ||||
|                                       Error **errp) | ||||
| { | ||||
|     const char *name = qemu_opt_get(opts, "name"); | ||||
|     ChardevSpicePort *spiceport; | ||||
| 
 | ||||
|     if (name == NULL) { | ||||
|         error_setg(errp, "chardev: spice port: no name given"); | ||||
|         return; | ||||
|     } | ||||
|     backend->u.spiceport = g_new0(ChardevSpicePort, 1); | ||||
|     backend->u.spiceport->fqdn = g_strdup(name); | ||||
|     spiceport = backend->u.spiceport = g_new0(ChardevSpicePort, 1); | ||||
|     qemu_chr_parse_common(opts, qapi_ChardevSpicePort_base(spiceport)); | ||||
|     spiceport->fqdn = g_strdup(name); | ||||
| } | ||||
| 
 | ||||
| static void register_types(void) | ||||
|  | ||||
							
								
								
									
										20
									
								
								ui/console.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ui/console.c
									
									
									
									
									
								
							| @ -2060,31 +2060,33 @@ static void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, | ||||
|                               Error **errp) | ||||
| { | ||||
|     int val; | ||||
|     ChardevVC *vc; | ||||
| 
 | ||||
|     backend->u.vc = g_new0(ChardevVC, 1); | ||||
|     vc = backend->u.vc = g_new0(ChardevVC, 1); | ||||
|     qemu_chr_parse_common(opts, qapi_ChardevVC_base(vc)); | ||||
| 
 | ||||
|     val = qemu_opt_get_number(opts, "width", 0); | ||||
|     if (val != 0) { | ||||
|         backend->u.vc->has_width = true; | ||||
|         backend->u.vc->width = val; | ||||
|         vc->has_width = true; | ||||
|         vc->width = val; | ||||
|     } | ||||
| 
 | ||||
|     val = qemu_opt_get_number(opts, "height", 0); | ||||
|     if (val != 0) { | ||||
|         backend->u.vc->has_height = true; | ||||
|         backend->u.vc->height = val; | ||||
|         vc->has_height = true; | ||||
|         vc->height = val; | ||||
|     } | ||||
| 
 | ||||
|     val = qemu_opt_get_number(opts, "cols", 0); | ||||
|     if (val != 0) { | ||||
|         backend->u.vc->has_cols = true; | ||||
|         backend->u.vc->cols = val; | ||||
|         vc->has_cols = true; | ||||
|         vc->cols = val; | ||||
|     } | ||||
| 
 | ||||
|     val = qemu_opt_get_number(opts, "rows", 0); | ||||
|     if (val != 0) { | ||||
|         backend->u.vc->has_rows = true; | ||||
|         backend->u.vc->rows = val; | ||||
|         vc->has_rows = true; | ||||
|         vc->rows = val; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Eric Blake
						Eric Blake