Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0-only */
2 : /*
3 : * Copyright (c) 2023 Meta Platforms, Inc. and affiliates.
4 : */
5 :
6 : #include "core/logger.h"
7 :
8 : #include <stdbool.h>
9 : #include <stdio.h>
10 : #include <unistd.h>
11 :
12 : /// If true, log messages will be printed in colors.
13 : static bool _bf_can_print_color = false;
14 :
15 0 : void bf_logger_setup(void)
16 : {
17 0 : _bf_can_print_color = isatty(fileno(stdout)) && isatty(fileno(stderr));
18 0 : }
19 :
20 44 : const char *bf_logger_get_color(enum bf_color color, enum bf_style style)
21 : {
22 44 : if (!_bf_can_print_color) {
23 : return "";
24 : }
25 :
26 0 : switch (color) {
27 0 : case BF_COLOR_DEFAULT:
28 0 : return (style == BF_STYLE_BOLD) ? "\033[1;39m" : "\033[0;39m";
29 0 : case BF_COLOR_BLACK:
30 0 : return (style == BF_STYLE_BOLD) ? "\033[1;30m" : "\033[0;30m";
31 0 : case BF_COLOR_RED:
32 0 : return (style == BF_STYLE_BOLD) ? "\033[1;31m" : "\033[0;31m";
33 0 : case BF_COLOR_GREEN:
34 0 : return (style == BF_STYLE_BOLD) ? "\033[1;32m" : "\033[0;32m";
35 0 : case BF_COLOR_YELLOW:
36 0 : return (style == BF_STYLE_BOLD) ? "\033[1;33m" : "\033[0;33m";
37 0 : case BF_COLOR_BLUE:
38 0 : return (style == BF_STYLE_BOLD) ? "\033[1;34m" : "\033[0;34m";
39 0 : case BF_COLOR_MAGENTA:
40 0 : return (style == BF_STYLE_BOLD) ? "\033[1;35m" : "\033[0;35m";
41 0 : case BF_COLOR_CYAN:
42 0 : return (style == BF_STYLE_BOLD) ? "\033[1;36m" : "\033[0;36m";
43 0 : case BF_COLOR_LIGHT_GRAY:
44 0 : return (style == BF_STYLE_BOLD) ? "\033[1;37m" : "\033[0;37m";
45 0 : case BF_COLOR_DARK_GRAY:
46 0 : return (style == BF_STYLE_BOLD) ? "\033[1;90m" : "\033[0;90m";
47 0 : case BF_COLOR_LIGHT_RED:
48 0 : return (style == BF_STYLE_BOLD) ? "\033[1;91m" : "\033[0;91m";
49 0 : case BF_COLOR_LIGHT_GREEN:
50 0 : return (style == BF_STYLE_BOLD) ? "\033[1;92m" : "\033[0;92m";
51 0 : case BF_COLOR_LIGHT_YELLOW:
52 0 : return (style == BF_STYLE_BOLD) ? "\033[1;93m" : "\033[0;93m";
53 0 : case BF_COLOR_LIGHT_BLUE:
54 0 : return (style == BF_STYLE_BOLD) ? "\033[1;94m" : "\033[0;94m";
55 0 : case BF_COLOR_LIGHT_MAGENTA:
56 0 : return (style == BF_STYLE_BOLD) ? "\033[1;95m" : "\033[0;95m";
57 0 : case BF_COLOR_LIGHT_CYAN:
58 0 : return (style == BF_STYLE_BOLD) ? "\033[1;96m" : "\033[0;96m";
59 0 : case BF_COLOR_WHITE:
60 0 : return (style == BF_STYLE_BOLD) ? "\033[1;97m" : "\033[0;97m";
61 : default:
62 : return "\033[0m";
63 : }
64 : }
|