Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.4-rc1 79 lines 1.4 kB view raw
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 10void ui_helpline__pop(void) 11{ 12} 13 14char ui_helpline__current[512]; 15 16void 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 27void 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 39void 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 48void ui_helpline__puts(const char *msg) 49{ 50 ui_helpline__pop(); 51 ui_helpline__push(msg); 52} 53 54void ui_helpline__init(void) 55{ 56 ui_helpline__puts(" "); 57} 58 59char ui_helpline__last_msg[1024]; 60 61int 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}