i cannot reproduce the problem here and i do not quite understand what your patch (with whitespace errors) should fix other than having the wrong interface configured.
- drkhsh On Mon, Jul 28, 2025 at 05:24:11PM +0100, ryhpez wrote: > this patch fixes a problem with the 'ifindex' function (in > 'components/wifi.c'). if the wireless interface was down when 'slstatus' > started, it wouldn’t detect it even after bringing the interface up later. > I ran into this because I usually boot with all interfaces down and only > enable them when needed. After updating to v1.1, I noticed the SSID never > showed unless the interface was already up at launch. > > the issue is that the code caches the interface name in 'ifr' (a static > 'struct ifreq' in 'ifindex') and skips calling 'ioctl(ifsock, SIOCGIFINDEX, > &ifr)' after the first time because of this check: > ` > if (strcmp(ifr.ifr_name, interface) != 0) { > strcpy(ifr.ifr_name, interface); > if (ioctl(ifsock, SIOCGIFINDEX, &ifr) != 0) { > warn("ioctl 'SIOCGIFINDEX':"); > return -1; > } > } > ` > since the interface name doesn’t change, it never retries 'ioctl' when the > interface comes up later, the patch changes this to always call 'ioctl', this > way, it detects the interface as soon as it’s available. > > let me know if you want this included in the mainbranch or if I just add it > to the patches page in case the current behavior is intentional. > --- > components/wifi.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/components/wifi.c b/components/wifi.c > index 23af201..8639957 100644 > --- a/components/wifi.c > +++ b/components/wifi.c > @@ -108,12 +108,12 @@ > warn("socket 'AF_UNIX':"); > return -1; > } > - if (strcmp(ifr.ifr_name, interface) != 0) { > + if (strcmp(ifr.ifr_name, interface) != 0) { > strcpy(ifr.ifr_name, interface); > - if (ioctl(ifsock, SIOCGIFINDEX, &ifr) != 0) { > - warn("ioctl 'SIOCGIFINDEX':"); > - return -1; > - } > + } > + if (ioctl(ifsock, SIOCGIFINDEX, &ifr) != 0) { > + warn("ioctl 'SIOCGIFINDEX':"); > + return -1; > } > return ifr.ifr_ifindex; > } > -- > 2.49.0 > >