Subject: Re: ifconfig error handling
To: None <tech-net@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: tech-net
Date: 08/30/2006 18:32:57
On Thu, Aug 31, 2006 at 09:12:58AM +1000, Daniel Carosone wrote:
> On Wed, Aug 30, 2006 at 05:54:09PM -0500, David Young wrote:
> > Browsing the source, I do not understand why any number of warn() and
> > warnx() calls are not err(EXIT_FAILURE,) and errx(EXIT_FAILURE,), instead.
>
> WAG: so that it will continue processing multiple configuration
> settings on the one command line, even when an earlier one fails?
I consider that a bug, also! :-)
The "real" fix is to make ifconfig try to apply each setting on the
command line, and if it cannot apply a setting, roll back all of the
prior settings before quitting with exit code 1. This is an interesting
but large project that I am not going to do right now.
I can think of two "stopgap" fixes. One is to change warn()/warnx()
to err()/errx(). The other is to warn()/warnx(), but set a flag that
tells ifconfig to exit(EXIT_FAILURE) at the end. The latter fix could
be gross to program and to maintain.
A dissatisfying workaround is to check in scripts and such for text
on the standard error output. A wrapper, eifconfig, could be used for
that purpose:
#!/bin/sh
ifconfig "$@" 2> /tmp/ifconfig.$$
test ! -s /tmp/ifconfig.$$
rc=$?
cat /tmp/ifconfig.$$ >&2
rm /tmp/ifconfig.$$
exit $rc
Dave
--
David Young OJC Technologies
dyoung@ojctech.com Urbana, IL * (217) 278-3933