mirror of
https://github.com/Lekensteyn/ltunify.git
synced 2025-12-09 18:05:34 +00:00
ltunify: make hidraw device path more obvious
This commit is contained in:
14
ltunify.c
14
ltunify.c
@@ -1091,7 +1091,7 @@ static int validate_args(int argc, char **argv, char ***argsp, char **hidraw_pat
|
|||||||
int open_hidraw(void) {
|
int open_hidraw(void) {
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
glob_t matches;
|
glob_t matches;
|
||||||
char *hiddev_name = NULL;
|
char hiddev_name[32] = {0};
|
||||||
|
|
||||||
if (!glob("/sys/class/hidraw/hidraw*/device/driver", 0, NULL, &matches)) {
|
if (!glob("/sys/class/hidraw/hidraw*/device/driver", 0, NULL, &matches)) {
|
||||||
size_t i;
|
size_t i;
|
||||||
@@ -1100,6 +1100,7 @@ int open_hidraw(void) {
|
|||||||
ssize_t r;
|
ssize_t r;
|
||||||
char *name = matches.gl_pathv[i];
|
char *name = matches.gl_pathv[i];
|
||||||
const char *last_comp;
|
const char *last_comp;
|
||||||
|
char *dev_name;
|
||||||
|
|
||||||
r = readlink(name, buf, (sizeof buf) - 1);
|
r = readlink(name, buf, (sizeof buf) - 1);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
@@ -1110,16 +1111,17 @@ int open_hidraw(void) {
|
|||||||
buf[r] = 0; /* readlink does not NUL-terminate */
|
buf[r] = 0; /* readlink does not NUL-terminate */
|
||||||
last_comp = basename(buf);
|
last_comp = basename(buf);
|
||||||
|
|
||||||
|
/* retrieve 'hidrawX' name */
|
||||||
|
dev_name = name + sizeof "/sys/class/hidraw";
|
||||||
|
*(strchr(dev_name, '/')) = 0;
|
||||||
|
|
||||||
if (!strcmp(last_comp, RECEIVER_NAME)) {
|
if (!strcmp(last_comp, RECEIVER_NAME)) {
|
||||||
/* Logitech receiver c52b and c532 - pass */
|
/* Logitech receiver c52b and c532 - pass */
|
||||||
} else { /* unknown driver */
|
} else { /* unknown driver */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
hiddev_name = name + sizeof "/sys/class/hidraw" - sizeof "/dev";
|
snprintf(hiddev_name, sizeof hiddev_name, "/dev/%s", dev_name);
|
||||||
memcpy(hiddev_name, "/dev", sizeof "/dev" - 1);
|
|
||||||
name[strlen(name) - sizeof "/device/driver" + 1] = '\0';
|
|
||||||
|
|
||||||
fd = open(hiddev_name, O_RDWR);
|
fd = open(hiddev_name, O_RDWR);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
perror(hiddev_name);
|
perror(hiddev_name);
|
||||||
@@ -1130,7 +1132,7 @@ int open_hidraw(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
if (hiddev_name) {
|
if (*hiddev_name) {
|
||||||
fprintf(stderr, "Logitech Unifying Receiver device is not accessible.\n"
|
fprintf(stderr, "Logitech Unifying Receiver device is not accessible.\n"
|
||||||
"Try running this program as root or enable read/write permissions\n"
|
"Try running this program as root or enable read/write permissions\n"
|
||||||
"for %s\n", hiddev_name);
|
"for %s\n", hiddev_name);
|
||||||
|
|||||||
Reference in New Issue
Block a user