tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: scanning ...wiconfig: ioctl: No such file or directory



On Tue June 23 2009 11:15:24 David Laight wrote:
> On Sat, Jun 20, 2009 at 10:56:17AM +0100, Iain Hibbert wrote:
> > Good catch, though imo its unclean to use errno in this way as it only
> > indicates what error occurred, not the presence of an error. Although the
> > change is bigger, is it better to do
>
> ...
>
> >     while (ioctl(s, SIOCGWAVELAN, &ifr) == -1) {
> >             retries--;
> > !           if (retries < 0) {
> > !                   set_if_flags(s, iface, flags);
> > !                   close(s);
> > !                   err(1, "ioctl");
> > !           }
> >
> > !           printf(".");
> > !           fflush(stdout);
> > !           sleep(1);
> >     }
>
> That is still (ate least IMHO) buggy sine the err() call needs to
> be made before the set_if_flags() and close() since either could,
> at least potentially, change errno.
>
> I've also just had a wicked thought that a signal handler might
> also run and change errno!
> I wonder how that affects the checking of errno for some libc functions!

The errno that is set after the call to printf is from malloc calling readlink 
on /etc/malloc.conf.  ENOENT is exactly right.

Sverre


Home | Main Index | Thread Index | Old Index