Unix V7 ed(1)
вихідний код є примітивною тисячі сімсот шістьдесят дві-лінією 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. Нам не потрібні специфікатори типу повернення Steenkin або декларації параметрів.)
Перекладено англійською мовою ed
:
Повторно реєструє обробник сигналу.
( У середині 1980-х Unix не отримувала сигнали автоматичного скидання до 4.3BSD .)
Виписує новий рядок і пам’ятає, що це робилося через глобальну змінну lastc
.
( ed.c
має близько шістдесяти глобальних змінних.)
Викликає error()
функцію, яка, мабуть, робить трохи більше, ніж друк ?
, з точки зору користувача.
Іншими словами, це говорить: "Ви насправді не хотіли цього робити, чи не так?"