aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-09-12 14:18:22 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-09-12 14:18:22 +0200
commit0ca2d7ab6883abadb244a452525d59ce6d324f82 (patch)
treea0d12b750566b0c739ede0e6030ef645df574d53
parent50813b0e99321ba5c60ea4bc8c16d19519801446 (diff)
downloadvis-0ca2d7ab6883abadb244a452525d59ce6d324f82.tar.gz
vis-0ca2d7ab6883abadb244a452525d59ce6d324f82.tar.xz
Introduce text_filename_set
This can be used to associate a given filename to a currently unnamed text.
-rw-r--r--text.c8
-rw-r--r--text.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/text.c b/text.c
index ea02cd4..d81ab76 100644
--- a/text.c
+++ b/text.c
@@ -617,7 +617,7 @@ int text_save(Text *txt, const char *filename) {
txt->saved_action = txt->undo;
text_snapshot(txt);
if (!txt->filename)
- txt->filename = strdup(filename);
+ text_filename_set(txt, filename);
return 0;
err:
close(fd);
@@ -637,7 +637,7 @@ Text *text_load(const char *filename) {
piece_init(&txt->end, &txt->begin, NULL, NULL, 0);
lineno_cache_invalidate(&txt->lines);
if (filename) {
- txt->filename = strdup(filename);
+ text_filename_set(txt, filename);
txt->fd = open(filename, O_RDONLY);
if (txt->fd == -1)
goto out;
@@ -1053,6 +1053,10 @@ const char *text_filename_get(Text *txt) {
return txt->filename;
}
+void text_filename_set(Text *txt, const char *filename) {
+ txt->filename = strdup(filename);
+}
+
Regex *text_regex_new(void) {
Regex *r = calloc(1, sizeof(Regex));
if (!r)
diff --git a/text.h b/text.h
index b3fd997..0dadbb6 100644
--- a/text.h
+++ b/text.h
@@ -29,6 +29,8 @@ typedef struct {
Text *text_load(const char *file);
/* the filename from which this text was loaded or first saved to */
const char *text_filename_get(Text*);
+/* associate a filename with the yet unnamed buffer */
+void text_filename_set(Text*, const char *filename);
bool text_insert(Text*, size_t pos, const char *data);
bool text_insert_raw(Text*, size_t pos, const char *data, size_t len);
bool text_delete(Text*, size_t pos, size_t len);