License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-2.6-block.git] / tools / perf / ui / helpline.c
CommitLineData
b2441318 1// SPDX-License-Identifier: GPL-2.0
5575536f
ACM
2#include <stdio.h>
3#include <stdlib.h>
4610e413 4#include <string.h>
5575536f 5
1e6dd077 6#include "../debug.h"
5575536f 7#include "helpline.h"
5c35d69f 8#include "ui.h"
175729fc 9#include "../util.h"
5575536f 10
e6e90468
NK
11char ui_helpline__current[512];
12
13static void nop_helpline__pop(void)
5575536f 14{
5575536f
ACM
15}
16
1d037ca1 17static void nop_helpline__push(const char *msg __maybe_unused)
e6e90468
NK
18{
19}
4610e413 20
b56e5331
NK
21static int nop_helpline__show(const char *fmt __maybe_unused,
22 va_list ap __maybe_unused)
23{
24 return 0;
25}
26
e6e90468
NK
27static struct ui_helpline default_helpline_fns = {
28 .pop = nop_helpline__pop,
29 .push = nop_helpline__push,
b56e5331 30 .show = nop_helpline__show,
e6e90468
NK
31};
32
33struct ui_helpline *helpline_fns = &default_helpline_fns;
34
35void ui_helpline__pop(void)
5575536f 36{
e6e90468
NK
37 helpline_fns->pop();
38}
4610e413 39
e6e90468
NK
40void ui_helpline__push(const char *msg)
41{
42 helpline_fns->push(msg);
5575536f
ACM
43}
44
59e8fe32 45void ui_helpline__vpush(const char *fmt, va_list ap)
5575536f
ACM
46{
47 char *s;
48
49 if (vasprintf(&s, fmt, ap) < 0)
50 vfprintf(stderr, fmt, ap);
51 else {
52 ui_helpline__push(s);
53 free(s);
54 }
55}
56
57void ui_helpline__fpush(const char *fmt, ...)
58{
59 va_list ap;
60
61 va_start(ap, fmt);
62 ui_helpline__vpush(fmt, ap);
63 va_end(ap);
64}
65
66void ui_helpline__puts(const char *msg)
67{
68 ui_helpline__pop();
69 ui_helpline__push(msg);
70}
b56e5331
NK
71
72int ui_helpline__vshow(const char *fmt, va_list ap)
73{
74 return helpline_fns->show(fmt, ap);
75}
9484b86e
ACM
76
77void ui_helpline__printf(const char *fmt, ...)
78{
79 va_list ap;
80
81 ui_helpline__pop();
82 va_start(ap, fmt);
83 ui_helpline__vpush(fmt, ap);
84 va_end(ap);
85}