1. should I rename any functions? if yes, which ones? 2. should I remove error output argument from some functions where we're most likely not interested in it (like `tr_sys_file_close`)? if yes, 1) what are those functions exactly and 2) should affected functions log errors (at least in debug mode)? 3. should I add any other test cases for `tr_error_*` and `tr_sys_(path|file|dir)_*` functions? 4. should I introduce some typedefs instead of raw uint64_t/int64_t? or should I even use standard size_t/off_t instead? each time I think of it I decide to stay with raw types, but for some reason I still think one may have better idea about it than me. 5.