diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c index 52da8f5e..b20b7b7e 100644 --- a/sway/input/input-manager.c +++ b/sway/input/input-manager.c @@ -34,13 +34,6 @@ static struct sway_seat *input_manager_get_seat( return sway_seat_create(input, seat_name); } -static inline int strlen_num(int num) { - if (num == 0) { - return 2; - } - return (int)((ceil(log10(abs(num)))+2)); -} - static char *get_device_identifier(struct wlr_input_device *device) { int vendor = device->vendor; int product = device->product; @@ -54,19 +47,14 @@ static char *get_device_identifier(struct wlr_input_device *device) { } } - int len = - (strlen(name) + - strlen_num(device->vendor) + - strlen_num(device->product) + - 3) * sizeof(char); - + const char *fmt = "%d:%d:%s"; + int len = snprintf(NULL, 0, fmt, vendor, product, name) + 1; char *identifier = malloc(len); if (!identifier) { sway_log(L_ERROR, "Unable to allocate unique input device name"); return NULL; } - const char *fmt = "%d:%d:%s"; snprintf(identifier, len, fmt, vendor, product, name); free(name); return identifier;