Версия 2.1.44 (20051207) ======================== В данной версии исправлены незначительные ошибки предыдущих версий, а также внесены непринципиальные улучшения. libchecker ---------- Проверяющая программа теперь может не устанавливать макрос NEED_INFO в требуемое значение. Если этот макрос не установлен, его значение полагается равным 0. Библиотека может использоватся с проверяющими программами, которые, на самом деле, её не используют. То есть командная строка вида gcc checker.c -o checker -lchecker позволяет получить работоспособный чекер, если checker.c является обычной программой на Си, а не программой, написанной специально для libchecker. В библиотеку добавлена новая функция `fatal_read': void fatal_read(int streamno, char const *format, ...); Эта функция печатает сообщение, переданное в качестве аргумента, а затем завершает работу либо с кодом ошибки "Check failed", если streamno равен 0 или 2, либо с кодом ошибки "Presentation error", если streamno равен 1. Эта функция может использоваться в функциях, которые читают входные данные сложной структуры для сообщения об ошибке во входных данных. serve ----- Если в протоколе тестирования участника астрономическое время оказывается меньше процессорного (такое может быть, так как процессорное время округляется вверх до значения, кратного периоду системного таймера), то процессорное время показывается и как астрономическое. Поддерживается новая команда `SRV_CMD_SUBMIT_RUN_2', в которой задача и язык программирования задаются не своими идентификаторами, а своими короткими именами (short_name). Эта команда полезна в случае, когда идентификаторы задачи и языка программирования неизвестны. serve, team ----------- Если файл, переданный в качестве исходного текста посылки, содержит нулевой байт (то есть вместо исходного текста программ был послан, например, исполняемый файл), и указанный язык программирования не разрешает посылку бинарных данных, выводится сообщение о неправильном формате посылаемых данных. В предыдущих версиях сервер просто закрывал соединение, а клиент печатал "Unexpected EOF from server". serve-cmd --------- Все команды поддерживают следующие опции: --ip IP Позволяет задать IP-адрес, который будет передан на сервер. По умолчанию этот адрес равен 127.0.0.1. --ssl Позволяет установить флаг защищенного соединения, который будет передан на сервер. По умолчанию этот флаг и так установлен. --no-ssl Позволяет сбросить флаг защищенного соединения, который будет передан на сервер. По умолчанию флаг защищенного соединения установлен. --session Указывает, что параметр, задающий имя файла, в котором находится идентификатор сессии, теперь непосредственно задаёт идентификатор сессии, то есть вместо имени файла задаётся 64-битное число в 16-ричном виде. В случае команд `login' или `team-login' эта опция задаёт, что идентификатор сессии будет напечатан на стандартный поток вывода. Опции могут указываться в любом месте командной строки после команды. Например, serve-cmd 1 login --ip 192.168.0.1 --no-ssl session user password Поддерживаются новые команды `team-login', `team-logout', `team-submit-run'. Все опции, описанные выше, применимы и к этим командам, поэтому далее они явно описываться не будут. serve-cmd CONTEST-ID team-login SESSION-FILE USER PASSWORD Вход непривилегированного пользователя, аналогичный входу с помощью CGI-программы `team'. Указанный пользователь должен иметь право участия в указанном турнире (то есть быть зарегистрированным, не быть заблокированным и т. д.). В результате генерируется новый идентификатор сессии, который должен использоваться при дальнейших операциях от имени этого пользователя. Идентификатор сессии записывается в файл SESSION-FILE или печатается на стандартный поток вывода, если указана опция --session. serve-cmd CONTEST-ID team-logout SESSION-FILE Завершение работы непривилегированного пользователя. Идентификатор сессии уничтожается. serve-cmd CONTEST-ID team-submit-run SESSION-FILE PROBLEM LANGUAGE [SRC-FILE] Посылка решения непривилегированным пользователем. Действуют все ограничения, накладываемые на посылку решений, как и в CGI-программе `team'. PROBLEM - это короткое имя задачи, LANGUAGE - это короткое имя языка программирования, SRC-FILE - это файл с исходным текстом решения. Имя файла может быть опущено или задано как `-', тогда отсылаемый текст будет прочитан со стандартного потока ввода. В случае успешной отсылки, номер посылки печатается на стандартный поток вывода. userlist-server --------------- Поддерживается новая команда `ULS_FIX_PASSWORD' для коррекции паролей. edit-userlist ------------- В группу команд модификации флагов пользователя `f' добавлена команда "Fix passwords", которая корректирует пароль участника в соответствии с новыми правилами проверки пароля: если турнирный пароль (team_password) установлен, то он копируется в регистрационный пароль (register_password). Эта команда может быть применена ко множеству выделенных участников некоторого турнира. С помощью подкоманды "Clear field" может быть очищен турнирный пароль одного участника или выбранной группы участников. super-serve ----------- Поддерживается автоматическая компиляция проверяющих программ, написанных на C++ (спасибо Artem Melentev).