Date: Sat, 06 Sep 2008 15:22:07 +0100 From: Dieter <freebsd@sopwith.solgatos.com> To: Sean Bruno <sbruno@miralink.com>, freebsd-firewire@freebsd.org Subject: Re: New and improved? patch [ fwcontrol ] Message-ID: <200809062222.WAA13366@sopwith.solgatos.com> In-Reply-To: Your message of "Sun, 31 Aug 2008 13:05:44 BST."
next in thread | raw e-mail | index | archive | help
> > 7.0 AMD64 # ./fwcontrol -f -5 > > fwcontrol: main:set_root_node out of range: No such file or directory > > > > "No such file or directory" seems wrong > > err(EX_USAGE, "%s:set_root_node out of range", __func__); > > Err() is correct for places where errno would be set, such as > checking the return code from read(2). But for the range checks, > errno does not apply, so err() gives misleading results. > > The err(3) man page isn't clear, but it looks like errx(3) is > the function you want for the range checks. > > Changing err() to errx() gives: > > 7.0 AMD64 # ./fwcontrol -f 70 > fwcontrol: main:set_root_node out of range Also, I'm thinking we probably don't want "\n" in the err() and errx() calls, since they put that in automagically. When a file cannot be opened, it is useful to print the name of the file. int len=1024, i; if ((file = fopen(filename, "r")) == NULL) - err(1, "load_crom"); + err(1, "load_crom filename = %s", filename); for (i = 0; i < len/(4*8); i ++) { fscanf(file, DUMP_FORMAT, p, p+1, p+2, p+3, p+4, p+5, p+6, p+7); if (open_dev(&fd, devbase) < 0) { - errx(EX_IOERR, "%s: Error opening board #%d\n", __func__, current_board); + err(EX_IOERR, "%s: Error opening firewire controller #%d %s ", + __func__, current_board, devbase); } } /* Since open_dev() calls open(2), which sets errno, this time we want err(3) rather than errx(3).
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809062222.WAA13366>