From 5a6b17235a10aea87b3b74122df861536a6efdd2 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 3 Sep 2026 12:40:05 +0000 Subject: add safe_output: async-signal-safe output --- src/util/io.cc | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/util') diff --git a/src/util/io.cc b/src/util/io.cc index 1fe37e5..09479e6 100644 --- a/src/util/io.cc +++ b/src/util/io.cc @@ -22,7 +22,7 @@ void safe_print(const char *s, bool ignore_wrap) void safe_print(int x) { int errno_old = errno; - char msg[LENGTH]; + char msg[NUMBER_LENGTH]; itoa(x, msg, DECIMAL); safe_print(msg); errno = errno_old; @@ -110,6 +110,37 @@ char *itoa(int num, char* str, int base) return str; } +void wrap_eliminator(char *s, char replacement) +{ + if (replacement == '\0') + { + char *r = s; + char *w = s; + while (*r) { + if (*r != '\n') + *w++ = *r; + r++; + } + *w = '\0'; + return; + } + size_t len = strlen(s); + for (size_t i = 0; i < len; i++) + if (s[i] == '\n') + s[i] = replacement; +} + +void write_helper(const char *s) +{ + int errno_old = errno; + + size_t len = strlen(s); + for (size_t i = 0; i < len; i++) + write(STDIN_FILENO, &s[i], 1); + + errno = errno_old; +} + /* * usage - print a help message */ -- cgit v1.3.1-4-g156e