diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-09-22 17:32:44 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-02-13 09:57:39 +0100 |
| commit | 78bf2fe4a5bf37514f6dfd203ef969da0bf40c2e (patch) | |
| tree | 33f9440b8ee0fa7a3b3ad033616d722d2101bb4d /sanitize.c | |
| parent | 107a2e43d54f9a42fb85b00b83cb0d9abb194680 (diff) | |
Diffstat (limited to 'sanitize.c')
| -rw-r--r-- | sanitize.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/sanitize.c b/sanitize.c new file mode 100644 index 0000000..50aee3b --- /dev/null +++ b/sanitize.c @@ -0,0 +1,54 @@ +#define _POSIX_C_SOURCE 200809L + +#include "utils.h" +#include <dynstr.h> +#include <stddef.h> +#include <string.h> +#include <stdio.h> + +char *sanitize(const char *s) +{ + struct dynstr d; + + dynstr_init(&d); + + while (*s) + { + char ss[sizeof "\"\""] = {0}; + + switch (*s) + { + case '\'': + strcpy(ss, "\'\'"); + break; + + case '\"': + strcpy(ss, "\"\""); + break; + + default: + *ss = *s; + break; + } + + if (dynstr_append(&d, "%s", ss)) + { + fprintf(stderr, "%s: dynstr_append failed\n", __func__); + goto failure; + } + + s++; + } + + if (!d.str && dynstr_append(&d, "%c", '\0')) + { + fprintf(stderr, "%s: dynstr_append failed\n", __func__); + goto failure; + } + + return d.str; + +failure: + dynstr_free(&d); + return NULL; +} |
