summaryrefslogtreecommitdiff
path: root/src/term.c
diff options
context:
space:
mode:
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);
}