На днях наткнулся на интересную доку: «
Стандарт кодирования GNU» под авторством небезызвестного
Ричарда Столлмана. Несмотря на то, что она датирована мартом 1994 года, но читается весьма легко, многие проблемы до сих пор актуальны, и главное - она на русском! :)
Из того, что задело лично меня:
Не стоит уродовать программу для того, чтобы потакать верификатору lint. Не надо вставлять никаких приведений к void. Ноль без приведения вполне хорош как константа для нулевого указателя.
(
http://linuxshare.ru/docs/devel/standard/standard-10.html)
Актуально, потому что я, поверив этому линту, уже было собирался в некоторых программах начать править и приводить даже printf() к типу void %)) Ладно. Теперь не буду, поверю дядьке Столлману ;)
Updated: Ууупс...
Не следует предполагать, что '.' входит в путь для поиска исполнимых программ. Когда Вам нужно запускать программы, которые являются частью Вашего пакета, во время работы make, необходимо использовать префикс './', если программа строится в ходе работы make, или '$(srcdir)/' если файл является неизменяемой частью исходных текстов. Когда ни один из этих префиксов не указан, выполняется поиск в текущем пути.
Отличие между './' и '$(srcdir)' существенно, когда используется опция --srcdir программы configure.
Я оказывается на это и наступил :-( 8 месяцев назад, когда делал патч для Флакса. Сейчас проверил, попробовав собрать в отдельном каталоге, оказалось, что это правда. Тут патч, который был принят:
http://svn.berlios.de/viewcvs/fluxbox/trunk/data/Makefile.am?rev=4036&r1=3859&r2=4036 Проблема проявляется лишь с файлом keys, остальные генерируются на лету и оказываются в соброчном каталоге. Сейчас патч отправлю. Вот так.