~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/ui/helpline.c

Version: ~ [ linux-5.3-rc4 ] ~ [ linux-5.2.8 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.66 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.138 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.189 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.189 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.71 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 
  5 #include "../debug.h"
  6 #include "helpline.h"
  7 #include "ui.h"
  8 #include "libslang.h"
  9 
 10 void ui_helpline__pop(void)
 11 {
 12 }
 13 
 14 char ui_helpline__current[512];
 15 
 16 void ui_helpline__push(const char *msg)
 17 {
 18         const size_t sz = sizeof(ui_helpline__current);
 19 
 20         SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
 21         SLsmg_set_color(0);
 22         SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols);
 23         SLsmg_refresh();
 24         strncpy(ui_helpline__current, msg, sz)[sz - 1] = '\0';
 25 }
 26 
 27 void ui_helpline__vpush(const char *fmt, va_list ap)
 28 {
 29         char *s;
 30 
 31         if (vasprintf(&s, fmt, ap) < 0)
 32                 vfprintf(stderr, fmt, ap);
 33         else {
 34                 ui_helpline__push(s);
 35                 free(s);
 36         }
 37 }
 38 
 39 void ui_helpline__fpush(const char *fmt, ...)
 40 {
 41         va_list ap;
 42 
 43         va_start(ap, fmt);
 44         ui_helpline__vpush(fmt, ap);
 45         va_end(ap);
 46 }
 47 
 48 void ui_helpline__puts(const char *msg)
 49 {
 50         ui_helpline__pop();
 51         ui_helpline__push(msg);
 52 }
 53 
 54 void ui_helpline__init(void)
 55 {
 56         ui_helpline__puts(" ");
 57 }
 58 
 59 char ui_helpline__last_msg[1024];
 60 
 61 int ui_helpline__show_help(const char *format, va_list ap)
 62 {
 63         int ret;
 64         static int backlog;
 65 
 66         pthread_mutex_lock(&ui__lock);
 67         ret = vscnprintf(ui_helpline__last_msg + backlog,
 68                         sizeof(ui_helpline__last_msg) - backlog, format, ap);
 69         backlog += ret;
 70 
 71         if (ui_helpline__last_msg[backlog - 1] == '\n') {
 72                 ui_helpline__puts(ui_helpline__last_msg);
 73                 SLsmg_refresh();
 74                 backlog = 0;
 75         }
 76         pthread_mutex_unlock(&ui__lock);
 77 
 78         return ret;
 79 }
 80 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp