ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
string.h
Go to the documentation of this file.
1#pragma once
2
3#include <libplatform/util/string.h>
4
44
45#include <stddef.h>
46#include <stdbool.h>
47#include <stdarg.h>
48#include <stdio.h>
50
51#ifdef _WIN32
52#include <BaseTsd.h>
53typedef SSIZE_T ssize_t;
54#else
55#include <sys/types.h>
56#endif
57
58int platform_vsnprintf(char *str, size_t size, const char *format, va_list ap);
59int platform_asprintf(char **strp, const char *format, ...);
60int platform_vasprintf(char **strp, const char *format, va_list ap);
61char *platform_strdup(const char *s);
62int platform_strcasecmp(const char *s1, const char *s2);
63int platform_strncasecmp(const char *s1, const char *s2, size_t n);
64char *platform_strtok_r(char *str, const char *delim, char **saveptr);
65size_t platform_strlcpy(char *dst, const char *src, size_t size);
66int platform_strncpy(char *dst, size_t dst_size, const char *src, size_t count);
67ssize_t platform_getline(char **lineptr, size_t *n, FILE *stream);
68asciichat_error_t platform_escape_shell_path(const char *path, char *output, size_t output_size);
69
70
71/* ============================================================================
72 * String Escaping Functions
73 * @{
74 */
75
93void escape_ascii(const char *str, const char *escape_char, char *out_buffer, size_t out_buffer_size);
94
126bool validate_shell_safe(const char *str, const char *allowed_chars);
127
153bool escape_shell_single_quotes(const char *str, char *out_buffer, size_t out_buffer_size);
154
179bool escape_shell_double_quotes(const char *str, char *out_buffer, size_t out_buffer_size);
180
207bool string_needs_shell_quoting(const char *str);
208
239bool escape_path_for_shell(const char *path, char *out_buffer, size_t out_buffer_size);
240
242
243/* ============================================================================
244 * String Formatting and Display
245 * @{
246 */
247
248#include "../log/log.h"
249
283const char *colored_string(log_color_t color, const char *text);
287
307void truncate_with_ellipsis(const char *input, char *output, size_t output_size, int max_width);
308
318void truncate_with_ellipsis_mode(const char *input, char *output, size_t output_size, int max_width, bool utf8);
319
352void strip_ansi_codes(const char *input, char *output, size_t output_size);
353
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
log_color_t
Color enum for logging - indexes into color arrays.
Definition log/log.h:147
const char * colored_string(log_color_t color, const char *text)
Build a colored string for terminal output.
Definition string.c:284
int colored_string_set_output_fd(int fd)
Definition string.c:274
void strip_ansi_codes(const char *input, char *output, size_t output_size)
Strip ANSI escape codes from a string.
Definition string.c:374
bool escape_shell_double_quotes(const char *str, char *out_buffer, size_t out_buffer_size)
Escape a string for safe use in shell commands (double quotes, Windows-compatible).
void truncate_with_ellipsis_mode(const char *input, char *output, size_t output_size, int max_width, bool utf8)
Truncate a string to a maximum display width with a terminal-appropriate ellipsis.
Definition string.c:334
bool escape_shell_single_quotes(const char *str, char *out_buffer, size_t out_buffer_size)
Validate that a string contains only safe characters for shell commands.
void escape_ascii(const char *str, const char *escape_char, char *out_buffer, size_t out_buffer_size)
Escape ASCII characters in a string.
bool escape_path_for_shell(const char *path, char *out_buffer, size_t out_buffer_size)
Check if a string needs shell quoting (contains spaces or special chars).
void truncate_with_ellipsis(const char *input, char *output, size_t output_size, int max_width)
Truncate a string to a maximum display width, with ellipsis.
Definition string.c:370
📝 Logging API with multiple log levels and terminal output control