fix infinite recursion bug in error_or operator ==
implement open_read_write for Linux
modernize make_transforming_source