Paolo Bonzini <bonzini <at> gnu.org> writes:

> >> Well, as AS_EXIT was previously undocumented, I am comfortable making that
> >> change.  It does seem like making $? instead of 1 is a better default,
> >> even if it might make some scripts in the wild start returning 0.
> > 
> > Even better: if AS_EXIT is called with arguments, exit with $? unless it
> > is 0, in which case, exit with status 1.
> 
> ???
> 
> No, please... we are lucky enough:
> Our own m4sh.m4 is the only user of AS_EXIT without arguments.

Just for the record:

The _only_ place where AS_EXIT changed semantics from what
it had in 2.63 to what it has now in autoconf.git is if you:
1) use it without arguments, and
2) $? is greater than 1

in which case, you now get $? instead of 1 (generally a
good move; consider if $? is 139 - you want the exit
status of your script to reflect the fact that you aborted
your script due to a prior command aborting with a signal,
rather than always exiting with status 1 no matter what).

Meanwhile, by changing the semantics, we can simplify
our documentation to actually _recommend_ that people
use AS_EXIT without arguments, at least when using
the idiom <command> || AS_EXIT.  Other idioms, such
as trap 's=$?; cleanup; AS_EXIT([$s])' 0, still need to
pass an explicit argument (basically, in the same places
where relying on exit's default of $? is the wrong thing
to do).  And the user can still do AS_EXIT([$?]) if they
really want to exit with 0 status when $? is 0.

-- 
Eric Blake





Reply via email to