Linux Audio

Check our new training course

Linux debugging, profiling, tracing and performance analysis training

Mar 24-27, 2025, special US time zones
Register
Loading...
Note: File does not exist in v3.5.6.
 1// SPDX-License-Identifier: GPL-2.0
 2#include <stdio.h>
 3#include <stdlib.h>
 4#include <string.h>
 5#include <pthread.h>
 6#include <linux/kernel.h>
 7#include <linux/string.h>
 8
 9#include "../helpline.h"
10#include "../ui.h"
11#include "../libslang.h"
12
13char ui_helpline__last_msg[1024];
14bool tui_helpline__set;
15
16static void tui_helpline__pop(void)
17{
18}
19
20static void tui_helpline__push(const char *msg)
21{
22	const size_t sz = sizeof(ui_helpline__current);
23
24	SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
25	SLsmg_set_color(0);
26	SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols);
27	SLsmg_refresh();
28	strlcpy(ui_helpline__current, msg, sz);
29}
30
31static int tui_helpline__show(const char *format, va_list ap)
32{
33	int ret;
34	static int backlog;
35
36	pthread_mutex_lock(&ui__lock);
37	ret = vscnprintf(ui_helpline__last_msg + backlog,
38			sizeof(ui_helpline__last_msg) - backlog, format, ap);
39	backlog += ret;
40
41	tui_helpline__set = true;
42
43	if (ui_helpline__last_msg[backlog - 1] == '\n') {
44		ui_helpline__puts(ui_helpline__last_msg);
45		SLsmg_refresh();
46		backlog = 0;
47	}
48	pthread_mutex_unlock(&ui__lock);
49
50	return ret;
51}
52
53struct ui_helpline tui_helpline_fns = {
54	.pop	= tui_helpline__pop,
55	.push	= tui_helpline__push,
56	.show	= tui_helpline__show,
57};
58
59void ui_helpline__init(void)
60{
61	helpline_fns = &tui_helpline_fns;
62	ui_helpline__puts(" ");
63}