вторник, 6 апреля 2010 г.

Заверните костыли

Какой же грязный хак обходится без костылей? Правильно -- никакой. Без них эти создания шевелятся из чистой случайности. И хак для mutt из предыдущего поста не исключение.

1. Обнаружилась неприятность с переопределением редактора. Вызов встроенного примитивного редактора (который должен быстро отдать назад управление) мешает вставке подписей к письму (из переменной $signature). Если назначить редактором любую стороннюю софтину, то она получит письмо со вставленной подписью. Встроенному -- кукиш.
Выход -- выставлять abort_unmodified=no и назначать редактором тупую внешнюю обертку, которая ничего не делает с полученным именем файла.

2. Если переменная $sendmail выставляется динамически, в зависимости от отправителя, прийдется поменять send-hook на send2-hook. Ведь запущенный "дочерний" mutt-процесс понятия не имеет о runtime своего родителя. Пилить это прийдется каждому под себя.

3. Грязные хаки в многозадачной среде сбоят, так задумано. Идея отложить письмо и запустить новый процесс, который подхватит отложенное, вполне логична, но есть нюанс. Новый процесс может запуститься раньше, чем письмо будет отложено. Причем mutt хитро откладывает письма, видимо сначала очищая postponed, а потом заново его заполняя. Иначе я не могу объяснить ситуацию, когда у меня валяется пяток отложенных писем, а запущенный "mutt -p" говорит что писем для отправки не найдено.
Тупая задержка запуска дочернего процесса в качестве синхронизации неудобна и ненадежна.

Итог. С хаками жить можно, но трудно. Пока что mutt остается одноконным приложением и его возможности для сложных взаимодействий мало подходят, с чем прийдется смириться.

Комментариев нет: