mkstr -- создать файл сообщений об ошибках, манипулируя исходным текстом на C

Версия для печатиОтправить другуPDF version
MKSTR(1)              Справочник основных команд FreeBSD              MKSTR(1)

НАЗВАНИЕ
     mkstr -- создать файл сообщений об ошибках, манипулируя исходным текстом
     на C
СИНТАКСИС
     mkstr [-] файл_сообщений префикс файл ...

ОПИСАНИЕ
     Утилита mkstr создаёт файл, содержащий сообщения об ошибках, извлечённые
     из исходного текста на C, и изменяет исходный текст таким образом, чтобы
     использовался созданный файл сообщений.  Целью создания mkstr было умень-
     шение размера больших программ и снижение свопинга (см. ПРОБЛЕМЫ ниже).
     Утилита mkstr обрабатывает каждый из заданных файлов, помещая модифициро-
     ванную версию исходного текста в файл, имя которого состоит из заданного
     префикса и исходного имени.  Типичный пример использования mkstr:

           mkstr pistrings xx *.c
     В результате выполнения этой команды все сообщения об ошибках из файлов с
     исходным текстом на C в текущем каталоге будут помещены в файл pistrings,
     а изменённые копии исходных файлов будут сохранены в файлы с именами,
     начинающиеся с ``xx''.

     Опции:
     -       Сообщения об ошибках помещаются в конец указанного файла сообще-
             ний для перекомпиляции части большой программы, обработанной
             mkstr.

     Утилита mkstr находит сообщения об ошибках в исходном тексте по строке
     `error("' во входном потоке.  Каждый раз, когда она встречается, C
     строка, начинающаяся с `"', сохраняется в файле сообщений с добавлением
     нулевого символа и символа перевода строки.  Изменённый исходный текст
     использует указатели lseek(2) для извлечения строки из файла сообщений.
           char efilname = "/usr/lib/pi_strings";
           int efil = -1;

           error(a1, a2, a3, a4)
           {
                   char buf[256];
                   if (efil < 0) {
                           efil = open(efilname, 0);
                           if (efil < 0)
                                   err(1, "%s", efilname);
                   }
                   if (lseek(efil, (off_t)a1, SEEK_SET) < 0 ||
                       read(efil, buf, 256) <= 0)
                           err(1, "%s", efilname);
                   printf(buf, a2, a3, a4);
           }

СМОТРИ ТАКЖЕ
     gencat(1), xstr(1), lseek(2)
ИСТОРИЯ
     Утилита mkstr появилась в 3.0BSD.

ПРОБЛЕМЫ
     Утилита mkstr была предназначена для ограниченной архитектуры семейства
     PDP 11.  На самом деле, очень мало программ используют её.  Экономия
     памяти несущественна на современных компьютерах.
FreeBSD 6.2                      1 ноября 2002                     FreeBSD 6.2
Голосов пока нет

Вставай, Україно!

Литература