Currently refactoring a moderately sized program that throughout uses filehandles exclusively refer to files, and assumes "invalid file" always means fd<0; to have any file returning a fd return a success bool and write an opaque filehandle to a pointer. It's not fun.