usb: Simplify usb_get_port_path() and fix writing into a const char *.

This commit is contained in:
Aurelien Jacobs 2014-10-07 00:02:10 +02:00 committed by Uwe Hermann
parent d099d88021
commit 76bc5f6376
2 changed files with 9 additions and 18 deletions

View File

@ -677,7 +677,7 @@ SR_PRIV int sr_usb_open(libusb_context *usb_ctx, struct sr_usb_dev_inst *usb);
SR_PRIV int usb_source_add(struct sr_session *session, struct sr_context *ctx,
int timeout, sr_receive_data_callback cb, void *cb_data);
SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx);
SR_PRIV int usb_get_port_path(libusb_device *dev, const char *path, int path_len);
SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len);
#endif
/*--- hardware/common/scpi.c ------------------------------------------------*/

View File

@ -271,27 +271,18 @@ SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx
return SR_OK;
}
SR_PRIV int usb_get_port_path(libusb_device *dev, const char *path, int path_len)
SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len)
{
gchar s[64];
gchar tmp_s[8];
uint8_t port_numbers[32];
int i;
uint8_t port_numbers[8];
int i, n, len;
memset(port_numbers, 0, sizeof(port_numbers));
libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers));
n = libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers));
g_snprintf((gchar*)&s, sizeof(s), "usb/%d-%d",
libusb_get_bus_number(dev), port_numbers[0]);
len = snprintf(path, path_len, "usb/%d-%d",
libusb_get_bus_number(dev), port_numbers[0]);
i = 1;
while (port_numbers[i]) {
g_snprintf(tmp_s, sizeof(tmp_s), ".%d", port_numbers[i]);
g_strlcat((gchar*)&s, tmp_s, sizeof(s));
i++;
}
g_strlcpy((gchar*)path, s, path_len);
for (i = 1; i < n; i++)
len += snprintf(path+len, path_len-len, ".%d", port_numbers[i]);
return SR_OK;
}