Commit | Line | Data |
---|---|---|
5575536f ACM |
1 | #include <stdio.h> |
2 | #include <stdlib.h> | |
4610e413 | 3 | #include <string.h> |
5575536f | 4 | |
1e6dd077 | 5 | #include "../debug.h" |
5575536f | 6 | #include "helpline.h" |
5c35d69f | 7 | #include "ui.h" |
175729fc | 8 | #include "../util.h" |
5575536f | 9 | |
e6e90468 NK |
10 | char ui_helpline__current[512]; |
11 | ||
12 | static void nop_helpline__pop(void) | |
5575536f | 13 | { |
5575536f ACM |
14 | } |
15 | ||
1d037ca1 | 16 | static void nop_helpline__push(const char *msg __maybe_unused) |
e6e90468 NK |
17 | { |
18 | } | |
4610e413 | 19 | |
b56e5331 NK |
20 | static int nop_helpline__show(const char *fmt __maybe_unused, |
21 | va_list ap __maybe_unused) | |
22 | { | |
23 | return 0; | |
24 | } | |
25 | ||
e6e90468 NK |
26 | static struct ui_helpline default_helpline_fns = { |
27 | .pop = nop_helpline__pop, | |
28 | .push = nop_helpline__push, | |
b56e5331 | 29 | .show = nop_helpline__show, |
e6e90468 NK |
30 | }; |
31 | ||
32 | struct ui_helpline *helpline_fns = &default_helpline_fns; | |
33 | ||
34 | void ui_helpline__pop(void) | |
5575536f | 35 | { |
e6e90468 NK |
36 | helpline_fns->pop(); |
37 | } | |
4610e413 | 38 | |
e6e90468 NK |
39 | void ui_helpline__push(const char *msg) |
40 | { | |
41 | helpline_fns->push(msg); | |
5575536f ACM |
42 | } |
43 | ||
59e8fe32 | 44 | void ui_helpline__vpush(const char *fmt, va_list ap) |
5575536f ACM |
45 | { |
46 | char *s; | |
47 | ||
48 | if (vasprintf(&s, fmt, ap) < 0) | |
49 | vfprintf(stderr, fmt, ap); | |
50 | else { | |
51 | ui_helpline__push(s); | |
52 | free(s); | |
53 | } | |
54 | } | |
55 | ||
56 | void ui_helpline__fpush(const char *fmt, ...) | |
57 | { | |
58 | va_list ap; | |
59 | ||
60 | va_start(ap, fmt); | |
61 | ui_helpline__vpush(fmt, ap); | |
62 | va_end(ap); | |
63 | } | |
64 | ||
65 | void ui_helpline__puts(const char *msg) | |
66 | { | |
67 | ui_helpline__pop(); | |
68 | ui_helpline__push(msg); | |
69 | } | |
b56e5331 NK |
70 | |
71 | int ui_helpline__vshow(const char *fmt, va_list ap) | |
72 | { | |
73 | return helpline_fns->show(fmt, ap); | |
74 | } |