Bruno Jesus : dinput: Use a helper to read information files for the js device.
Module: wine Branch: master Commit: 7439f7948c417905028aa82685b1613b77f5cf59 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7439f7948c417905028aa82685... Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Tue Aug 16 22:23:45 2016 -0300 dinput: Use a helper to read information files for the js device. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/joystick_linux.c | 54 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 20e2573..f7061d5 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -142,6 +142,30 @@ static struct JoyDev *joystick_devices; static void joy_polldev(LPDIRECTINPUTDEVICE8A iface); +#define SYS_PATH_FORMAT "/sys/class/input/js%d/device/id/%s" +static BOOL read_sys_id_variable(int index, const char *property, WORD *value) +{ + char sys_path[sizeof(SYS_PATH_FORMAT) + 16], id_str[5]; + int sys_fd; + BOOL ret = FALSE; + + sprintf(sys_path, SYS_PATH_FORMAT, index, property); + sys_fd = open(sys_path, O_RDONLY); + if (sys_fd > 0) + { + if (read(sys_fd, id_str, 4) == 4) + { + id_str[4] = '\0'; + *value = strtol(id_str, NULL, 16); + ret = TRUE; + } + + close(sys_fd); + } + return ret; +} +#undef SYS_PATH_FORMAT + static INT find_joystick_devices(void) { INT i; @@ -151,10 +175,9 @@ static INT find_joystick_devices(void) joystick_devices_count = 0; for (i = 0; i < MAX_JOYSTICKS; i++) { - int fd, sys_fd; + int fd; struct JoyDev joydev, *new_joydevs; BYTE axes_map[ABS_MAX + 1]; - char sys_path[sizeof("/sys/class/input/js/device/id/product") + 10], id_str[5]; snprintf(joydev.device, sizeof(joydev.device), "%s%d", JOYDEV_NEW, i); if ((fd = open(joydev.device, O_RDONLY)) < 0) @@ -225,31 +248,8 @@ static INT find_joystick_devices(void) joydev.vendor_id = 0; joydev.product_id = 0; - sprintf(sys_path, "/sys/class/input/js%d/device/id/vendor", i); - sys_fd = open(sys_path, O_RDONLY); - if (sys_fd > 0) - { - if (read(sys_fd, id_str, 4) == 4) - { - id_str[4] = '\0'; - joydev.vendor_id = strtol(id_str, NULL, 16); - } - - close(sys_fd); - } - - sprintf(sys_path, "/sys/class/input/js%d/device/id/product", i); - sys_fd = open(sys_path, O_RDONLY); - if (sys_fd > 0) - { - if (read(sys_fd, id_str, 4) == 4) - { - id_str[4] = '\0'; - joydev.product_id = strtol(id_str, NULL, 16); - } - - close(sys_fd); - } + read_sys_id_variable(i, "vendor", &joydev.vendor_id); + read_sys_id_variable(i, "product", &joydev.product_id); if (joydev.vendor_id == 0 || joydev.product_id == 0) {
participants (1)
-
Alexandre Julliard