New and improved? patch [ fwcontrol ]

Dieter freebsd at sopwith.solgatos.com
Sat Sep 6 22:23:18 UTC 2008


> > 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).


More information about the freebsd-firewire mailing list