This moves the "finalconfig" step into a dedicated script, where it uses a loop instead of recursing into itself.
Sponsored by: The FreeBSD Foundation
In the optional [PATCH 2/2], the "finalconfig" menu will be slightly modified to be more consistent and user-friendly.
I would also like to mention that if the "finalconfig" step is not skipped (e.g., with $BSDINSTALL_SKIP_FINALCONFIG), some other steps can be skipped by default (like "adduser", "hardening", "services", and perhaps "time"). This menu gives a chance to perform these steps instead of always going through them once, and can make the installation feel faster overall.
This is also relevant to D40142.
I wish the manual configuration step could be merged into this (i.e., chrooting a shell into the newly installed system), but this conflicts with the current design of bsdinstall, which relies on a set of temporary configuration files before creating the final ones.