Short-term: < done > compile and run on Windows (unit tests + trqt) < done > compile and run on 32-bit systems (unit tests) [FreeBSD 9.2, Windows 8.1, XUbuntu 13.10, Debian GNU/Hurd 2013, Haiku R1a4.1] < done > add unit tests for file.h functions < done > add asserts to each file.h function < done > move some more functions to file.h (at least mkstemp/mkdtemp/mkdirp/opendir/readdir/closedir) < done > add [more] wrapper(s) for `stat` (see stat.txt) < done > merge 3 tr_getcwd implementations (libtransmission/libtransmission-test.c, utils/create.c, daemon/remote.c) into wrapper < done > add doxygen comments to all new/moved functions < done > ensure feature-testing #ifdefs work as before < done > ensure C and WinAPI file handles aren't being mixed; this basically means using wrappers everywhere < done > ensure type safety (tr_sys_file_t/int64_t/uint64_t vs. off_t/size_t/ssize_t/int/etc.) < done > make use of tr_error_t arguments, at least in some places for the start < done > investigate whether `set_file_for_single_pass` is needed for writing < done > use `tr_sys_file_realpath` instead of `tr_realpath` everywhere < done > review and optimize #includes < done > getHomeDir, tr_getDefaultConfigDir, tr_getWebClientDir (platform.c) < done > tr_getDiskFreeSpace (platform-quota.c) < done > make `tr_sys_path_resolve` return real path on Windows < done > `tr_getopt` on Windows (wmain + recode) < done > get rid of FILE* Long-term: < > do something about code which assumes tr_error_t::code is errno (#ifndef WIN32? rewrite?)