cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

helpline.c (1356B)


      1// SPDX-License-Identifier: GPL-2.0
      2#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}