Keep the .rec file opened (and locked) while the main process is waiting for
its children to terminate.  Close and remove it afterwards, unless the session
is interrupted.
Implemented and made use of rec_done()'s ability to skip the rec_save() call
and to close the file, yet not remove the file
Check the exit status of child processes to decide whether it's OK to remove
the .rec file of the main process
Repaired --status of --fork'ed sessions.  This was broken when
rec_name_complete() was changed not to add the node number into filename used
by the main process even for high node numbers.  We now temporarily claim that
we're not the main process, in order to get rec_name_complete() to behave like
it would in a child process, without wasting resources to actually create child
processes (not needed for mere status reporting).
Added "const" to the format argument of log_event()
In rec_restore_args(), treat non-existent files in child processes as non-fatal
errors.  With --restore, terminate the process with zero exit code so that the
main process of a restored session where some of the children had previously
completed their share of work doesn't unnecessarily keep its .rec file around.
With --status, print a message and return to the caller so that status of
further nodes may be printed.
Added the "Main process session completed, but some child processes failed"
message, to be printed in this special case
When an OpenMP-enabled build is running against a format lacking OpenMP support
and the would-be thread count is greater than 1, suggest the use of --fork with
the corresponding number of processes
Implemented a second chance for fallback to a non-OpenMP build when the thread
count drops to 1 due to --fork (which is only known after parsing of the
command-line options and possibly of a .rec file)
Improved the error messages provided when the .rec file is inconsistent with
the current configuration rather than is necessarily broken in other ways
Call rec_name_complete() from rec_restore_mode() so that the completed filename
is shown in possible error messages for the main process (where the original
rec_name is temporarily restored by the code in options.c, to make the children
re-complete it as appropriate for them)
Close the .rec file before fallback to a non-OpenMP binary
Fixed the warning:
john.c:614:4: warning: format not a string literal and no format arguments [-Wformat-security]
Repeat flock(LOCK_EX) on EINTR
When running --fork'ed, only use fsync() on the .pot file, but not on the .rec
and .log files (less important and may become unaffordable with large process
counts)