aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurt P <pburt0@gmail.com>2017-09-10 12:10:19 -0500
committerLeandro A. F. Pereira <leandro@hardinfo.org>2018-03-12 09:20:16 -0700
commit6f0a3e0f85fd439fabfc1b8f64b01d93151cff3c (patch)
treee2156c1d91d77edd37a721545e910b91c6a8d4cf
parentfdb1a05b6b5c84b67e3df107288f5046b763647e (diff)
usb: requested changes
Signed-off-by: Burt P <pburt0@gmail.com>
-rw-r--r--hardinfo/usb_util.c65
-rw-r--r--includes/usb_util.h20
-rw-r--r--modules/devices/usb.c16
3 files changed, 57 insertions, 44 deletions
diff --git a/hardinfo/usb_util.c b/hardinfo/usb_util.c
index e1db2777..62773e30 100644
--- a/hardinfo/usb_util.c
+++ b/hardinfo/usb_util.c
@@ -22,22 +22,18 @@
#include "usb_util.h"
usbd *usbd_new() {
- usbd *s = malloc(sizeof(usbd));
- if (s) {
- memset(s, 0, sizeof(usbd));
- }
- return s;
+ return g_new0(usbd, 1);
}
void usbd_free(usbd *s) {
if (s) {
- free(s->vendor);
- free(s->product);
- free(s->usb_version);
- free(s->device_version);
- free(s->dev_class_str);
- free(s->dev_subclass_str);
- free(s);
+ g_free(s->vendor);
+ g_free(s->product);
+ g_free(s->usb_version);
+ g_free(s->device_version);
+ g_free(s->dev_class_str);
+ g_free(s->dev_subclass_str);
+ g_free(s);
}
}
@@ -51,7 +47,7 @@ void usbd_list_free(usbd *s) {
}
/* returns number of items after append */
-int usbd_list_append(usbd *l, usbd *n) {
+static int usbd_list_append(usbd *l, usbd *n) {
int c = 0;
while(l != NULL) {
c++;
@@ -71,15 +67,15 @@ int usbd_list_count(usbd *s) {
return usbd_list_append(s, NULL);
}
-char *_lsusb_lv(char *line, const char *prefix) {
- if ( g_str_has_prefix(line, prefix) ) {
+static char *lsusb_line_value(char *line, const char *prefix) {
+ if (g_str_has_prefix(line, prefix)) {
line += strlen(prefix) + 1;
return g_strstrip(line);
} else
return NULL;
}
-int usb_get_device_lsusb(int bus, int dev, usbd *s) {
+static gboolean usb_get_device_lsusb(int bus, int dev, usbd *s) {
gboolean spawned;
gchar *out, *err, *p, *l, *t, *next_nl;
gchar *lsusb_cmd = g_strdup_printf("lsusb -s %d:%d -v", bus, dev);
@@ -92,34 +88,34 @@ int usb_get_device_lsusb(int bus, int dev, usbd *s) {
g_free(lsusb_cmd);
if (spawned) {
if (strstr(err, "information will be missing")) {
- s->user_scan = 1;
+ s->user_scan = TRUE;
}
p = out;
while(next_nl = strchr(p, '\n')) {
strend(p, '\n');
g_strstrip(p);
- if (l = _lsusb_lv(p, "idVendor")) {
+ if (l = lsusb_line_value(p, "idVendor")) {
s->vendor_id = strtol(l, NULL, 0);
if (t = strchr(l, ' '))
- s->vendor = strdup(t + 1);
- } else if (l = _lsusb_lv(p, "idProduct")) {
+ s->vendor = g_strdup(t + 1);
+ } else if (l = lsusb_line_value(p, "idProduct")) {
s->product_id = strtol(l, NULL, 0);
if (t = strchr(l, ' '))
- s->product = strdup(t + 1);
- } else if (l = _lsusb_lv(p, "MaxPower")) {
+ s->product = g_strdup(t + 1);
+ } else if (l = lsusb_line_value(p, "MaxPower")) {
s->max_curr_ma = atoi(l);
- } else if (l = _lsusb_lv(p, "bcdUSB")) {
- s->usb_version = strdup(l);
- } else if (l = _lsusb_lv(p, "bcdDevice")) {
- s->device_version = strdup(l);
- } else if (l = _lsusb_lv(p, "bDeviceClass")) {
+ } else if (l = lsusb_line_value(p, "bcdUSB")) {
+ s->usb_version = g_strdup(l);
+ } else if (l = lsusb_line_value(p, "bcdDevice")) {
+ s->device_version = g_strdup(l);
+ } else if (l = lsusb_line_value(p, "bDeviceClass")) {
s->dev_class = atoi(l);
if (t = strchr(l, ' '))
- s->dev_class_str = strdup(t + 1);
- } else if (l = _lsusb_lv(p, "bDeviceSubClass")) {
+ s->dev_class_str = g_strdup(t + 1);
+ } else if (l = lsusb_line_value(p, "bDeviceSubClass")) {
s->dev_subclass = atoi(l);
if (t = strchr(l, ' '))
- s->dev_subclass_str = strdup(t + 1);
+ s->dev_subclass_str = g_strdup(t + 1);
}
/* TODO: speed_mbs
* WISHLIST: interfaces, drivers */
@@ -127,9 +123,9 @@ int usb_get_device_lsusb(int bus, int dev, usbd *s) {
}
g_free(out);
g_free(err);
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
usbd *usb_get_device(int bus, int dev) {
@@ -149,7 +145,7 @@ usbd *usb_get_device(int bus, int dev) {
return s;
}
-usbd *usb_get_device_list_lsusb() {
+static usbd *usb_get_device_list_lsusb() {
gboolean spawned;
gchar *out, *err, *p, *next_nl;
usbd *head = NULL, *nd;
@@ -161,7 +157,8 @@ usbd *usb_get_device_list_lsusb() {
p = out;
while(next_nl = strchr(p, '\n')) {
strend(p, '\n');
- if (ec = sscanf(p, "Bus %d Device %d: ID %x:%x", &bus, &dev, &vend, &prod) ) {
+ ec = sscanf(p, "Bus %d Device %d: ID %x:%x", &bus, &dev, &vend, &prod);
+ if (ec == 4) {
nd = usb_get_device(bus, dev);
if (head == NULL) {
head = nd;
diff --git a/includes/usb_util.h b/includes/usb_util.h
index 5d7f55bf..e9130b99 100644
--- a/includes/usb_util.h
+++ b/includes/usb_util.h
@@ -1,3 +1,21 @@
+/*
+ * HardInfo - Displays System Information
+ * Copyright (C) 2003-2017 Leandro A. F. Pereira <leandro@hardinfo.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#ifndef __USB_UTIL_H__
#define __USB_UTIL_H__
@@ -20,7 +38,7 @@ typedef struct usbd {
int speed_mbs; /* TODO: */
- int user_scan; /* not scanned as root */
+ gboolean user_scan; /* not scanned as root */
struct usbd *next;
} usbd;
diff --git a/modules/devices/usb.c b/modules/devices/usb.c
index 27b3c13e..cad52fd4 100644
--- a/modules/devices/usb.c
+++ b/modules/devices/usb.c
@@ -28,7 +28,7 @@
gchar *usb_list = NULL;
-void __scan_usb_sysfs_add_device(gchar * endpoint, int n)
+static void __scan_usb_sysfs_add_device(gchar * endpoint, int n)
{
gchar *manufacturer, *product, *mxpwr, *tmp, *strhash;
gint bus, classid, vendor, prodid;
@@ -100,7 +100,7 @@ void __scan_usb_sysfs_add_device(gchar * endpoint, int n)
g_free(mxpwr);
}
-gboolean __scan_usb_sysfs(void)
+static gboolean __scan_usb_sysfs(void)
{
GDir *sysfs;
gchar *filename;
@@ -136,7 +136,7 @@ gboolean __scan_usb_sysfs(void)
return usb_device_number > 0;
}
-gboolean __scan_usb_procfs(void)
+static gboolean __scan_usb_procfs(void)
{
FILE *dev;
gchar buffer[128];
@@ -260,7 +260,7 @@ gboolean __scan_usb_procfs(void)
}
-void __scan_usb_lsusb_add_device(char *buffer, int bufsize, FILE * lsusb, int usb_device_number)
+static void __scan_usb_lsusb_add_device(char *buffer, int bufsize, FILE * lsusb, int usb_device_number)
{
gint bus, device, vendor_id, product_id;
gchar *version = NULL, *product = NULL, *vendor = NULL, *dev_class = NULL, *int_class = NULL;
@@ -367,7 +367,7 @@ void __scan_usb_lsusb_add_device(char *buffer, int bufsize, FILE * lsusb, int us
g_free(name);
}
-gboolean __scan_usb_lsusb(void)
+static gboolean __scan_usb_lsusb(void)
{
static gchar *lsusb_path = NULL;
int usb_device_number = 0;
@@ -429,7 +429,7 @@ gboolean __scan_usb_lsusb(void)
#define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)");
-void _usb_dev(const usbd *u) {
+static void _usb_dev(const usbd *u) {
gchar *name, *key, *v_str, *str;
gchar *product, *vendor, *dev_class_str, *dev_subclass_str; /* don't free */
@@ -482,7 +482,7 @@ void _usb_dev(const usbd *u) {
g_free(key);
}
-gboolean __scan_usb_util(void) {
+static gboolean __scan_usb_util(void) {
usbd *list = usb_get_device_list();
usbd *curr = list;
@@ -496,8 +496,6 @@ gboolean __scan_usb_util(void) {
usb_list = g_strdup_printf("[%s]\n", _("USB Devices"));
while(curr) {
- //printf("USB: Bus %03d Dev %03d Ven %04x Prod %04x %s %s\n",
- // curr->bus, curr->dev, curr->vendor_id, curr->product_id, curr->vendor, curr->product);
_usb_dev(curr);
c++;
curr=curr->next;