[SLOF] [PATCH] slof/fs/accept: Allow Unix LF line endings, too

Alexey Kardashevskiy aik at ozlabs.ru
Tue Aug 31 00:07:29 AEST 2021



On 30/08/2021 23:55, Segher Boessenkool wrote:
> On Mon, Aug 30, 2021 at 11:28:15PM +1000, Alexey Kardashevskiy wrote:
>> On 30/08/2021 23:10, Segher Boessenkool wrote:
>>> On Mon, Aug 30, 2021 at 12:53:08PM +0200, Thomas Huth wrote:
>>>> Currently SLOF only accepts CR (0x0d) line endings at the command prompt,
>>>> since this is the default line ending used on serial consoles.
>>>
>>>> However,
>>>> sometimes people try to connect to SLOF directly in a way that uses the
>>>> typical Unix LF line endings (0x0a) which are then completely ignored,
>>>> for example running QEMU like this:
>>>>
>>>>   qemu-system-ppc64 -nodefaults \
>>>>      -chardev socket,path=/tmp/mysocket,wait=off,id=cs0,server=on \
>>>>      -device spapr-vty,id=serial0,reg=0x30000000,chardev=cs0
>>>>
>>>> and then connect to that Unix socket via "nc -U /tmp/mysocket".
>>>>
>>>> For such use cases, allow the 0x0a line ending in SLOF, too.
>>>
>>> How does that work if you feed text with CRLF combos?  If it does accept
>>> a new line at both CR and LF, that is problematic (it violates both the
>>> OF and ANS specifications of ACCEPT).
>>
>> Is it in of1275 somewhere? I looked but did not spot quickly.
> 
> Hrm, the text skirts the issues somewhat :-)  7.2, in any case.
> 
> 1275 doesn't really say what to do with input from another source I
> think?

You assumed "the keyboard" because of constant use of the "keystroke" word?


> If you accept a new line at both CR and LF it will accept an empty line
> after every "real" input line.  This breaks various things (and is super
> annoying in the first place).


What things does this break?


>>> A "real" terminal sends CR only, by default, and can be switched to
>>> send CRLF instead (by CSI 20h; switch back with CSI 20l).  You cannot do
>>> only LF on a standard terminal.
>>
>> "strace cat" shows this on "enter":
>>
>> read(0, "\n", 131072)   = 1
>> write(1, "\n", 1)       = 1
>>
>> What do I miss?
> 
> You didn't use a communications terminal.  You used a UNIX program :-)

Where does this communication program take the input from? ;)


-- 
Alexey


More information about the SLOF mailing list