brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 911182b Raw
84 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <stdio.h>3#include <stdlib.h>4#include <string.h>5 6#include "helpline.h"7#include "ui.h"8 9char ui_helpline__current[512];10 11static void nop_helpline__pop(void)12{13}14 15static void nop_helpline__push(const char *msg __maybe_unused)16{17}18 19static int nop_helpline__show(const char *fmt __maybe_unused,20			       va_list ap __maybe_unused)21{22	return 0;23}24 25static struct ui_helpline default_helpline_fns = {26	.pop	= nop_helpline__pop,27	.push	= nop_helpline__push,28	.show	= nop_helpline__show,29};30 31struct ui_helpline *helpline_fns = &default_helpline_fns;32 33void ui_helpline__pop(void)34{35	helpline_fns->pop();36}37 38void ui_helpline__push(const char *msg)39{40	helpline_fns->push(msg);41}42 43void ui_helpline__vpush(const char *fmt, va_list ap)44{45	char *s;46 47	if (vasprintf(&s, fmt, ap) < 0)48		vfprintf(stderr, fmt, ap);49	else {50		ui_helpline__push(s);51		free(s);52	}53}54 55void ui_helpline__fpush(const char *fmt, ...)56{57	va_list ap;58 59	va_start(ap, fmt);60	ui_helpline__vpush(fmt, ap);61	va_end(ap);62}63 64void ui_helpline__puts(const char *msg)65{66	ui_helpline__pop();67	ui_helpline__push(msg);68}69 70int ui_helpline__vshow(const char *fmt, va_list ap)71{72	return helpline_fns->show(fmt, ap);73}74 75void ui_helpline__printf(const char *fmt, ...)76{77	va_list ap;78 79	ui_helpline__pop();80	va_start(ap, fmt);81	ui_helpline__vpush(fmt, ap);82	va_end(ap);83}84