From af6a37b1c4509c7766933a7cb45d2ee9a3a23f98 Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Thu, 15 Oct 2026 11:37:31 +0300 Subject: Return owned text and share cell attribute flags with snapshots Make text queries return allocated strings released with term_text_free, keeping each capture atomic. Align public attributes with the write core, remove snapshot conversion tables, and migrate tests and the Kitty adapter. --- src/term.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'src/term.c') diff --git a/src/term.c b/src/term.c index 583bdd8..1b16670 100644 --- a/src/term.c +++ b/src/term.c @@ -104,22 +104,25 @@ void term_focus(struct term *t, bool focused) term_write_end(t); } -size_t term_cwd(const struct term *t, char *buf, size_t cap) +char *term_cwd(const struct term *t) { - if (!t) - return term_copy_out(NULL, buf, cap); + if (!t) return NULL; term_write_begin((struct term *)t); - size_t n = term_copy_out(t->cwd, buf, cap); + char *text = t->cwd ? term_strdup(t->cwd) : NULL; term_write_end((struct term *)t); - return n; + return text; } -size_t term_pointer_shape(const struct term *t, char *buf, size_t cap) +char *term_pointer_shape(const struct term *t) { - if (!t) - return term_copy_out(NULL, buf, cap); + if (!t) return NULL; term_write_begin((struct term *)t); - size_t n = term_copy_out(t->pointer_shape, buf, cap); + char *text = t->pointer_shape ? term_strdup(t->pointer_shape) : NULL; term_write_end((struct term *)t); - return n; + return text; +} + +void term_text_free(char *text) +{ + free(text); } -- cgit v1.2.3