summaryrefslogtreecommitdiff
path: root/buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.cpp')
-rw-r--r--buffer.cpp45
1 files changed, 0 insertions, 45 deletions
diff --git a/buffer.cpp b/buffer.cpp
deleted file mode 100644
index 7b4c92d..0000000
--- a/buffer.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-struct Buffer {
- const char *name;
- Page *storage;
-
- Buffer(const char *name) : name(name), storage(new Page()) {}
-
- void free_storage() {
- while (storage) {
- Page *iter = storage;
- storage = storage->next;
- delete iter;
- }
- }
-
- void read_file(const char *pathname) {
- free_storage();
- int file = open(pathname, O_RDONLY);
- storage = new Page();
- int bytes_read = read(file, storage->elements, PAGE_SIZE);
- Page *iter = storage;
- while (bytes_read > 0) {
- iter->gap_start = bytes_read;
- iter->element_count = bytes_read;
- iter->next = new Page();
- iter->next->prev = iter;
- iter = iter->next;
- bytes_read = read(file, iter->elements, PAGE_SIZE);
- }
- if (iter->element_count == 0) {
- delete iter;
- }
- close(file);
- }
-
- void write_file(const char *pathname) {
- int file = open(pathname, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
- Page *iter = storage;
- while (iter) {
- write(file, iter->elements, iter->gap_start);
- write(file, iter->elements + iter->gap_end, PAGE_SIZE - iter->gap_end);
- iter = iter->next;
- }
- close(file);
- }
-};