Difference between revisions of "Изменения в версии 3.5.0"

From EjudgeWiki
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.5.0]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.5.0]]
  
Время выхода: ?? декабря 2015 г.
+
Время выхода: 30 декабря 2015 г.
  
[[Изменения в версии 3.4.2|Предыдущая версия]]
+
[[Изменения в версии 3.4.2|Предыдущая версия]] [[Изменения в версии 3.5.1|Следующая версия]]
  
 
=== Общие исправления ===
 
=== Общие исправления ===
Line 16: Line 16:
 
Улучшена поддержка UTF-8 в выводе ошибок компилятора. Недопустимые UTF-8 последовательности заменяются на '?'.
 
Улучшена поддержка UTF-8 в выводе ошибок компилятора. Недопустимые UTF-8 последовательности заменяются на '?'.
  
[[ej-contests]]
+
=== [[ej-contests]] ===
  
 
Просмотр исходного кода реализован в виде отдельной страницы, а не как скачивание файла, как раньше.
 
Просмотр исходного кода реализован в виде отдельной страницы, а не как скачивание файла, как раньше.
Line 27: Line 27:
 
отображаются на странице сдачи задачи в интерфейсе участника турнира.
 
отображаются на странице сдачи задачи в интерфейсе участника турнира.
  
Добавлен специальный интерфейс для пакетного управления турниром. Сервер получает зашифрованную команду, которая
+
Добавлен специальный интерфейс для [[пакетное управление|пакетного управления турниром]]. Сервер получает зашифрованную команду, которая
 
позволяет зарегистрировать нового участника в турнир, или войти под указанным пользователем в турнир.
 
позволяет зарегистрировать нового участника в турнир, или войти под указанным пользователем в турнир.
 
Команда пересылается в зашифрованном виде, чтобы сделать возможным использование этого интерфейса в URL.
 
Команда пересылается в зашифрованном виде, чтобы сделать возможным использование этого интерфейса в URL.
Line 33: Line 33:
 
Исправления нескольких ошибок работы с памятью, которые приводили к падению программы.
 
Исправления нескольких ошибок работы с памятью, которые приводили к падению программы.
  
Добавлена глобальная конфигурационная переменная start_on_first_login. Эта конфигурационная переменная действует
+
Добавлена глобальная конфигурационная переменная <tt>[[serve.cfg:global:start_on_first_login|start_on_first_login]]</tt>.  
для виртуальных турниров. Если данная опция включена, то виртуальный турнир автоматически начинается при первом входе
+
Эта конфигурационная переменная действует для виртуальных турниров. Если данная опция включена,
участника в турнир.
+
то виртуальный турнир автоматически начинается при первом входе участника в турнир.
  
Активный вариант задачи передается в форматные подстановки при получении имени заголовочного и хвостового файла (source_header,
+
Активный [[вариантные задачи|вариант задачи]] передается в форматные подстановки при получении имени заголовочного и хвостового файла
source_footer).
+
(см. <tt>[[serve.cfg:problem:source_header|source_header]]</tt>, <tt>[[serve.cfg:problem:source_footer|source_footer]]</tt>).
  
Добавлены две конфигурационных переменных min_score_1 и min_score_2 секции описания задачи. Эти конфигурационные переменные позволяют задать
+
Добавлены две конфигурационных переменных <tt>[[serve.cfg:problem:min_score_1|min_score_1]]</tt> и <tt>[[serve.cfg:problem:min_score_2|min_score_2]]</tt>
"неснижаемый остаток" баллов при побальном оценивании задачи.
+
секции описания задачи. Эти конфигурационные переменные позволяют задать "неснижаемый остаток" баллов при побальном оценивании задачи.
  
В конфигурационных файлах добавлена директива @include для включения содержимого указанного файла. Конфигурационные файлы с директивой
+
В конфигурационных файлах добавлена директива <tt>[[serve.cfg:@include|@include]]</tt> для включения содержимого указанного файла. Конфигурационные файлы с директивой @include не могут быть отредактированы с помощью веб-интерфейса.
@include не могут быть отредактированы с помощью веб-интерфейса.
 
  
Добавлена поддержка глобальной конфигурационной переменной dates_config_file. Переменная позволяет задать имя дополнительного
+
Добавлена поддержка глобальной конфигурационной переменной <tt>[[serve.cfg:global:dates_config_file|dates_config_file]]</tt>. Переменная позволяет задать имя дополнительного конфигурационного файла, который содержит ограничения по датам для задач. Это позволяет разделить общие свойства задач и ограничения по времени сдачи задач. Кроме того, общие свойства задач могут быть вынесены в отдельные файлы и добавлены в основной конфигурационный файл с помощью @include.
конфигурационного файла, который содержит ограничения по датам для задач. Это позволяет разделить общие свойства задач и ограничения
 
по времени сдачи задач. Кроме того, общие свойства задач могут быть вынесены в отдельные файлы и добавлены в основной
 
конфигурационный файл с помощью @include.
 
  
Поддерживается конфигурационная переменная 'wtl_is_cf' секции описания задачи. Если эта переменная установлена, то ошибка
+
Поддерживается конфигурационная переменная <tt>[[serve.cfg:problem:wtl_is_cf|wtl_is_cf]]</tt> секции описания задачи. Если эта переменная установлена, то ошибка
Wall Time Limit Exceeded при тестировании файлов будет расцениваться как ситуация Check Failed.
+
[[WT|Wall Time Limit Exceeded]] при тестировании файлов будет расцениваться как ситуация [[CF|Check Failed]].
  
При отображении очереди задач на тестирование поддерживается несколько очередей тестирования.
+
При отображении очереди задач на тестирование отображаются все очереди тестирования, используемые в данном турнире.
  
Изменена обработка приоритетов задач тестирования. Для каждого уровня приоритетов поддерживается отдельная очередь посылок.
+
Изменена обработка приоритетов задач тестирования. Для каждого уровня приоритетов поддерживается отдельная очередь посылок. При выборке очередного решения сначала случайным образом выбирается очередь, из которой будет выбрано первое решение. Вероятность выбора очереди зависит от разности приоритетов. Если разность приоритетов равна 1, то вероятность выбора из менее приоритетной очереди примерно в два раза меньше, чем из более приоритетной очереди. Приоритет посылок при перетестировании устанавливается равным 3 (не 10, как ранее).
При выборке очередного решения сначала случайным образом выбирается очередь, из которой будет выбрано первое решение.
 
Вероятность выбора очереди зависит от разности приоритетов. Если разность приоритетов равна 1, то вероятность выбора
 
из менее приоритетной очереди примерно в два раза меньше, чем из более приоритетной очереди. Приоритет
 
посылок при перетестировании устанавливается равным 3 (не 10, как ранее).
 
  
На странице очереди тестирования отображаются тестирующие компьютеры и состояние тестирования на них.
+
На странице очереди тестирования отображаются тестирующие компьютеры и состояние тестирования на них. Для тестирующих компьютеров доступны следующие действия: удалить устаревший файл состояния, остановить программу [[ej-super-run]] на данном компьютере, выключить данный компьютер. Для поддержки последней опции ej-super-run должен быть запущен со специальными опциями командной строки.
Для тестирующих компьютеров доступны следующие действия: удалить устаревший файл состояния,
 
остановить программу ej-super-run на данном компьютере, выключить данный компьютер.
 
Для поддержки последней опции ej-super-run должен быть запущен со специальными опциями командной строки.
 
  
Добавлен новый статус завершения SY (Synchronization Error). Он предназначен для более информативной диагностики задач на взаимодействие
+
Добавлен новый статус завершения [[SY]] ([[Synchronization Error]]). Он предназначен для более информативной диагностики задач на взаимодействие процессов.
процессов.
 
  
При выборе посылок для скачивания добавлены новые возможности по именованию файлов:  
+
При выборе посылок для скачивания добавлены новые возможности по именованию файлов: добавление номера турнира к имени файла; добавление времени сдачи посылки к имени файла; скачивать решения со статусом OK и PR; скачивать решения со статусом OK, PR, IG, RJ
добавление номера турнира к имени файла;
 
добавление времени сдачи посылки к имени файла;
 
скачивать решения со статусом OK и PR;
 
скачивать решения со статусом OK, PR, IG, RJ
 
  
 
При скачивании посылок игнорируются скрытые посылки.
 
При скачивании посылок игнорируются скрытые посылки.
Line 80: Line 64:
 
В архиве, создаваемом при скачивании посылок, пробелы заменяются на подчеркивания.
 
В архиве, создаваемом при скачивании посылок, пробелы заменяются на подчеркивания.
  
При скачивании посылок поддерживается опция использовать внешнее имя задачи (extid) вместо имени задачи (short_name) при создании
+
При скачивании посылок поддерживается опция использовать внешнее имя задачи (<tt>[[serve.cfg:problem:extid|extid]]</tt>) вместо имени задачи (short_name) при создании каталогов задачи. Например, если несколько задач фактически являются одной и той же задачей, то с помощью указания параметра extid в конфигурации второй задачи, можно задать, что решения второй задачи в скачиваемом архиве будут размещаться в том же каталоге, что и решения первой задачи.
каталогов задачи. Например, если несколько задач фактически являются одной и той же задачей, то с помощью указания параметра extid
 
в конфигурации второй задачи, можно задать, что решения второй задачи в скачиваемом архиве будут размещаться в том же каталоге,
 
что и решения первой задачи.
 
  
Добавлена новая глобальная конфигурационная переменная enable_virtual_restart. Если данная опция установлена, участник виртуального
+
Добавлена новая глобальная конфигурационная переменная <tt>[[serve.cfg:global:enable_virtual_restart|enable_virtual_restart]]</tt>. Если данная опция установлена, участник виртуального турнира может удалить свое прохождение и начать турнир заново.
турнира может удалить свое прохождение и начать турнир заново.
 
  
В условии задачи в формате XML поддерживается элемент <review_notes>. Текст внутри этого элемента отображается при просмотре
+
В условии задачи в формате XML поддерживается элемент <review_notes>. Текст внутри этого элемента отображается при просмотре исходного кода участников. В этом элементе могут храниться дополнительные критерии проверки для проверяющих данную задачу.
исходного кода участников. В этом элементе могут храниться дополнительные критерии проверки для проверяющих данную задачу.
 
  
Картинки и прочие материалы, вставляемые в XML-условие, должны находиться в каталоге attachments каталога задачи. Это сделано, чтобы закрыть
+
Картинки и прочие материалы, вставляемые в XML-условие, должны находиться в каталоге <tt>attachments</tt> каталога задачи. Это сделано, чтобы закрыть возможность скачивать другие файлы, находящиеся в каталоге задачи. Исправлены потенциальные path traversal уязвимости.
возможность скачивать другие файлы, находящиеся в каталоге задачи. Исправлены потенциальные path traversal уязвимости.
 
  
Исправлено некорректное отображение страниц, когда длина URL просмотра протокола тестирования или просмотра ответа пользователя
+
Исправлено некорректное отображение страниц, когда длина URL просмотра протокола тестирования или просмотра ответа пользователя становилась слишком большой.
становилась слишком большой.
 
  
 
Исправлено отображение суммарной таблицы прохождения для output-only задач в режиме турнира olympiad.
 
Исправлено отображение суммарной таблицы прохождения для output-only задач в режиме турнира olympiad.
  
В таблице результатов в ячейках, соответствующих посылкам в статусе Pending Review отображается балл, который посылка получит,
+
В таблице результатов в ячейках, соответствующих посылкам в статусе Pending Review отображается балл, который посылка получит, когда получит статус OK.
когда получит статус OK.
 
  
[[ej-super-server]]
+
=== [[ej-super-server]] ===
  
При создании новых пользователей из CSV-файла реализована опция 'register_existing', при которой,
+
При создании новых пользователей из CSV-файла реализована опция 'register_existing', при которой, если пользователь уже существует в базе, он просто регистрируется на турнир, а операция создания пользователей не завершается с ошибкой.
если пользователь уже существует в базе, он просто регистрируется на турнир, а операция
 
создания пользователей не завершается с ошибкой.
 
  
[[ej-super-run]]
+
=== [[ej-super-run]] ===
  
При старте программы не проверяется наличие системных пользователей, указанных в файле ejudge.xml,
+
При старте программы не проверяется наличие системных пользователей, указанных в файле ejudge.xml, в системе.
в системе.
 
  
При загрузке .inf-файлов поддерживаются подстановки. (описать подробнее)
+
При загрузке .inf-файлов поддерживаются [[подстановки в .inf-файле|подстановки]].
  
 
Улучшена поддержка mono-языков.
 
Улучшена поддержка mono-языков.
  
Добавлены несколько новых опций командной строки, назначение которых - задать режимы работы для облачного окружения
+
Добавлены несколько новых опций командной строки, назначение которых - задать режимы работы для облачного окружения (например, Amazon EC2).
(например, Amazon EC2).
 
  
Поддерживается регулярное сохранения состояния программы. В частности, сохраняется информация о тестировании, идущем
+
Поддерживается регулярное сохранения состояния программы. В частности, сохраняется информация о тестировании, идущем в текущий момент.
в текущий момент.
 
  
Поддерживаются переменные окружения AWS_INSTANCE_ID, AWS_LOCAL_HOSTNAME, AWS_LOCAL_IP, AWS_PUBLIC_HOSTNAME,
+
Поддерживаются переменные окружения AWS_INSTANCE_ID, AWS_LOCAL_HOSTNAME, AWS_LOCAL_IP, AWS_PUBLIC_HOSTNAME, AWS_PUBLIC_IP, EJ_SUPER_RUN_ID значения которых копируются в файл состояния.
AWS_PUBLIC_IP, EJ_SUPER_RUN_ID значения которых копируются в файл состояния.
 
  
Директива start_cmd, заданная для задачи, не конфликтует с директивой start_cmd тестера. В случае, если заданы обе,
+
Директива <tt>[[serve.cfg:problem:start_cmd|start_cmd]]</tt>, заданная для задачи, не конфликтует с директивой start_cmd тестера. В случае, если заданы обе, реальная командная строка для запуска программы на тестирование имеет вид:
реальная командная строка для запуска программы на тестирование имеет вид:
 
start_cmd_prob start_cmd_tst PROG
 
таким образом, директива start_cmd, заданная в описании задачи, будет корректно работать с любыми языками программирования:
 
java, valgrind, mono, которые сами требуют задания start_cmd.
 
  
При тестировании в небезопасном режиме не создается выходной файл, указанный в настройках задачи. Тестируемая программа
+
start_cmd_prob start_cmd_tst PROG
должна сама создавать выходной файл.
+
 
 +
таким образом, директива start_cmd, заданная в описании задачи, будет корректно работать с любыми языками программирования: java, valgrind, mono, которые сами требуют задания start_cmd.
 +
 
 +
При тестировании в небезопасном режиме не создается выходной файл, указанный в настройках задачи. Тестируемая программа должна сама создавать выходной файл.
  
 
Улучшено автоопределение локальных IP-адресов и имени хоста.
 
Улучшено автоопределение локальных IP-адресов и имени хоста.
  
Реализован новый экспериментальный режим запуска программ на тестирование. В этом режиме тестируемая программа запускается
+
Реализован новый [[тестирование под отдельным пользователем|экспериментальный режим запуска программ на тестирование]]. В этом режиме тестируемая программа запускается под пользователем 'ejexec', а не под тем же пользователем, под которым работает сама система (обычно ejudge). Для поддержки этого режима требуется проинсталлировать несколько suid-root исполняемых файлов в каталог исполняемых файлов ejudge.
под пользователем 'ejexec', а не под тем же пользователем, под которым работает сама система (обычно ejudge).
 
Для поддержки этого режима требуется проинсталлировать несколько suid-root исполняемых файлов в каталог исполняемых файлов ejudge.
 
  
 
Язык mono-C# использует компилятор 'mcs' вместо 'gmcs', который в новых версиях mono отсутствует.
 
Язык mono-C# использует компилятор 'mcs' вместо 'gmcs', который в новых версиях mono отсутствует.
Line 145: Line 112:
 
Поддерживается прозрачное размещение скриптов компиляции и выполнения в каталоге, отличном от стандартного.
 
Поддерживается прозрачное размещение скриптов компиляции и выполнения в каталоге, отличном от стандартного.
  
[[ejudge-edit-users]]
+
=== [[ejudge-edit-users]] ===
  
 
При редактировании строки комбинация Ctrl-B позволяет переставить два слова местами.
 
При редактировании строки комбинация Ctrl-B позволяет переставить два слова местами.
  
[[style_archive]]
+
=== [[style_archive]] ===
  
 
Поддерживаются имена пользователей и групп, содержащие пробелы.
 
Поддерживаются имена пользователей и групп, содержащие пробелы.
  
[[style_c]]
+
=== [[style_c]] ===
  
 
Программа проверки стиля программ на Си корректно обрабатывает директивы #line.
 
Программа проверки стиля программ на Си корректно обрабатывает директивы #line.

Latest revision as of 10:06, 25 January 2016

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.5.0

Время выхода: 30 декабря 2015 г.

Предыдущая версия Следующая версия

Общие исправления

Исправлены предупреждения, возникавшии при компиляции системы компилятором gcc-5.3.

ej-compile

Добавлена специальная поддержка для компилятора javac версии 7. По умолчанию поддерживается javac текущей версии (8), но если необходимо, может быть проинсталлирован jdk7.

Улучшена поддержка UTF-8 в выводе ошибок компилятора. Недопустимые UTF-8 последовательности заменяются на '?'.

ej-contests

Просмотр исходного кода реализован в виде отдельной страницы, а не как скачивание файла, как раньше. Исходный код подсвечивается в соответствии с языком программирования (для некоторых языков).

Улучшена диагностика ошибочных ситуаций при сдаче решения на проверку привилегированным пользователем (например, недопустимый язык).

Свойства задачи, такие как лимиты на память и время, балл за задачу, время открытия и закрытия сдачи задачи отображаются на странице сдачи задачи в интерфейсе участника турнира.

Добавлен специальный интерфейс для пакетного управления турниром. Сервер получает зашифрованную команду, которая позволяет зарегистрировать нового участника в турнир, или войти под указанным пользователем в турнир. Команда пересылается в зашифрованном виде, чтобы сделать возможным использование этого интерфейса в URL.

Исправления нескольких ошибок работы с памятью, которые приводили к падению программы.

Добавлена глобальная конфигурационная переменная start_on_first_login. Эта конфигурационная переменная действует для виртуальных турниров. Если данная опция включена, то виртуальный турнир автоматически начинается при первом входе участника в турнир.

Активный вариант задачи передается в форматные подстановки при получении имени заголовочного и хвостового файла (см. source_header, source_footer).

Добавлены две конфигурационных переменных min_score_1 и min_score_2 секции описания задачи. Эти конфигурационные переменные позволяют задать "неснижаемый остаток" баллов при побальном оценивании задачи.

В конфигурационных файлах добавлена директива @include для включения содержимого указанного файла. Конфигурационные файлы с директивой @include не могут быть отредактированы с помощью веб-интерфейса.

Добавлена поддержка глобальной конфигурационной переменной dates_config_file. Переменная позволяет задать имя дополнительного конфигурационного файла, который содержит ограничения по датам для задач. Это позволяет разделить общие свойства задач и ограничения по времени сдачи задач. Кроме того, общие свойства задач могут быть вынесены в отдельные файлы и добавлены в основной конфигурационный файл с помощью @include.

Поддерживается конфигурационная переменная wtl_is_cf секции описания задачи. Если эта переменная установлена, то ошибка Wall Time Limit Exceeded при тестировании файлов будет расцениваться как ситуация Check Failed.

При отображении очереди задач на тестирование отображаются все очереди тестирования, используемые в данном турнире.

Изменена обработка приоритетов задач тестирования. Для каждого уровня приоритетов поддерживается отдельная очередь посылок. При выборке очередного решения сначала случайным образом выбирается очередь, из которой будет выбрано первое решение. Вероятность выбора очереди зависит от разности приоритетов. Если разность приоритетов равна 1, то вероятность выбора из менее приоритетной очереди примерно в два раза меньше, чем из более приоритетной очереди. Приоритет посылок при перетестировании устанавливается равным 3 (не 10, как ранее).

На странице очереди тестирования отображаются тестирующие компьютеры и состояние тестирования на них. Для тестирующих компьютеров доступны следующие действия: удалить устаревший файл состояния, остановить программу ej-super-run на данном компьютере, выключить данный компьютер. Для поддержки последней опции ej-super-run должен быть запущен со специальными опциями командной строки.

Добавлен новый статус завершения SY (Synchronization Error). Он предназначен для более информативной диагностики задач на взаимодействие процессов.

При выборе посылок для скачивания добавлены новые возможности по именованию файлов: добавление номера турнира к имени файла; добавление времени сдачи посылки к имени файла; скачивать решения со статусом OK и PR; скачивать решения со статусом OK, PR, IG, RJ

При скачивании посылок игнорируются скрытые посылки.

В архиве, создаваемом при скачивании посылок, пробелы заменяются на подчеркивания.

При скачивании посылок поддерживается опция использовать внешнее имя задачи (extid) вместо имени задачи (short_name) при создании каталогов задачи. Например, если несколько задач фактически являются одной и той же задачей, то с помощью указания параметра extid в конфигурации второй задачи, можно задать, что решения второй задачи в скачиваемом архиве будут размещаться в том же каталоге, что и решения первой задачи.

Добавлена новая глобальная конфигурационная переменная enable_virtual_restart. Если данная опция установлена, участник виртуального турнира может удалить свое прохождение и начать турнир заново.

В условии задачи в формате XML поддерживается элемент <review_notes>. Текст внутри этого элемента отображается при просмотре исходного кода участников. В этом элементе могут храниться дополнительные критерии проверки для проверяющих данную задачу.

Картинки и прочие материалы, вставляемые в XML-условие, должны находиться в каталоге attachments каталога задачи. Это сделано, чтобы закрыть возможность скачивать другие файлы, находящиеся в каталоге задачи. Исправлены потенциальные path traversal уязвимости.

Исправлено некорректное отображение страниц, когда длина URL просмотра протокола тестирования или просмотра ответа пользователя становилась слишком большой.

Исправлено отображение суммарной таблицы прохождения для output-only задач в режиме турнира olympiad.

В таблице результатов в ячейках, соответствующих посылкам в статусе Pending Review отображается балл, который посылка получит, когда получит статус OK.

ej-super-server

При создании новых пользователей из CSV-файла реализована опция 'register_existing', при которой, если пользователь уже существует в базе, он просто регистрируется на турнир, а операция создания пользователей не завершается с ошибкой.

ej-super-run

При старте программы не проверяется наличие системных пользователей, указанных в файле ejudge.xml, в системе.

При загрузке .inf-файлов поддерживаются подстановки.

Улучшена поддержка mono-языков.

Добавлены несколько новых опций командной строки, назначение которых - задать режимы работы для облачного окружения (например, Amazon EC2).

Поддерживается регулярное сохранения состояния программы. В частности, сохраняется информация о тестировании, идущем в текущий момент.

Поддерживаются переменные окружения AWS_INSTANCE_ID, AWS_LOCAL_HOSTNAME, AWS_LOCAL_IP, AWS_PUBLIC_HOSTNAME, AWS_PUBLIC_IP, EJ_SUPER_RUN_ID значения которых копируются в файл состояния.

Директива start_cmd, заданная для задачи, не конфликтует с директивой start_cmd тестера. В случае, если заданы обе, реальная командная строка для запуска программы на тестирование имеет вид:

start_cmd_prob start_cmd_tst PROG

таким образом, директива start_cmd, заданная в описании задачи, будет корректно работать с любыми языками программирования: java, valgrind, mono, которые сами требуют задания start_cmd.

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

Улучшено автоопределение локальных IP-адресов и имени хоста.

Реализован новый экспериментальный режим запуска программ на тестирование. В этом режиме тестируемая программа запускается под пользователем 'ejexec', а не под тем же пользователем, под которым работает сама система (обычно ejudge). Для поддержки этого режима требуется проинсталлировать несколько suid-root исполняемых файлов в каталог исполняемых файлов ejudge.

Язык mono-C# использует компилятор 'mcs' вместо 'gmcs', который в новых версиях mono отсутствует.

Поддерживается прозрачное размещение скриптов компиляции и выполнения в каталоге, отличном от стандартного.

ejudge-edit-users

При редактировании строки комбинация Ctrl-B позволяет переставить два слова местами.

style_archive

Поддерживаются имена пользователей и групп, содержащие пробелы.

style_c

Программа проверки стиля программ на Си корректно обрабатывает директивы #line.