Wed Jan 8 2020 09:50:21

Asterisk developer's documentation


term.h File Reference

Handy terminal functions for vt* terms. More...

Go to the source code of this file.

Macros

#define AST_TERM_MAX_ESCAPE_CHARS   23
 Maximum number of characters needed for a color escape sequence, plus a null char. More...
 
#define ESC   0x1b
 
Terminal Attributes
#define ATTR_RESET   0
 
#define ATTR_BRIGHT   1
 
#define ATTR_DIM   2
 
#define ATTR_UNDER   4
 
#define ATTR_BLINK   5
 
#define ATTR_REVER   7
 
#define ATTR_HIDDEN   8
 
Terminal Colors
#define COLOR_BLACK   30
 
#define COLOR_GRAY   (30 | 128)
 
#define COLOR_RED   31
 
#define COLOR_BRRED   (31 | 128)
 
#define COLOR_GREEN   32
 
#define COLOR_BRGREEN   (32 | 128)
 
#define COLOR_BROWN   33
 
#define COLOR_YELLOW   (33 | 128)
 
#define COLOR_BLUE   34
 
#define COLOR_BRBLUE   (34 | 128)
 
#define COLOR_MAGENTA   35
 
#define COLOR_BRMAGENTA   (35 | 128)
 
#define COLOR_CYAN   36
 
#define COLOR_BRCYAN   (36 | 128)
 
#define COLOR_WHITE   37
 
#define COLOR_BRWHITE   (37 | 128)
 

Functions

int ast_term_color_code (struct ast_str **str, int fgcolor, int bgcolor)
 Append a color sequence to an ast_str. More...
 
char * term_color (char *outbuf, const char *inbuf, int fgcolor, int bgcolor, int maxout)
 
char * term_color_code (char *outbuf, int fgcolor, int bgcolor, int maxout)
 Write a color sequence to a string. More...
 
char * term_end (void)
 
void term_filter_escapes (char *line)
 
char * term_prep (void)
 
char * term_prompt (char *outbuf, const char *inbuf, int maxout)
 
char * term_quit (void)
 
char * term_strip (char *outbuf, const char *inbuf, int maxout)
 

Detailed Description

Handy terminal functions for vt* terms.

Definition in file term.h.

Macro Definition Documentation

#define AST_TERM_MAX_ESCAPE_CHARS   23

Maximum number of characters needed for a color escape sequence, plus a null char.

Definition at line 67 of file term.h.

Referenced by handle_cli_agi_show(), handle_show_function(), and print_app_docs().

#define ATTR_BLINK   5

Definition at line 39 of file term.h.

#define ATTR_BRIGHT   1

Definition at line 36 of file term.h.

Referenced by ast_term_init(), check_fgcolor(), term_color(), and term_prompt().

#define ATTR_DIM   2

Definition at line 37 of file term.h.

#define ATTR_HIDDEN   8

Definition at line 41 of file term.h.

#define ATTR_RESET   0

Definition at line 35 of file term.h.

Referenced by ast_term_init().

#define ATTR_REVER   7

Definition at line 40 of file term.h.

#define ATTR_UNDER   4

Definition at line 38 of file term.h.

#define COLOR_BLUE   34

Definition at line 55 of file term.h.

Referenced by data_result_get_color(), opposite(), and term_prompt().

#define COLOR_BRBLUE   (34 | 128)

Definition at line 56 of file term.h.

#define COLOR_BRCYAN   (36 | 128)
#define COLOR_BRGREEN   (32 | 128)

Definition at line 52 of file term.h.

Referenced by ast_frame_dump().

#define COLOR_BRMAGENTA   (35 | 128)

Definition at line 58 of file term.h.

Referenced by ast_frame_dump(), lua_pbx_exec(), pbx_extension_helper(), and realtime_exec().

#define COLOR_BROWN   33

Definition at line 53 of file term.h.

Referenced by ast_term_init(), opposite(), and start_resource().

#define COLOR_BRRED   (31 | 128)

Definition at line 50 of file term.h.

Referenced by ast_frame_dump().

#define COLOR_BRWHITE   (37 | 128)

Definition at line 62 of file term.h.

Referenced by logger_print_normal(), main(), and show_config_description().

#define COLOR_CYAN   36
#define COLOR_GRAY   (30 | 128)

Definition at line 48 of file term.h.

Referenced by fix_header().

#define COLOR_GREEN   32

Definition at line 51 of file term.h.

Referenced by handle_dahdi_show_cadences(), and opposite().

#define COLOR_RED   31

Definition at line 49 of file term.h.

Referenced by opposite().

#define COLOR_WHITE   37
#define COLOR_YELLOW   (33 | 128)

Definition at line 54 of file term.h.

Referenced by ast_frame_dump(), and show_config_description().

Function Documentation

int ast_term_color_code ( struct ast_str **  str,
int  fgcolor,
int  bgcolor 
)

Append a color sequence to an ast_str.

Parameters
strThe string to append to
fgcolorforeground color
bgcolorbackground color
Return values
0success
-1failure

Definition at line 242 of file term.c.

References ast_opt_force_black_background, ast_str_append(), check_bgcolor(), check_colors_allowed(), check_fgcolor(), COLOR_BLACK, and ESC.

Referenced by ast_xmldoc_printable(), data_result_print_cli(), and data_result_print_cli_node().

243 {
244  int attr = 0;
245 
246  if (!check_colors_allowed(fgcolor)) {
247  return -1;
248  }
249 
250  check_fgcolor(&fgcolor, &attr);
251  check_bgcolor(&bgcolor);
252 
254  ast_str_append(str, 0, "%c[%d;%d;%dm", ESC, attr, fgcolor, COLOR_BLACK + 10);
255  } else if (bgcolor) {
256  ast_str_append(str, 0, "%c[%d;%d;%dm", ESC, attr, fgcolor, bgcolor + 10);
257  } else {
258  ast_str_append(str, 0, "%c[%d;%dm", ESC, attr, fgcolor);
259  }
260 
261  return 0;
262 }
static void check_fgcolor(int *fgcolor, int *attr)
Definition: term.c:218
#define ast_opt_force_black_background
Definition: options.h:129
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
Definition: strings.h:900
#define COLOR_BLACK
Definition: term.h:47
static void check_bgcolor(int *bgcolor)
Definition: term.c:230
#define ESC
Definition: term.h:30
static int check_colors_allowed(int fgcolor)
Definition: term.c:237
char* term_color ( char *  outbuf,
const char *  inbuf,
int  fgcolor,
int  bgcolor,
int  maxout 
)

Definition at line 184 of file term.c.

References ast_copy_string(), ast_opt_force_black_background, ast_opt_light_background, ATTR_BRIGHT, COLOR_BLACK, COLOR_WHITE, ESC, and opposite().

Referenced by __ast_custom_function_register(), __ast_register_translator(), ast_frame_dump(), ast_register_application2(), ast_unregister_translator(), fix_header(), handle_cli_agi_show(), handle_dahdi_show_cadences(), handle_show_function(), handle_showmancmd(), logger_print_normal(), lua_pbx_exec(), main(), pbx_extension_helper(), print_app_docs(), realtime_exec(), show_config_description(), and start_resource().

185 {
186  int attr = 0;
187 
188  if (!vt100compat) {
189  ast_copy_string(outbuf, inbuf, maxout);
190  return outbuf;
191  }
192  if (!fgcolor) {
193  ast_copy_string(outbuf, inbuf, maxout);
194  return outbuf;
195  }
196 
197  if (fgcolor & 128) {
199  fgcolor &= ~128;
200  }
201 
202  if (bgcolor) {
203  bgcolor &= ~128;
204  }
205 
207  fgcolor = opposite(fgcolor);
208  }
209 
211  snprintf(outbuf, maxout, "%c[%d;%d;%dm%s%c[%d;%dm", ESC, attr, fgcolor, bgcolor + 10, inbuf, ESC, COLOR_WHITE, COLOR_BLACK + 10);
212  } else {
213  snprintf(outbuf, maxout, "%c[%d;%dm%s%c[0m", ESC, attr, fgcolor, inbuf, ESC);
214  }
215  return outbuf;
216 }
#define ast_opt_force_black_background
Definition: options.h:129
static int vt100compat
Definition: term.c:44
#define COLOR_WHITE
Definition: term.h:61
static int inbuf(struct baseio *bio, FILE *fi)
utility used by inchar(), for base_encode()
#define ATTR_BRIGHT
Definition: term.h:36
#define COLOR_BLACK
Definition: term.h:47
#define ast_opt_light_background
Definition: options.h:128
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition: strings.h:223
#define ESC
Definition: term.h:30
static int opposite(int color)
Definition: term.c:57
char* term_color_code ( char *  outbuf,
int  fgcolor,
int  bgcolor,
int  maxout 
)

Write a color sequence to a string.

Parameters
outbufthe location to write to
fgcolorforeground color
bgcolorbackground color
maxoutmaximum number of characters to write
Returns
outbuf

Definition at line 264 of file term.c.

References ast_opt_force_black_background, check_bgcolor(), check_colors_allowed(), check_fgcolor(), COLOR_BLACK, and ESC.

Referenced by cli_prompt().

265 {
266  int attr = 0;
267 
268  if (!check_colors_allowed(fgcolor)) {
269  *outbuf = '\0';
270  return outbuf;
271  }
272 
273  check_fgcolor(&fgcolor, &attr);
274  check_bgcolor(&bgcolor);
275 
277  snprintf(outbuf, maxout, "%c[%d;%d;%dm", ESC, attr, fgcolor, COLOR_BLACK + 10);
278  } else if (bgcolor) {
279  snprintf(outbuf, maxout, "%c[%d;%d;%dm", ESC, attr, fgcolor, bgcolor + 10);
280  } else {
281  snprintf(outbuf, maxout, "%c[%d;%dm", ESC, attr, fgcolor);
282  }
283 
284  return outbuf;
285 }
static void check_fgcolor(int *fgcolor, int *attr)
Definition: term.c:218
#define ast_opt_force_black_background
Definition: options.h:129
#define COLOR_BLACK
Definition: term.h:47
static void check_bgcolor(int *bgcolor)
Definition: term.c:230
#define ESC
Definition: term.h:30
static int check_colors_allowed(int fgcolor)
Definition: term.c:237
char* term_end ( void  )

Definition at line 365 of file term.c.

References enddata.

Referenced by ast_xmldoc_printable(), consolehandler(), and main().

366 {
367  return enddata;
368 }
static char enddata[80]
Definition: term.c:47
void term_filter_escapes ( char *  line)

Definition at line 338 of file term.c.

References ESC, and len().

Referenced by ast_log().

339 {
340  int i;
341  int len = strlen(line);
342 
343  for (i = 0; i < len; i++) {
344  if (line[i] != ESC)
345  continue;
346  if ((i < (len - 2)) &&
347  (line[i + 1] == 0x5B)) {
348  switch (line[i + 2]) {
349  case 0x30:
350  case 0x31:
351  case 0x33:
352  continue;
353  }
354  }
355  /* replace ESC with a space */
356  line[i] = ' ';
357  }
358 }
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
#define ESC
Definition: term.h:30
char* term_prep ( void  )

Definition at line 360 of file term.c.

References prepdata.

361 {
362  return prepdata;
363 }
static char prepdata[80]
Definition: term.c:46
char* term_prompt ( char *  outbuf,
const char *  inbuf,
int  maxout 
)

Definition at line 309 of file term.c.

References ast_copy_string(), ast_opt_force_black_background, ast_opt_light_background, ATTR_BRIGHT, COLOR_BLACK, COLOR_BLUE, COLOR_WHITE, and ESC.

310 {
311  if (!vt100compat) {
312  ast_copy_string(outbuf, inbuf, maxout);
313  return outbuf;
314  }
316  snprintf(outbuf, maxout, "%c[%d;%dm%c%c[%d;%dm%s",
317  ESC, COLOR_BLUE, COLOR_BLACK + 10,
318  inbuf[0],
319  ESC, COLOR_WHITE, COLOR_BLACK + 10,
320  inbuf + 1);
321  } else if (ast_opt_light_background) {
322  snprintf(outbuf, maxout, "%c[%d;0m%c%c[%d;0m%s",
323  ESC, COLOR_BLUE,
324  inbuf[0],
325  ESC, COLOR_BLACK,
326  inbuf + 1);
327  } else {
328  snprintf(outbuf, maxout, "%c[%d;%d;0m%c%c[%d;%d;0m%s",
330  inbuf[0],
331  ESC, 0, COLOR_WHITE,
332  inbuf + 1);
333  }
334  return outbuf;
335 }
#define ast_opt_force_black_background
Definition: options.h:129
static int vt100compat
Definition: term.c:44
#define COLOR_WHITE
Definition: term.h:61
static int inbuf(struct baseio *bio, FILE *fi)
utility used by inchar(), for base_encode()
#define ATTR_BRIGHT
Definition: term.h:36
#define COLOR_BLACK
Definition: term.h:47
#define ast_opt_light_background
Definition: options.h:128
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition: strings.h:223
#define COLOR_BLUE
Definition: term.h:55
#define ESC
Definition: term.h:30
char* term_quit ( void  )

Definition at line 370 of file term.c.

References quitdata.

Referenced by ast_el_read_char(), main(), and really_quit().

371 {
372  return quitdata;
373 }
static char quitdata[80]
Definition: term.c:48
char* term_strip ( char *  outbuf,
const char *  inbuf,
int  maxout 
)

Definition at line 287 of file term.c.

References ESC, and inbuf().

Referenced by action_command(), ast_log_vsyslog(), and logger_print_normal().

288 {
289  char *outbuf_ptr = outbuf;
290  const char *inbuf_ptr = inbuf;
291 
292  while (outbuf_ptr < outbuf + maxout) {
293  switch (*inbuf_ptr) {
294  case ESC:
295  while (*inbuf_ptr && (*inbuf_ptr != 'm'))
296  inbuf_ptr++;
297  break;
298  default:
299  *outbuf_ptr = *inbuf_ptr;
300  outbuf_ptr++;
301  }
302  if (! *inbuf_ptr)
303  break;
304  inbuf_ptr++;
305  }
306  return outbuf;
307 }
static int inbuf(struct baseio *bio, FILE *fi)
utility used by inchar(), for base_encode()
#define ESC
Definition: term.h:30