aboutsummaryrefslogtreecommitdiff
path: root/text.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-10-25 15:23:45 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-10-25 15:32:49 +0200
commit3a615515935a9c140d4ff47ee4a46266aa405d01 (patch)
treea45393fdaf975e67486b2c1c204f50a7252d4450 /text.c
parentc42e9887aac08eeb96ccbe58453969497b5ea0ee (diff)
downloadvis-3a615515935a9c140d4ff47ee4a46266aa405d01.tar.gz
vis-3a615515935a9c140d4ff47ee4a46266aa405d01.tar.xz
Introduce text_range_size
Diffstat (limited to 'text.c')
-rw-r--r--text.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/text.c b/text.c
index 40d09f0..e477c2d 100644
--- a/text.c
+++ b/text.c
@@ -606,7 +606,7 @@ bool text_save(Text *txt, const char *filename) {
bool text_range_save(Text *txt, Filerange *range, const char *filename) {
int fd = -1;
size_t bufsize = strlen(filename) + 10;
- size_t size = range->end - range->start;
+ size_t size = text_range_size(range);
char *tmpname = malloc(bufsize);
if (!tmpname)
return false;
@@ -669,8 +669,7 @@ ssize_t text_write(Text *txt, int fd) {
}
ssize_t text_range_write(Text *txt, Filerange *range, int fd) {
- size_t size = range->end - range->start;
- size_t rem = size;
+ size_t size = text_range_size(range), rem = size;
for (Iterator it = text_iterator_get(txt, range->start);
rem > 0 && text_iterator_valid(&it);
text_iterator_next(&it)) {
@@ -1257,6 +1256,10 @@ bool text_range_valid(Filerange *r) {
return r->start != EPOS && r->end != EPOS && r->start <= r->end;
}
+size_t text_range_size(Filerange *r) {
+ return text_range_valid(r) ? r-> end - r->start : 0;
+}
+
Filerange text_range_empty(void) {
return (Filerange){ .start = EPOS, .end = EPOS };
}