mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-07 14:18:31 +02:00
Replace strneq() with hardcoded lengths with strstartswith()
Slightly less efficient but easier to read and it's not possible to accidentally provide the wrong length. Plus it handles null pointers correctly so get to skip the checks (which weren't needed for strneq() either, but still). Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1121>
This commit is contained in:
parent
00bc910df7
commit
2c0c4a6516
12 changed files with 32 additions and 32 deletions
18
src/quirks.c
18
src/quirks.c
|
|
@ -531,7 +531,7 @@ section_destroy(struct section *s)
|
||||||
static inline bool
|
static inline bool
|
||||||
parse_hex(const char *value, unsigned int *parsed)
|
parse_hex(const char *value, unsigned int *parsed)
|
||||||
{
|
{
|
||||||
return strneq(value, "0x", 2) &&
|
return strstartswith(value, "0x") &&
|
||||||
safe_atou_base(value, parsed, 16) &&
|
safe_atou_base(value, parsed, 16) &&
|
||||||
strspn(value, "0123456789xABCDEF") == strlen(value) &&
|
strspn(value, "0123456789xABCDEF") == strlen(value) &&
|
||||||
*parsed <= 0xFFFF;
|
*parsed <= 0xFFFF;
|
||||||
|
|
@ -622,7 +622,7 @@ parse_match(struct quirks_context *ctx,
|
||||||
s->match.version = version;
|
s->match.version = version;
|
||||||
} else if (streq(key, "MatchDMIModalias")) {
|
} else if (streq(key, "MatchDMIModalias")) {
|
||||||
check_set_bit(s, M_DMI);
|
check_set_bit(s, M_DMI);
|
||||||
if (!strneq(value, "dmi:", 4)) {
|
if (!strstartswith(value, "dmi:")) {
|
||||||
qlog_parser(ctx,
|
qlog_parser(ctx,
|
||||||
"%s: MatchDMIModalias must start with 'dmi:'\n",
|
"%s: MatchDMIModalias must start with 'dmi:'\n",
|
||||||
s->name);
|
s->name);
|
||||||
|
|
@ -680,7 +680,7 @@ parse_model(struct quirks_context *ctx,
|
||||||
bool b;
|
bool b;
|
||||||
enum quirk q = QUIRK_MODEL_ALPS_SERIAL_TOUCHPAD;
|
enum quirk q = QUIRK_MODEL_ALPS_SERIAL_TOUCHPAD;
|
||||||
|
|
||||||
assert(strneq(key, "Model", 5));
|
assert(strstartswith(key, "Model"));
|
||||||
|
|
||||||
if (!parse_boolean_property(value, &b))
|
if (!parse_boolean_property(value, &b))
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -918,11 +918,11 @@ parse_value_line(struct quirks_context *ctx, struct section *s, const char *line
|
||||||
if (value[0] == '"' || value[0] == '\'')
|
if (value[0] == '"' || value[0] == '\'')
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (strneq(key, "Match", 5))
|
if (strstartswith(key, "Match"))
|
||||||
rc = parse_match(ctx, s, key, value);
|
rc = parse_match(ctx, s, key, value);
|
||||||
else if (strneq(key, "Model", 5))
|
else if (strstartswith(key, "Model"))
|
||||||
rc = parse_model(ctx, s, key, value);
|
rc = parse_model(ctx, s, key, value);
|
||||||
else if (strneq(key, "Attr", 4))
|
else if (strstartswith(key, "Attr"))
|
||||||
rc = parse_attr(ctx, s, key, value);
|
rc = parse_attr(ctx, s, key, value);
|
||||||
else
|
else
|
||||||
qlog_error(ctx, "Unknown value prefix %s\n", line);
|
qlog_error(ctx, "Unknown value prefix %s\n", line);
|
||||||
|
|
@ -1050,7 +1050,7 @@ parse_file(struct quirks_context *ctx, const char *path)
|
||||||
path, lineno, line);
|
path, lineno, line);
|
||||||
goto out;
|
goto out;
|
||||||
case STATE_MATCH:
|
case STATE_MATCH:
|
||||||
if (!strneq(line, "Match", 5)) {
|
if (!strstartswith(line, "Match")) {
|
||||||
qlog_parser(ctx, "%s:%d: expected MatchFoo=bar, have %s\n",
|
qlog_parser(ctx, "%s:%d: expected MatchFoo=bar, have %s\n",
|
||||||
path, lineno, line);
|
path, lineno, line);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
@ -1058,11 +1058,11 @@ parse_file(struct quirks_context *ctx, const char *path)
|
||||||
state = STATE_MATCH_OR_VALUE;
|
state = STATE_MATCH_OR_VALUE;
|
||||||
break;
|
break;
|
||||||
case STATE_MATCH_OR_VALUE:
|
case STATE_MATCH_OR_VALUE:
|
||||||
if (!strneq(line, "Match", 5))
|
if (!strstartswith(line, "Match"))
|
||||||
state = STATE_VALUE_OR_SECTION;
|
state = STATE_VALUE_OR_SECTION;
|
||||||
break;
|
break;
|
||||||
case STATE_VALUE_OR_SECTION:
|
case STATE_VALUE_OR_SECTION:
|
||||||
if (strneq(line, "Match", 5)) {
|
if (strstartswith(line, "Match")) {
|
||||||
qlog_parser(ctx, "%s:%d: expected value or [Section], have %s\n",
|
qlog_parser(ctx, "%s:%d: expected value or [Section], have %s\n",
|
||||||
path, lineno, line);
|
path, lineno, line);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,7 @@ udev_input_add_devices(struct udev_input *input, struct udev *udev)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sysname = udev_device_get_sysname(device);
|
sysname = udev_device_get_sysname(device);
|
||||||
if (!strneq("event", sysname, 5)) {
|
if (!strstartswith(sysname, "event")) {
|
||||||
udev_device_unref(device);
|
udev_device_unref(device);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -227,7 +227,7 @@ evdev_udev_handler(void *data)
|
||||||
if (!action)
|
if (!action)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!strneq("event", udev_device_get_sysname(udev_device), 5))
|
if (!strstartswith(udev_device_get_sysname(udev_device), "event"))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (streq(action, "add"))
|
if (streq(action, "add"))
|
||||||
|
|
|
||||||
|
|
@ -305,7 +305,7 @@ parse_evcode_string(const char *s, int *type_out, int *code_out)
|
||||||
{
|
{
|
||||||
int type, code;
|
int type, code;
|
||||||
|
|
||||||
if (strneq(s, "EV_", 3)) {
|
if (strstartswith(s, "EV_")) {
|
||||||
type = libevdev_event_type_from_name(s);
|
type = libevdev_event_type_from_name(s);
|
||||||
if (type == -1)
|
if (type == -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ all_codes_create(struct litest_device *d)
|
||||||
for (idx = 0, code = 0; code < KEY_MAX; code++) {
|
for (idx = 0, code = 0; code < KEY_MAX; code++) {
|
||||||
const char *name = libevdev_event_code_get_name(EV_KEY, code);
|
const char *name = libevdev_event_code_get_name(EV_KEY, code);
|
||||||
|
|
||||||
if (name && strneq(name, "BTN_", 4))
|
if (strstartswith(name, "BTN_"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
events[idx++] = EV_KEY;
|
events[idx++] = EV_KEY;
|
||||||
|
|
|
||||||
|
|
@ -1356,7 +1356,7 @@ litest_init_device_udev_rules(struct litest_test_device *dev, FILE *f)
|
||||||
kv = dev->udev_properties;
|
kv = dev->udev_properties;
|
||||||
while (kv->key) {
|
while (kv->key) {
|
||||||
fprintf(f, ", \\\n\tENV{%s}=\"%s\"", kv->key, kv->value);
|
fprintf(f, ", \\\n\tENV{%s}=\"%s\"", kv->key, kv->value);
|
||||||
if (strneq(kv->key, "EVDEV_ABS_", 10))
|
if (strstartswith(kv->key, "EVDEV_ABS_"))
|
||||||
need_keyboard_builtin = true;
|
need_keyboard_builtin = true;
|
||||||
kv++;
|
kv++;
|
||||||
}
|
}
|
||||||
|
|
@ -1423,7 +1423,7 @@ open_restricted(const char *path, int flags, void *userdata)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
if (strneq(path, prefix, strlen(prefix))) {
|
if (strstartswith(path, prefix)) {
|
||||||
p = zalloc(sizeof *p);
|
p = zalloc(sizeof *p);
|
||||||
p->path = safe_strdup(path);
|
p->path = safe_strdup(path);
|
||||||
p->fd = fd;
|
p->fd = fd;
|
||||||
|
|
@ -2298,7 +2298,7 @@ udev_wait_for_device_event(struct udev_monitor *udev_monitor,
|
||||||
}
|
}
|
||||||
|
|
||||||
udev_syspath = udev_device_get_syspath(udev_device);
|
udev_syspath = udev_device_get_syspath(udev_device);
|
||||||
if (udev_syspath && strstartswith(udev_syspath, syspath))
|
if (strstartswith(udev_syspath, syspath))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
udev_device_unref(udev_device);
|
udev_device_unref(udev_device);
|
||||||
|
|
|
||||||
|
|
@ -1695,8 +1695,8 @@ START_TEST(device_button_down_remove)
|
||||||
|
|
||||||
keyname = libevdev_event_code_get_name(EV_KEY, code);
|
keyname = libevdev_event_code_get_name(EV_KEY, code);
|
||||||
if (!keyname ||
|
if (!keyname ||
|
||||||
!strneq(keyname, "BTN_", 4) ||
|
!strstartswith(keyname, "BTN_") ||
|
||||||
strneq(keyname, "BTN_TOOL_", 9))
|
strstartswith(keyname, "BTN_TOOL_"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!libevdev_has_event_code(lidev->evdev, EV_KEY, code))
|
if (!libevdev_has_event_code(lidev->evdev, EV_KEY, code))
|
||||||
|
|
|
||||||
|
|
@ -342,7 +342,7 @@ START_TEST(keyboard_no_buttons)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
name = libevdev_event_code_get_name(EV_KEY, code);
|
name = libevdev_event_code_get_name(EV_KEY, code);
|
||||||
if (!name || !strneq(name, "KEY_", 4))
|
if (!strstartswith(name, "KEY_"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
litest_keyboard_key(dev, code, true);
|
litest_keyboard_key(dev, code, true);
|
||||||
|
|
|
||||||
|
|
@ -481,7 +481,7 @@ START_TEST(path_device_sysname)
|
||||||
litest_assert_notnull(sysname);
|
litest_assert_notnull(sysname);
|
||||||
litest_assert_int_gt(strlen(sysname), 1U);
|
litest_assert_int_gt(strlen(sysname), 1U);
|
||||||
litest_assert(strchr(sysname, '/') == NULL);
|
litest_assert(strchr(sysname, '/') == NULL);
|
||||||
litest_assert(strneq(sysname, "event", 5));
|
litest_assert(strstartswith(sysname, "event"));
|
||||||
|
|
||||||
libinput_event_destroy(ev);
|
libinput_event_destroy(ev);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -487,7 +487,7 @@ START_TEST(udev_device_sysname)
|
||||||
litest_assert_notnull(sysname);
|
litest_assert_notnull(sysname);
|
||||||
litest_assert_int_gt(strlen(sysname), 1U);
|
litest_assert_int_gt(strlen(sysname), 1U);
|
||||||
litest_assert(strchr(sysname, '/') == NULL);
|
litest_assert(strchr(sysname, '/') == NULL);
|
||||||
litest_assert(strneq(sysname, "event", 5));
|
litest_assert(strstartswith(sysname, "event"));
|
||||||
libinput_event_destroy(ev);
|
libinput_event_destroy(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ main(int argc, char **argv)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
path = argv[optind];
|
path = argv[optind];
|
||||||
if (strneq(path, "/sys/", 5)) {
|
if (strstartswith(path, "/sys/")) {
|
||||||
device = udev_device_new_from_syspath(udev, path);
|
device = udev_device_new_from_syspath(udev, path);
|
||||||
} else {
|
} else {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
|
||||||
|
|
@ -1365,9 +1365,9 @@ print_system_header(FILE *fp)
|
||||||
while (fgets(osrstr, sizeof(osrstr), osrelease)) {
|
while (fgets(osrstr, sizeof(osrstr), osrelease)) {
|
||||||
osrstr[strlen(osrstr) - 1] = '\0'; /* linebreak */
|
osrstr[strlen(osrstr) - 1] = '\0'; /* linebreak */
|
||||||
|
|
||||||
if (!distro && strneq(osrstr, "ID=", 3))
|
if (!distro && strstartswith(osrstr, "ID="))
|
||||||
distro = strstrip(&osrstr[3], "\"'");
|
distro = strstrip(&osrstr[3], "\"'");
|
||||||
else if (!version && strneq(osrstr, "VERSION_ID=", 11))
|
else if (!version && strstartswith(osrstr, "VERSION_ID="))
|
||||||
version = strstrip(&osrstr[11], "\"'");
|
version = strstrip(&osrstr[11], "\"'");
|
||||||
|
|
||||||
if (distro && version) {
|
if (distro && version) {
|
||||||
|
|
@ -1746,11 +1746,11 @@ print_udev_properties(struct record_device *dev)
|
||||||
|
|
||||||
key = udev_list_entry_get_name(entry);
|
key = udev_list_entry_get_name(entry);
|
||||||
|
|
||||||
if (strneq(key, "ID_INPUT", 8) ||
|
if (strstartswith(key, "ID_INPUT") ||
|
||||||
strneq(key, "LIBINPUT", 8) ||
|
strstartswith(key, "LIBINPUT") ||
|
||||||
strneq(key, "EVDEV_ABS", 9) ||
|
strstartswith(key, "EVDEV_ABS") ||
|
||||||
strneq(key, "MOUSE_DPI", 9) ||
|
strstartswith(key, "MOUSE_DPI") ||
|
||||||
strneq(key, "POINTINGSTICK_", 14)) {
|
strstartswith(key, "POINTINGSTICK_")) {
|
||||||
value = udev_list_entry_get_value(entry);
|
value = udev_list_entry_get_value(entry);
|
||||||
iprintf(dev->fp, I_UDEV_DATA, "- %s=%s\n", key, value);
|
iprintf(dev->fp, I_UDEV_DATA, "- %s=%s\n", key, value);
|
||||||
}
|
}
|
||||||
|
|
@ -1899,7 +1899,7 @@ print_device_description(struct record_device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_event_node(const struct dirent *dir) {
|
static int is_event_node(const struct dirent *dir) {
|
||||||
return strneq(dir->d_name, "event", 5);
|
return strstartswith(dir->d_name, "event");
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
|
@ -2599,7 +2599,7 @@ is_char_dev(const char *path)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
if (strneq(path, "/dev", 4))
|
if (strstartswith(path, "/dev"))
|
||||||
return F_DEVICE;
|
return F_DEVICE;
|
||||||
|
|
||||||
if (stat(path, &st) != 0) {
|
if (stat(path, &st) != 0) {
|
||||||
|
|
|
||||||
|
|
@ -665,7 +665,7 @@ find_device(const char *udev_tag)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sysname = udev_device_get_sysname(device);
|
sysname = udev_device_get_sysname(device);
|
||||||
if (!strneq("event", sysname, 5)) {
|
if (!strstartswith("event", sysname)) {
|
||||||
udev_device_unref(device);
|
udev_device_unref(device);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue