Skip to content

Commit f40ecd2

Browse files
committed
non: add cprintf.sh
1 parent 4822076 commit f40ecd2

File tree

3 files changed

+65
-17
lines changed

3 files changed

+65
-17
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ all :
77
$(STRIP) cprintf
88
format :
99
clang-format -i include/cprintf.h cprintf.c test.c main.c
10+
shfmt -w -i 4 cprintf.sh
1011
test :
1112
$(CC) -O0 -Wall -Wno-format-extra-args -Wextra -Wno-format-security -std=gnu11 -Wno-gnu-zero-variadic-macro-arguments -Wno-gnu-statement-expression-from-macro-expansion -pedantic -ggdb -fsanitize=address cprintf.c test.c

cprintf.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/sh
2+
# Just a simple script implementation to replace color sequences in strings with ANSI escape codes.
3+
cprintf() {
4+
CP_BLACK_FG=$'\033[30m'
5+
CP_RED_FG=$'\033[31m'
6+
CP_GREEN_FG=$'\033[32m'
7+
CP_YELLOW_FG=$'\033[33m'
8+
CP_BLUE_FG=$'\033[34m'
9+
CP_PURPLE_FG=$'\033[35m'
10+
CP_CYAN_FG=$'\033[36m'
11+
CP_WHITE_FG=$'\033[37m'
12+
CP_BLACK_BG=$'\033[40m'
13+
CP_RED_BG=$'\033[41m'
14+
CP_GREEN_BG=$'\033[42m'
15+
CP_YELLOW_BG=$'\033[43m'
16+
CP_BLUE_BG=$'\033[44m'
17+
CP_PURPLE_BG=$'\033[45m'
18+
CP_CYAN_BG=$'\033[46m'
19+
CP_WHITE_BG=$'\033[47m'
20+
CP_BOLD=$'\033[1m'
21+
CP_UNDERLINE=$'\033[4m'
22+
CP_RESET=$'\033[0m'
23+
while [ $# -gt 0 ]; do
24+
printf '%b' "$1" | sed \
25+
-e 's/{black}/'"${CP_BLACK_FG}"'/g' \
26+
-e 's/{red}/'"${CP_RED_FG}"'/g' \
27+
-e 's/{green}/'"${CP_GREEN_FG}"'/g' \
28+
-e 's/{yellow}/'"${CP_YELLOW_FG}"'/g' \
29+
-e 's/{blue}/'"${CP_BLUE_FG}"'/g' \
30+
-e 's/{purple}/'"${CP_PURPLE_FG}"'/g' \
31+
-e 's/{cyan}/'"${CP_CYAN_FG}"'/g' \
32+
-e 's/{white}/'"${CP_WHITE_FG}"'/g' \
33+
-e 's/\[black\]/'"${CP_BLACK_BG}"'/g' \
34+
-e 's/\[red\]/'"${CP_RED_BG}"'/g' \
35+
-e 's/\[green\]/'"${CP_GREEN_BG}"'/g' \
36+
-e 's/\[yellow\]/'"${CP_YELLOW_BG}"'/g' \
37+
-e 's/\[blue\]/'"${CP_BLUE_BG}"'/g' \
38+
-e 's/\[purple\]/'"${CP_PURPLE_BG}"'/g' \
39+
-e 's/\[cyan\]/'"${CP_CYAN_BG}"'/g' \
40+
-e 's/\[white\]/'"${CP_WHITE_BG}"'/g' \
41+
-e 's/{bold}/'"${CP_BOLD}"'/g' \
42+
-e 's/{underline}/'"${CP_UNDERLINE}"'/g' \
43+
-e 's/{reset}/'"${CP_RESET}"'/g'
44+
shift
45+
done
46+
}
47+
cprintf $@

include/cprintf.h

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,23 @@ extern bool cprintf_print_color_only_tty;
9797
char *cpgf_buf__ = malloc(cprintf_strlen__(cpgf_f__) + 16); \
9898
sprintf(cpgf_buf__, \
9999
_Generic((cpgf_d__), \
100-
_Bool: (cpgf_d__ ? "true" : "false"), \
101-
char: "%%%sc", \
102-
signed char: "%%%sd", \
103-
unsigned char: "%%%sd", \
104-
short: "%%%shd", \
105-
unsigned short: "%%%shu", \
106-
int: "%%%sd", \
107-
unsigned int: "%%%su", \
108-
long: "%%%sld", \
109-
unsigned long: "%%%slu", \
110-
long long: "%%%slld", \
111-
unsigned long long: "%%%sllu", \
112-
float: "%%%sf", \
113-
double: "%%%sf", \
114-
long double: "%%%sLf", \
115-
void *: "%%%sp", \
116-
default: "{unknown}"), \
100+
_Bool: (cpgf_d__ ? "true" : "false"), \
101+
char: "%%%sc", \
102+
signed char: "%%%sd", \
103+
unsigned char: "%%%sd", \
104+
short: "%%%shd", \
105+
unsigned short: "%%%shu", \
106+
int: "%%%sd", \
107+
unsigned int: "%%%su", \
108+
long: "%%%sld", \
109+
unsigned long: "%%%slu", \
110+
long long: "%%%slld", \
111+
unsigned long long: "%%%sllu", \
112+
float: "%%%sf", \
113+
double: "%%%sf", \
114+
long double: "%%%sLf", \
115+
void *: "%%%sp", \
116+
default: "{unknown}"), \
117117
cprintf_avoid_null__(cpgf_f__)); \
118118
cprintf_mark_buf__(cpgf_buf__); \
119119
cpgf_buf__; \

0 commit comments

Comments
 (0)