it-swarm-ru.tech

Почему человек печатает «дай мне дай мне» в 00:30?

Мы заметили, что некоторые из наших автоматических тестов не выполняются, когда они запускаются в 00:30, но работают хорошо в остальное время. Они терпят неудачу с сообщением "дай мне дай мне" в stderr, что не ожидалось. Почему мы получаем этот вывод?

1647
Jaroslav Kucera

Это пасхальное яйцо в man. Когда вы запускаете man без указания страницы или с помощью -w, он выводит "gimme gimme gimme" в stderr, но только в 00:30:

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

Код выхода всегда 0.

Правильный вывод всегда должен быть:

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

Строка "gimme gimme gimme" может быть найдена в RHEL, OpenSUSE, Fedora, Debian и, возможно, в других, поэтому она не является специфической для дистрибутива. Вы можете grep ваш man двоичный файл для проверки.

Этот код отвечает за вывод , добавлено this commit :

src/man.c-1167- if (first_arg == argc) {
src/man.c-1168-   /* 
http://Twitter.com/#!/marnanel/status/132280557190119424 */
src/man.c-1169-   time_t now = time (NULL);
src/man.c-1170-   struct tm *localnow = localtime (&now);
src/man.c-1171-   if (localnow &&
src/man.c-1172-       localnow->tm_hour == 0 && localnow->tm_min == 30)
src/man.c:1173:     fprintf (stderr, "gimme gimme gimme\n");

Я связался со службой поддержки RHEL по этому вопросу.

Строка происходит из хорошо известного песня ABBA Gimme! Gimme! Gimme! (A Man After Midnight) .


Разработчик man-db, Колин Уотсон, решил, что было достаточно веселья, и история не забудется, и полностью удалил пасхальное яйцо .

Спасибо, Колин!

429
Jaroslav Kucera

Уважаемый @ colmmacuait , я думаю, что если вы наберете "man" в 0001, то это должно вывести "gimme gimme gimme". # авва
@ marnanel - 3 ноября 2011 г.

э-э, это была моя вина, я предложил это. Сожалею.

Практически вся история в коммите. Хранитель человека - мой хороший друг, и однажды шесть лет назад я в шутку сказал ему, что если вы вызываете человека после полуночи, это должно вывести " gimme gimme gimme" из-за Песня Аббы называется " Дай мне, дай, дай мне человека после полуночи":

Ну, он сделал это на самом деле поставить этов . Несколько человек были удивлены, обнаружив это, и мы в основном забыли об этом до сегодняшнего дня.

я не могу говорить за Col , очевидно, но я не ожидал, что это когда-либо вызовет какие-либо проблемы: какой тип теста сломается при разборе вывода man без указания страницы? Полагаю, меня не должно удивлять, что кто-то появился в конце концов, но это заняло шесть лет.

( сообщение коммита зовет меня Томас, это мое официальное имя, хотя я не часто его использую в Интернете.)

Эта проблема была исправлена ​​с помощью commit 84bde8 : Запуск man с man -w больше не будет вызывать это пасхальное яйцо.

2166
Marnanel Thurman

После некоторого размышления я удалил это пасхальное яйцо . В следующем man-db 2.8.0 этого не будет.

Я рад, что это заставило некоторых людей улыбнуться, что, в конце концов, и было целью всего этого, и мои уведомления в Твиттере и так далее сегодня предполагают, что большинство людей думали, что это было скорее забавно, чем раздражает. Тем не менее, некоторые люди находят это раздражающим, и шесть лет кажутся довольно удачным ходом для такого рода вещей; Вероятно, он не получит значительно лучшую экспозицию, чем это было неожиданно благодаря этому вопросу. Время укладывать это в постель.

369
Colin Watson