wiphy: Remove basename() use

basename use is considered harmful.  There are two versions of
basename (see man 3 basename for details).  The more intuitive version,
which is currently being used inside wiphy.c, is not supported by musl
libc implementation.  Use of the libgen version is not preferred, so
drop use of basename entirely.  Since wiphy.c is the only call site of
basename() inside iwd, open code the required logic.
This commit is contained in:
Denis Kenzior 2024-02-14 14:50:06 -06:00
parent 6315b42861
commit ba5a6df2d1
1 changed files with 4 additions and 1 deletions

View File

@ -1896,6 +1896,7 @@ static bool wiphy_get_driver_name(struct wiphy *wiphy)
unsigned int j;
const struct l_settings *config = iwd_get_config();
char **flag_list;
char *driver;
driver_link = l_strdup_printf("/sys/class/ieee80211/%s/device/driver",
wiphy->name);
@ -1907,7 +1908,9 @@ static bool wiphy_get_driver_name(struct wiphy *wiphy)
}
driver_path[len] = '\0';
wiphy->driver_str = l_strdup(basename(driver_path));
driver = memrchr(driver_path, '/', len);
wiphy->driver_str = l_strdup(driver ? driver + 1 : driver_path);
for (i = 0; i < L_ARRAY_SIZE(driver_infos); i++)
if (!fnmatch(driver_infos[i].prefix, wiphy->driver_str, 0))