Add a read_line() which will read(builtin) until a full line is returned, partials rejected.
Use read_line() where races are possible. This should fix 'Duplicated origin' errors