libfprint/cocci/07-libusb-fill.cocci
Benjamin Berg 6ec11a2b26 cocci: Add spatch/coccinelle patches for driver porting
This is an impartial set of transformations to help port the drivers to
the new interfaces.
2019-11-20 13:53:45 +01:00

164 lines
4.1 KiB
Plaintext

///////////////////////////////////////////////////////////////////////////
// bulk transfers
@@
typedef FpUsbTransfer;
expression transfer;
expression usb_dev;
expression endpoint;
expression data;
expression size;
expression cb;
expression user_data;
expression timeout;
identifier ret;
@@
- libusb_fill_bulk_transfer(transfer, usb_dev, endpoint, data, size, cb, user_data, timeout);
+ fp_usb_transfer_fill_bulk_full(transfer, endpoint, data, size, NULL);
+ fp_usb_transfer_submit(transfer, timeout, NULL, cb, user_data);
+ fp_usb_transfer_unref(transfer);
(
- ret = libusb_submit_transfer(transfer);
...
(
- if (ret < 0) { ... }
|
- if (ret != 0) { ... }
|
)
|
- if (libusb_submit_transfer(transfer)) { ... }
|
- if (libusb_submit_transfer(transfer) < 0) { ... }
|
- libusb_submit_transfer(transfer);
)
///////////////////////////////////////////////////////////////////////////
// bulk transfers
@@
typedef FpUsbTransfer;
expression transfer;
expression dev;
expression transfer_ssm;
expression endpoint;
expression data;
expression size;
expression cb;
expression user_data;
expression timeout;
expression storage;
identifier ret;
@@
- transfer = fpi_usb_fill_bulk_transfer(dev, transfer_ssm, endpoint, data, size, cb, user_data, timeout);
+ transfer = fp_usb_transfer_new (dev);
+ transfer->ssm = transfer_ssm;
+ fp_usb_transfer_fill_bulk_full(transfer, endpoint, data, size, NULL);
+ fp_usb_transfer_submit(transfer, timeout, NULL, cb, user_data);
+ fp_usb_transfer_unref(transfer);
(
storage = transfer;
|
)
(
- ret = fpi_usb_submit_transfer(transfer);
...
(
- if (ret < 0) { ... }
|
- if (ret != 0) { ... }
|
)
|
- if (fpi_usb_submit_transfer(transfer)) { ... }
|
- if (fpi_usb_submit_transfer(transfer) < 0) { ... }
|
- fpi_usb_submit_transfer(transfer);
)
// The following only happens due to some prior simplifications we did
@@
typedef FpUsbTransfer;
expression transfer;
expression usb_dev;
expression endpoint;
expression data;
expression size;
expression cb;
expression user_data;
expression timeout;
identifier ret;
@@
- libusb_fill_bulk_transfer(transfer, usb_dev, endpoint, data, size, cb, user_data, timeout);
- libusb_submit_transfer(transfer);
+ fp_usb_transfer_fill_bulk_full(transfer, endpoint, data, size, NULL);
+ fp_usb_transfer_submit(transfer, timeout, NULL, cb, user_data);
+ fp_usb_transfer_unref(transfer);
///////////////////////////////////////////////////////////////////////////
// control transfers
@@
typedef FpUsbTransfer;
expression timeout;
expression direction;
expression request_type;
expression recipient;
expression request;
expression value;
expression index;
expression length;
expression callback;
expression user_data;
expression usb_dev;
identifier ret;
@@
(
- data = g_malloc(LIBUSB_CONTROL_SETUP_SIZE)
|
- data = g_malloc(LIBUSB_CONTROL_SETUP_SIZE + ...)
|
- data = g_malloc0(LIBUSB_CONTROL_SETUP_SIZE)
|
- data = g_malloc0(LIBUSB_CONTROL_SETUP_SIZE + ...)
)
- ;
+ _Pragma("GCC warning \"control transfer filling is a mess due to automatic translation\"");
+ fp_usb_transfer_fill_control(transfer, !((request_type) & 0x80), ((request_type) >> 5) & 0x3, (request_type) & 0x1f, request, value, index, length);
+ data = transfer->buffer;
+ fp_usb_transfer_submit(transfer, timeout, NULL, callback, user_data);
+ fp_usb_transfer_unref(transfer);
...
- libusb_fill_control_setup(data, request_type, request, value, index, length);
- libusb_fill_control_transfer(transfer, usb_dev, data, callback, user_data, timeout);
<...
- LIBUSB_CONTROL_SETUP_SIZE
...>
- ret = libusb_submit_transfer(transfer);
(
- if (ret < 0) { ... }
|
)
///////////////////////////////////////////////////////////////////////////
// We have a field in the transfer just for a state machine, use that
// We also later modify all similar code on the callback side to use that field
// instead.
@@
expression transfer;
expression timeout;
expression cb;
@@
+ transfer->ssm = ssm;
- fp_usb_transfer_submit(transfer, timeout, NULL, cb, ssm);
+ fp_usb_transfer_submit(transfer, timeout, NULL, cb, NULL);
@@
expression transfer;
expression timeout;
expression cb;
@@
- fp_usb_transfer_submit(transfer, timeout, NULL, cb, dev);
+ fp_usb_transfer_submit(transfer, timeout, NULL, cb, NULL);