diff --git a/cmd/bulb/main.ha b/cmd/bulb/main.ha index 84f8dd5..c427cf9 100644 --- a/cmd/bulb/main.ha +++ b/cmd/bulb/main.ha @@ -1,8 +1,8 @@ -use bulb; use errors; use fmt; use fs; use getopt; +use internal::bulb; use io; use os; use path; diff --git a/bulb/bulb.ha b/internal/bulb/bulb.ha similarity index 89% rename from bulb/bulb.ha rename to internal/bulb/bulb.ha index 53daa10..805016e 100644 --- a/bulb/bulb.ha +++ b/internal/bulb/bulb.ha @@ -6,6 +6,17 @@ use os; use path; use strings; +// TODO +// two issues: +// A: posts are stored exactly as they are formatted +// B: posts need to be sanitized from control chars going in and going out +// C: specifying a number of posts to read only works with lines because it +// cant separate out the individual posts +// +// all of these can be fixed by escaping line breaks as the post is written to +// the board, and then rendering them once they get to the reading stage. +// sanitize the text at both stages. + let bulb_path: []str = []; @init fn bulb_path() void = bulb_path = strings::split(os::tryenv("BULBPATH", "/var/bulb"), ":"); @fini fn bulb_path() void = free(bulb_path); @@ -29,6 +40,7 @@ export fn read(output: io::handle, board: str, number: int) (void | error) = { // we add 1 to account for the blank line that will always be at the // bottom seek_to_nth_last_line(file, number + 1)?; + // TODO don't copy control characters! io::copy(output, file)?; };