wpa_supplicant: garbled log

Denys Vlasenko vda.linux
Fri Sep 27 18:51:45 PDT 2013


I'm running wpa_supplicant in a way where both
its stdout and stderr go to the same file descriptor,
which isn't a tty. IOW, I do this:

wpa_supplicant ... -dd 2&>1 | a_logger_tool

The log looks mostly ok, but sometimes I see stuff like this:

Add randomnes: count=ioctl[SIOCSIWFREQ]: Device or resource busy
3 entropy=2

Clearly, it was a perror("ioctl[SIOCSIWFREQ]"), and stdout
buffer happened to be not on a line boundary when perror()
sent its message to stderr.

This would not be noticed if stdout and stderr are separate,
or if they print to a tty, since in this case they are initialized
to line buffered mode.

One possible fix is to call  setlinebuf(stdout)  somewhere early
in main(); another is to fflush(stdout) or fflush(NULL) before
every perror().

Since wpa_supplicant doesn't print megabytes of log per second
and shouldn't worry about high efficiency of writing its stdout
I think using  setlinebuf(stdout)  is quite ok.


More information about the Hostap mailing list