[Spice-devel] [PATCH 1/3] usb: use native libusb procedure for getting error name

Victor Toso victortoso at redhat.com
Thu Apr 11 12:37:17 UTC 2019


Hi,

On Thu, Apr 11, 2019 at 02:57:21PM +0300, Yuri Benditovich wrote:
> On Thu, Apr 11, 2019 at 12:35 PM Victor Toso <victortoso at redhat.com> wrote:
> >
> > Hi,
> >
> > On Wed, Apr 10, 2019 at 10:31:37PM +0300, Yuri Benditovich wrote:
> > > libusb has libusb_error_name procedure that returns name
> > > for any error that libusb may return, so we do not need
> > > to analyze error values by ourselves.
> > >
> > > Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> >
> > Before applying the series:
> >
> > (master 15e06ead) $ grepi "spice_usbutil_libusb_strerror" src/
> > src/win-usb-dev.c:116:        const char *errstr = spice_usbutil_libusb_strerror(rc);
> > src/win-usb-dev.c:173:        const char *errstr = spice_usbutil_libusb_strerror(rc);
> > src/channel-usbredir.c:312: spice_usbutil_libusb_strerror(rc), rc);
> > src/usbutil.c:62:const char *spice_usbutil_libusb_strerror(enum libusb_error error_code)
> > src/usbutil.h:31:const char *spice_usbutil_libusb_strerror(enum libusb_error error_code);
> > src/usb-device-manager.c:284:        const char *desc = spice_usbutil_libusb_strerror(rc);
> > src/usb-device-manager.c:311:        const char *desc = spice_usbutil_libusb_strerror(rc);
> > src/usb-device-manager.c:733:        errstr = spice_usbutil_libusb_strerror(errcode);
> > src/usb-device-manager.c:1071:            const char *desc = spice_usbutil_libusb_strerror(rc);
> >
> > After applying the series:
> > (yuri-usb-b-layers-v1 5f87d90d) $ grepi "spice_usbutil_libusb_strerror" src/
> > (yuri-usb-b-layers-v1 5f87d90d) $
> >
> > So, I think it makes sense to use this patch to drop this
> > function and always use libusb_error_name() instead, agree?
> 
> Finally, this series drops this functions and uses libusb_error_name.

Yes,

> It was possible to drop this function in the first patch, but
> this would not make too much sense ( as all these new calls to
> libusb_error_name() would be removed due to isolation of
> libusb).

For me it makes sense because I know that this function can be
dropped now even if later patches would change the code path of
callers of spice_usbutil_libusb_strerror/libusb_error_name again.

That is, removing this function as first patch would introduce no
regression and cleanup the code a bit. One patch less in the
queue and could be merged before the others ;)

I'm on the middle of different task but I plan to study a bit
2nd/3rd patch Tomorrow/next week.

Cheers,


> > I checked that all above have include <libusb.h>
> >
> > I'll also be looking into your other patches but it might take
> > some time to get familiar with the changes :)
> >
> > Cheers,
> >
> > > ---
> > >  src/usbutil.c | 32 +-------------------------------
> > >  1 file changed, 1 insertion(+), 31 deletions(-)
> > >
> > > diff --git a/src/usbutil.c b/src/usbutil.c
> > > index e96ab11..4aa6ef7 100644
> > > --- a/src/usbutil.c
> > > +++ b/src/usbutil.c
> > > @@ -61,37 +61,7 @@ static usb_vendor_info *usbids_vendor_info = NULL;
> > >  G_GNUC_INTERNAL
> > >  const char *spice_usbutil_libusb_strerror(enum libusb_error error_code)
> > >  {
> > > -    switch (error_code) {
> > > -    case LIBUSB_SUCCESS:
> > > -        return "Success";
> > > -    case LIBUSB_ERROR_IO:
> > > -        return "Input/output error";
> > > -    case LIBUSB_ERROR_INVALID_PARAM:
> > > -        return "Invalid parameter";
> > > -    case LIBUSB_ERROR_ACCESS:
> > > -        return "Access denied (insufficient permissions)";
> > > -    case LIBUSB_ERROR_NO_DEVICE:
> > > -        return "No such device (it may have been disconnected)";
> > > -    case LIBUSB_ERROR_NOT_FOUND:
> > > -        return "Entity not found";
> > > -    case LIBUSB_ERROR_BUSY:
> > > -        return "Resource busy";
> > > -    case LIBUSB_ERROR_TIMEOUT:
> > > -        return "Operation timed out";
> > > -    case LIBUSB_ERROR_OVERFLOW:
> > > -        return "Overflow";
> > > -    case LIBUSB_ERROR_PIPE:
> > > -        return "Pipe error";
> > > -    case LIBUSB_ERROR_INTERRUPTED:
> > > -        return "System call interrupted (perhaps due to signal)";
> > > -    case LIBUSB_ERROR_NO_MEM:
> > > -        return "Insufficient memory";
> > > -    case LIBUSB_ERROR_NOT_SUPPORTED:
> > > -        return "Operation not supported or unimplemented on this platform";
> > > -    case LIBUSB_ERROR_OTHER:
> > > -        return "Other error";
> > > -    }
> > > -    return "Unknown error";
> > > +    return libusb_error_name(error_code);
> > >  }
> > >
> > >  #ifdef __linux__
> > > --
> > > 2.17.1
> > >
> > > _______________________________________________
> > > Spice-devel mailing list
> > > Spice-devel at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190411/ed9512a8/attachment.sig>


More information about the Spice-devel mailing list