static void _joystick_register(const char* syspath) { int fd, index; const char *devnode; Joystick_Info *ji; Joystick_Mapper mapper; devnode = eeze_udev_syspath_get_devpath(syspath); if (!devnode) return; if (!eina_str_has_prefix(devnode, joystickPrefix)) goto register_failed; mapper = _joystick_mapping_info_get(syspath); if (!mapper) { ERR("Unsupported joystick."); goto register_failed; } index = _joystick_index_get(devnode); if (index == -1) { ERR("Invalid index value."); goto register_failed; } ji = calloc(1, sizeof(Joystick_Info)); if (!ji) { ERR("Cannot allocate memory."); goto register_failed; } ji->index = index; ji->mapper = mapper; ji->system_path = eina_stringshare_ref(syspath); fd = open(devnode, O_RDONLY | O_NONBLOCK); ji->fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, _fd_handler_cb, ji, 0, 0); joystick_list = eina_list_append(joystick_list, ji); _joystick_connected_event_add(index, EINA_TRUE); register_failed: eina_stringshare_del(devnode); }
END_TEST START_TEST(eeze_test_udev_syspath) { Eina_List *type, *l; const char *name; Eina_Bool r; eeze_init(); type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_KEYBOARD, NULL); type = eeze_udev_find_unlisted_similar(type); EINA_LIST_FOREACH(type, l, name) { eeze_udev_syspath_get_devpath(name); eeze_udev_find_similar_from_syspath(name); eeze_udev_find_similar_from_syspath(NULL); eeze_udev_syspath_get_parent(name); eeze_udev_syspath_get_parent(NULL); eeze_udev_syspath_get_parents(name); eeze_udev_syspath_get_parents(NULL); eeze_udev_syspath_get_devname(name); eeze_udev_syspath_get_devname(NULL); eeze_udev_syspath_get_subsystem(name); eeze_udev_syspath_get_sysattr(name, "manufacturer"); eeze_udev_syspath_is_mouse(name); eeze_udev_syspath_is_kbd(name); eeze_udev_syspath_is_touchpad(name); eeze_udev_syspath_is_joystick(name); eeze_udev_walk_get_sysattr(name, "manufacturer"); eeze_udev_find_by_sysattr("manufacturer", NULL); eeze_udev_find_by_sysattr(NULL, NULL); eeze_udev_walk_check_sysattr(name, "manufacturer", NULL); eeze_udev_walk_check_sysattr(name, "manufacturer", "foo"); eeze_udev_walk_get_sysattr(NULL, "manufacturer"); eeze_udev_walk_get_sysattr(name, NULL); }