3 #include "block_range.h"
6 struct block_range *new_block_range(blk64_t start, blk64_t end)
8 struct block_range *range = malloc(sizeof(*range));
15 void add_blocks_to_range(struct block_range **head, struct block_range **tail,
16 blk64_t blk_start, blk64_t blk_end)
19 *head = *tail = new_block_range(blk_start, blk_end);
20 else if ((*tail)->end + 1 == blk_start)
21 (*tail)->end += (blk_end - blk_start + 1);
23 struct block_range *range = new_block_range(blk_start, blk_end);
24 (*tail)->next = range;
29 void delete_block_ranges(struct block_range *head)
31 struct block_range *tmp;
40 int write_block_ranges(FILE *f, struct block_range *range,
47 if (range->start == range->end)
48 len = asprintf(&buf, "%llu%s", range->start, sep);
50 len = asprintf(&buf, "%llu-%llu%s", range->start,
52 if (fwrite(buf, 1, len, f) != (size_t)len) {
61 if (fseek(f, -len, SEEK_CUR) == -len)