aboutsummaryrefslogtreecommitdiff
path: root/todo/open.ha
diff options
context:
space:
mode:
Diffstat (limited to 'todo/open.ha')
-rw-r--r--todo/open.ha23
1 files changed, 23 insertions, 0 deletions
diff --git a/todo/open.ha b/todo/open.ha
new file mode 100644
index 0000000..7692635
--- /dev/null
+++ b/todo/open.ha
@@ -0,0 +1,23 @@
+use fs;
+use io;
+use lib;
+use os;
+use strings;
+
+export fn open(file: str) ([]str | fs::error) = {
+
+ // open
+ const todos = os::open(file)?;
+ defer io::close(todos)!;
+
+ const todos = io::drain(todos)!;
+ defer free(todos);
+
+ // read
+ const todos = strings::fromutf8(todos)!;
+ const todos = strings::split(todos, "\n")!;
+
+ lib::slice_remove_empty(&todos);
+
+ return strings::dupall(todos)?;
+};