summaryrefslogtreecommitdiff
path: root/src/term.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-15 11:37:31 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-15 11:37:31 +0300
commitaf6a37b1c4509c7766933a7cb45d2ee9a3a23f98 (patch)
treee7b0294ebf0d9b124b8885a76c119d7f46d5b0fb /src/term.c
parentacd338ea33de36d223cc6d301712eed4a9501e6c (diff)
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.
Diffstat (limited to 'src/term.c')
-rw-r--r--src/term.c23
1 files changed, 13 insertions, 10 deletions
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);
}