[Toybox] [PATCH] getty: ensure utmp is updated.

Rob Landley rob at landley.net
Sat Aug 15 04:51:27 PDT 2020



On 8/15/20 6:43 AM, Rob Landley wrote:
> 
> 
> On 8/13/20 10:02 AM, Rob Landley wrote:
>> On 8/11/20 2:25 PM, enh via Toybox wrote:
>>> The key issues here turned out to be that getty is responsible for
>>> creating the file if it doesn't exist, and that the -H flag doesn't
>>> control whether utmp is updated, but whether or not to override the
>>> hostname within the utmp entry.
>>>
>>> While I'm here switch to the more modern utx APIs that all the non-pending
>>> parts of toybox use, and remove the duplication.
>>
>> Applied and pushed, but this reminds me I should really clean this up and
>> promote it.
>>
>> The reason I haven't is I don't really have a test environment for it? (This
>> waits for a modem to dial in to a serial port, adjusts the baud rate, and calls
>> login. I got my first broadband connection in 2001 and haven't owned a modem since.)
> 
> Do you have the FOGGIEST idea why:
> 
>     xopen_stdio(TT.tty_name, O_RDWR|O_NDELAY|O_CLOEXEC);
>     fcntl(0, F_SETFL, fcntl(0, F_GETFL) & ~O_NONBLOCK); // Block read
> 
> O_NDELAY == O_NONBLOCK so it opens the tty nonblock and then immediately
> switches off the nonblock. What (if anything) does that DO? Why is it here? Is
> this something BSD 2.x needed in 1983 because of certain defective ASR-33
> teletype variants when plugged into one of the HP minicomputers with the "zero
> and add packed" instruction?
> 
> The man page is unenlightening, and the kernel source has 373 _files_ with
> O_NONBLOCK in them...

Because some serial devices will otherwise block if someone else is using them,
and this turns that into an error instead of waiting forever:

https://stackoverflow.com/questions/55157876/open-function-doesnt-return-for-serial-port

Lovely. Welcome to 1975. (Does kicking other users on the previous lines fix
that already, or...?)

Rob


More information about the Toybox mailing list