Skip to content

Разбор stty читает пару, а не соседа: BSD давал 80×80 вместо 24×80 - #2

Merged
the-homeless-god merged 1 commit into
masterfrom
a/7185-bsd-stty
Sep 4, 2026
Merged

the-homeless-god merged 1 commit into
masterfrom
a/7185-bsd-stty

Conversation

@the-homeless-god

Copy link
Copy Markdown
Member

Задача 7185.

stty -a пишут двумя записями: GNU — rows 24; columns 80, BSD и macOS — 24 rows; 80 columns. Разбор брал число «рядом» с ключом — сначала справа, потом слева — и на записи BSD отвечал 80×80:

speed 38400 baud; 24 rows; 80 columns;
      [0]   [1]  [2] [3]  [4]  [5]

У rows справа стоит 80, и оно годилось. Перевернуть порядок нельзя: тогда columns у GNU взял бы слева 24. Ни одна сторона по отдельности не верна — верна пара, а какая она, видно по тому, число слово или нет. Съеденная пара пропускается целиком, иначе число из пары GNU досталось бы следующему ключу как пара BSD.

Замер обеими версиями на тех же строках

GNU BSD сырой режим
было 24×80 80×80 24×80
стало 24×80 24×80 24×80

Тест на это в дереве уже стоял и был красным с 2 сентября — с того же дня, когда файл завели (c7729e0).

Что чинится сверх размера терминала

Шаг «Тесты, включая те, которым нужен мак» был красным на обоих маковских бегунках, и из-за этого пропускались два шага ниже — «Снимок содержит числа, а не прочерки» и «В выводе нет инженерного дневника». Десять проверок на числа в снимке и сторож против объяснений вместо чисел не работали на маке ни на одном прогоне: не красные, а непрогнанные.

На живом маке от этого же была неверна строка состояния: она считала, что строк 80, а их 24.

Задача 7185. `stty -a` пишут двумя записями: GNU — «rows 24; columns 80»,
BSD и macOS — «24 rows; 80 columns». Разбор брал число «рядом» с ключом,
сначала справа, потом слева, и на записи BSD отвечал 80×80:

    speed 38400 baud; 24 rows; 80 columns;
          [0]   [1]  [2] [3]  [4]  [5]

у «rows» справа стоит 80, и оно годилось. Перевернуть порядок нельзя:
тогда «columns» у GNU взял бы слева 24. Ни одна сторона по отдельности
не верна — верна ПАРА, а какая она, видно по тому, число слово или нет.

Теперь разбирается пара, и съеденная пропускается целиком: иначе число
из пары GNU досталось бы следующему ключу как пара BSD.

Замер мой, обеими версиями на тех же трёх строках:

    было   GNU 24×80   BSD 80×80   сырой 24×80
    стало  GNU 24×80   BSD 24×80   сырой 24×80

Тест на это в дереве уже стоял и был красным с 2 сентября — с того же
дня, когда файл завели (c7729e0).

ЧТО ЭТО ЧИНИТ СВЕРХ РАЗМЕРА ТЕРМИНАЛА. Шаг «Тесты, включая те, которым
нужен мак» был красным на обоих маковских бегунках, и из-за этого
ПРОПУСКАЛИСЬ два шага ниже — «Снимок содержит числа, а не прочерки» и
«В выводе нет инженерного дневника». Десять проверок на числа в снимке и
сторож против объяснений вместо чисел не работали на маке ни на одном
прогоне: не красные, а непрогнанные.
@the-homeless-god
the-homeless-god merged commit b89cdaa into master Sep 4, 2026
0 of 6 checks passed
@the-homeless-god
the-homeless-god deleted the a/7185-bsd-stty branch September 4, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant