xref: /openbmc/qemu/util/qemu-print.c (revision 4a7c0bd9)
1637de4dbSMarkus Armbruster /*
2637de4dbSMarkus Armbruster  * Print to stream or current monitor
3637de4dbSMarkus Armbruster  *
4637de4dbSMarkus Armbruster  * Copyright (C) 2019 Red Hat Inc.
5637de4dbSMarkus Armbruster  *
6637de4dbSMarkus Armbruster  * Authors:
7637de4dbSMarkus Armbruster  *  Markus Armbruster <armbru@redhat.com>,
8637de4dbSMarkus Armbruster  *
9637de4dbSMarkus Armbruster  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10637de4dbSMarkus Armbruster  * See the COPYING file in the top-level directory.
11637de4dbSMarkus Armbruster  */
12637de4dbSMarkus Armbruster 
13637de4dbSMarkus Armbruster #include "qemu/osdep.h"
14637de4dbSMarkus Armbruster #include "monitor/monitor.h"
15637de4dbSMarkus Armbruster #include "qemu/qemu-print.h"
16637de4dbSMarkus Armbruster 
17637de4dbSMarkus Armbruster /*
18637de4dbSMarkus Armbruster  * Print like vprintf().
19637de4dbSMarkus Armbruster  * Print to current monitor if we have one, else to stdout.
20637de4dbSMarkus Armbruster  */
qemu_vprintf(const char * fmt,va_list ap)21637de4dbSMarkus Armbruster int qemu_vprintf(const char *fmt, va_list ap)
22637de4dbSMarkus Armbruster {
23*947e4744SKevin Wolf     Monitor *cur_mon = monitor_cur();
24637de4dbSMarkus Armbruster     if (cur_mon) {
25637de4dbSMarkus Armbruster         return monitor_vprintf(cur_mon, fmt, ap);
26637de4dbSMarkus Armbruster     }
27637de4dbSMarkus Armbruster     return vprintf(fmt, ap);
28637de4dbSMarkus Armbruster }
29637de4dbSMarkus Armbruster 
30637de4dbSMarkus Armbruster /*
31637de4dbSMarkus Armbruster  * Print like printf().
32637de4dbSMarkus Armbruster  * Print to current monitor if we have one, else to stdout.
33637de4dbSMarkus Armbruster  */
qemu_printf(const char * fmt,...)34637de4dbSMarkus Armbruster int qemu_printf(const char *fmt, ...)
35637de4dbSMarkus Armbruster {
36637de4dbSMarkus Armbruster     va_list ap;
37637de4dbSMarkus Armbruster     int ret;
38637de4dbSMarkus Armbruster 
39637de4dbSMarkus Armbruster     va_start(ap, fmt);
40637de4dbSMarkus Armbruster     ret = qemu_vprintf(fmt, ap);
41637de4dbSMarkus Armbruster     va_end(ap);
42637de4dbSMarkus Armbruster     return ret;
43637de4dbSMarkus Armbruster }
4419aaa4c3SMarkus Armbruster 
4519aaa4c3SMarkus Armbruster /*
4619aaa4c3SMarkus Armbruster  * Print like vfprintf()
4719aaa4c3SMarkus Armbruster  * Print to @stream if non-null, else to current monitor.
4819aaa4c3SMarkus Armbruster  */
qemu_vfprintf(FILE * stream,const char * fmt,va_list ap)4919aaa4c3SMarkus Armbruster int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap)
5019aaa4c3SMarkus Armbruster {
5119aaa4c3SMarkus Armbruster     if (!stream) {
52*947e4744SKevin Wolf         return monitor_vprintf(monitor_cur(), fmt, ap);
5319aaa4c3SMarkus Armbruster     }
5419aaa4c3SMarkus Armbruster     return vfprintf(stream, fmt, ap);
5519aaa4c3SMarkus Armbruster }
5619aaa4c3SMarkus Armbruster 
5719aaa4c3SMarkus Armbruster /*
5819aaa4c3SMarkus Armbruster  * Print like fprintf().
5919aaa4c3SMarkus Armbruster  * Print to @stream if non-null, else to current monitor.
6019aaa4c3SMarkus Armbruster  */
qemu_fprintf(FILE * stream,const char * fmt,...)6119aaa4c3SMarkus Armbruster int qemu_fprintf(FILE *stream, const char *fmt, ...)
6219aaa4c3SMarkus Armbruster {
6319aaa4c3SMarkus Armbruster     va_list ap;
6419aaa4c3SMarkus Armbruster     int ret;
6519aaa4c3SMarkus Armbruster 
6619aaa4c3SMarkus Armbruster     va_start(ap, fmt);
6719aaa4c3SMarkus Armbruster     ret = qemu_vfprintf(stream, fmt, ap);
6819aaa4c3SMarkus Armbruster     va_end(ap);
6919aaa4c3SMarkus Armbruster     return ret;
7019aaa4c3SMarkus Armbruster }
71