diff --git a/allynone.c b/allynone.c index c174f45..d2b0fb5 100644 --- a/allynone.c +++ b/allynone.c @@ -47,16 +47,13 @@ int main(int argc, char ** argv) { load_out_config(&out_settings, configuration_file); input_dev_composite_t* in_devs = NULL; - - int dmi_name_fd = open("/sys/class/dmi/id/board_name", O_RDONLY | O_NONBLOCK); - if (dmi_name_fd < 0) { + + char bname[256]; + if (dmi_board_name(bname, sizeof(bname)) < 0) { fprintf(stderr, "Cannot get the board name\n"); return EXIT_FAILURE; } - char bname[256]; - memset(bname, 0, sizeof(bname)); - read(dmi_name_fd, bname, sizeof(bname)); if (strstr(bname, "RC71L") != NULL) { printf("Running in an Asus ROG Ally device\n"); in_devs = rog_ally_device_def(&in_settings); @@ -64,7 +61,7 @@ int main(int argc, char ** argv) { printf("Running in an Lenovo Legion Go device\n"); in_devs = legion_go_device_def(); } - close(dmi_name_fd); + int dev_in_thread_creation = -1; int dev_out_thread_creation = -1; diff --git a/rogue_enemy.c b/rogue_enemy.c index 4be29b4..31be1db 100644 --- a/rogue_enemy.c +++ b/rogue_enemy.c @@ -28,4 +28,17 @@ int64_t absolute_value(int64_t value) { } return value; +} + +ssize_t dmi_board_name(char *const buf, size_t buf_len) { +int dmi_name_fd = open("/sys/class/dmi/id/board_name", O_RDONLY | O_NONBLOCK); + if (dmi_name_fd < 0) { + return -1; + } + + memset(buf, 0, buf_len); + const ssize_t ret = read(dmi_name_fd, buf, buf_len); + close(dmi_name_fd); + + return ret; } \ No newline at end of file diff --git a/rogue_enemy.h b/rogue_enemy.h index 127574f..4b2d85b 100644 --- a/rogue_enemy.h +++ b/rogue_enemy.h @@ -67,4 +67,6 @@ int64_t div_round_closest_i64(int64_t x, int64_t divisor); int64_t min_max_clamp(int64_t value, int64_t min, int64_t max); -int64_t absolute_value(int64_t value); \ No newline at end of file +int64_t absolute_value(int64_t value); + +ssize_t dmi_board_name(char *const buf, size_t buf_len); \ No newline at end of file