1 /*
2 * Print to stream or current monitor
3 *
4 * Copyright (C) 2019 Red Hat Inc.
5 *
6 * Authors:
7 * Markus Armbruster <armbru@redhat.com>,
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10 * See the COPYING file in the top-level directory.
11 */
12
13 #include "qemu/osdep.h"
14 #include "monitor/monitor.h"
15 #include "qemu/qemu-print.h"
16
17 /*
18 * Print like vprintf().
19 * Print to current monitor if we have one, else to stdout.
20 */
qemu_vprintf(const char * fmt,va_list ap)21 int qemu_vprintf(const char *fmt, va_list ap)
22 {
23 Monitor *cur_mon = monitor_cur();
24 if (cur_mon) {
25 return monitor_vprintf(cur_mon, fmt, ap);
26 }
27 return vprintf(fmt, ap);
28 }
29
30 /*
31 * Print like printf().
32 * Print to current monitor if we have one, else to stdout.
33 */
qemu_printf(const char * fmt,...)34 int qemu_printf(const char *fmt, ...)
35 {
36 va_list ap;
37 int ret;
38
39 va_start(ap, fmt);
40 ret = qemu_vprintf(fmt, ap);
41 va_end(ap);
42 return ret;
43 }
44
45 /*
46 * Print like vfprintf()
47 * Print to @stream if non-null, else to current monitor.
48 */
qemu_vfprintf(FILE * stream,const char * fmt,va_list ap)49 int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap)
50 {
51 if (!stream) {
52 return monitor_vprintf(monitor_cur(), fmt, ap);
53 }
54 return vfprintf(stream, fmt, ap);
55 }
56
57 /*
58 * Print like fprintf().
59 * Print to @stream if non-null, else to current monitor.
60 */
qemu_fprintf(FILE * stream,const char * fmt,...)61 int qemu_fprintf(FILE *stream, const char *fmt, ...)
62 {
63 va_list ap;
64 int ret;
65
66 va_start(ap, fmt);
67 ret = qemu_vfprintf(stream, fmt, ap);
68 va_end(ap);
69 return ret;
70 }
71