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, SR_PRIV int usb_source_add(struct sr_session *session, struct sr_context *ctx,
int timeout, sr_receive_data_callback cb, void *cb_data); 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_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 #endif
/*--- hardware/common/scpi.c ------------------------------------------------*/ /*--- 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; 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]; uint8_t port_numbers[8];
gchar tmp_s[8]; int i, n, len;
uint8_t port_numbers[32];
int i;
memset(port_numbers, 0, sizeof(port_numbers)); n = libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers));
libusb_get_port_numbers(dev, port_numbers, sizeof(port_numbers));
g_snprintf((gchar*)&s, sizeof(s), "usb/%d-%d", len = snprintf(path, path_len, "usb/%d-%d",
libusb_get_bus_number(dev), port_numbers[0]); libusb_get_bus_number(dev), port_numbers[0]);
i = 1; for (i = 1; i < n; i++)
while (port_numbers[i]) { len += snprintf(path+len, path_len-len, ".%d", 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);
return SR_OK; return SR_OK;
} }