Split make_file back out into make_filename and make_file.
It turns out that make_filename is useful by itself.
If the argument to make_file can act like a file, return it.
This is useful for code that calls command functions, but doesn't
want to send I/O through the filesystem.