From 5a38f79952b4333bd6ac39a8af632179df5cc8ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Wed, 13 May 2020 08:56:22 +0200 Subject: text: introduce text_save_method, remove text_save_range This utility function is analogous to text_load_method and allows the caller to specify how the file should be saved. It is implemented as a wrapper around the lower level text_save_{begin,write,commit} primitives. The unused text_save_range function has been removed. If needed, use the aforementioned lower level functionality. --- text.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'text.c') diff --git a/text.c b/text.c index 8b45e24..d640b5c 100644 --- a/text.c +++ b/text.c @@ -1067,26 +1067,26 @@ void text_save_cancel(TextSave *ctx) { errno = saved_errno; } -bool text_save(Text *txt, const char *filename) { - Filerange r = (Filerange){ .start = 0, .end = text_size(txt) }; - return text_save_range(txt, &r, filename); -} - /* First try to save the file atomically using rename(2) if this does not * work overwrite the file in place. However if something goes wrong during * this overwrite the original file is permanently damaged. */ -bool text_save_range(Text *txt, Filerange *range, const char *filename) { +bool text_save(Text *txt, const char *filename) { + return text_save_method(txt, filename, TEXT_SAVE_AUTO); +} + +bool text_save_method(Text *txt, const char *filename, enum TextSaveMethod method) { if (!filename) { txt->saved_revision = txt->history; text_snapshot(txt); return true; } - TextSave *ctx = text_save_begin(txt, filename, TEXT_SAVE_AUTO); + TextSave *ctx = text_save_begin(txt, filename, method); if (!ctx) return false; - ssize_t written = text_write_range(txt, range, ctx->fd); - if (written == -1 || (size_t)written != text_range_size(range)) { + Filerange range = (Filerange){ .start = 0, .end = text_size(txt) }; + ssize_t written = text_save_write_range(ctx, &range); + if (written == -1 || (size_t)written != text_range_size(&range)) { text_save_cancel(ctx); return false; } -- cgit v1.2.3