Unix V7 ed(1)
исходный код является примитивной 1762-линией C программой всего лишь несколько замечаний, один из которых это высоко поучительного заголовка комментарий:
/*
* Editor
*/
Учитывая, что сам исходный код не дает никакого обоснования, вы получите его только от автора программы.
ed
Первоначально он был написан Кеном Томпсоном в сборке PDP-11 , но вам действительно нужно было поговорить с тем, кто перенес его на C. Это мог быть Деннис Ритчи , так как он создал C для Unix и был одним из многих, кто использовал C для сделать Unix переносимым на машины без PDP. Доктора Ритчи больше нет рядом, чтобы отвечать на такие вопросы.
Мое чтение кода предполагает, что это было сделано для того, чтобы попытаться сохранить содержимое основной копии отредактированного документа. Вы заметите, что другие текстовые редакторы также не умирают Ctrl-C.
Вот что ed
делает на Ctrl-C:
onintr()
{
signal(SIGINT, onintr);
putchr('\n');
lastc = '\n';
error(Q);
}
(Да, K & R C. Нам не нужны никакие идентификаторы возвращаемых типов или объявления параметров).
Переведено на английский ed
:
Перерегистрирует обработчик сигнала.
(Unix не получал сигналы автоматического сброса до 4.3BSD , в середине 1980-х.)
Записывает новую строку и запоминает, что это так, через глобальную переменную lastc
.
( ed.c
имеет около шестидесяти глобальных переменных.)
Вызывает error()
функцию, которая классно делает немного больше, чем печать ?
, с точки зрения пользователя.
Другими словами, он говорит: «Вы действительно не хотели этого делать?»