While reading around in pg_upgrade code I came across the slightly
bizarre function
void exit_nicely(bool need_cleanup)
The parameter doesn't actually determine whether any cleanup is done.
The "cleanup" is done anyway and the parameter only controls the exit
code in a backwards way.
Also most of the cleanup appears to be useless, because you don't need
to close files or free memory before the program exits.
I figured this could be written more cleanly with an exit hook, so here
is a patch. I don't care much whether this patch is for now or later,
just wanted to throw it out there.