only close open fds, thus avoiding overwriting the errstr, thus giving better messages. Reference: /n/sources/patch/applied/usb-lib-errstr Date: Wed Apr 12 10:16:34 CES 2006 Signed-off-by: geoff@collyer.net --- /sys/src/cmd/usb/lib/device.c Wed Apr 12 10:16:02 2006 +++ /sys/src/cmd/usb/lib/device.c Wed Apr 12 10:16:00 2006 @@ -37,8 +37,9 @@ sprint(name, "/dev/usb%d/new", ctlrno); if((d->ctl = open(name, ORDWR)) < 0){ Error0: - close(d->ctl); werrstr("open %s: %r", name); + if (d->ctl >= 0) + close(d->ctl); free(d); /* return nil; */ sysfatal("%r"); @@ -58,7 +59,8 @@ strcpy(p, "setup"); if((d->setup = open(name, ORDWR)) < 0){ Error1: - close(d->setup); + if (d->setup >= 0) + close(d->setup); goto Error0; }