Требуется ли совместимая с POSIX реализация для поддержки локалей, отличных от стандартных?

Я хотел бы реализовать минимальную POSIX-совместимую утилиту make .

Однако в спецификации упоминается, что на реализацию должны влиять следующие переменные среды: LANG , LC_ALL , LC_TYPES , LC_CTYPE и LC_MESSAGES .

Но страница, описывающая переменные среды, говорит:

Если значение локали не распознается реализацией, поведение не определено.

Может ли POSIX-совместимая утилита make принимать только файлы Makefile, состоящие из символов, указанных в переносимом наборе символов, закодированном в ASCII?

One Solution collect form web for “Требуется ли совместимая с POSIX реализация для поддержки локалей, отличных от стандартных?”

AFAIK, единственная сертифицированная POSIX программа make которая активно управляет многобайтовыми символами при чтении Makefiles – это SunPro Make , см. SunPro Make

GNU make управляет только локалями для сообщений и не соответствует POSIX (он неправильно обрабатывает пробелы и экранирует обратную косую черту).

smake управляет только smake для сообщений, но в остальном он очень близок к POSIX.

К счастью, соответствующая classификация символов для Make-файлов зависит только от 7-битного ASCII, поэтому больше делать не нужно.

Однако я не уверен, что вам известно о необходимых усилиях по реализации программы make совместимой с POSIX. smake – это 10000 строк кода (это минимум, который может занять программа), SunPro Make (часть с открытым исходным кодом) 33000 строк кода, но есть параллельное выполнение и часть распределенного кода make, который не используется в версии OSS.

Кстати, smake началась в 1980 году, SunPro Make началась в 1986 году, а GNU make началась в 1988 году. Таким образом, у этих программ было достаточно времени, чтобы перейти к текущему состоянию. Будьте готовы к тому, что для первой минимальной рабочей программы требуется как минимум 2-3 месяца работы на полную ставку.

Interesting Posts

Как узнать, сколько бит файла имеет одна команда?

Обнаружение состояния power_supply для другого устройства в правиле udev

Откройте статический IP-адрес подключенного Ethernet-кабеля

используя цикл «for», непрерывно читает строку строки за строкой, рассматривая каждую строку как входной

Как предотвратить ответ на запросы сканирования arp извне (кроме маршрутизатора) в ubuntu?

Извлечение данных в linux / unix

неожиданное перенаправление Apache

Повторно оценивайте выражение запроса каждый раз, когда приглашение отображается в zsh

Как проверить, нет ли у группы пользователей и удалить их?

Печать полей из файла только в том случае, если строка начинается с определенного слова

libstdc ++. so.6: open failed: нет такого файла или каталога

Укажите данные раздела в sfdisk и разделите

Доступ к физическому диску Ext3 в системе Windows для дефрагментации?

Добавление столбца значений в файле с разделителями табуляции

Передавать значения переменных среды в программу?

Linux и Unix - лучшая ОС в мире.