Ми помітили, що деякі наші автоматичні тести виходять з ладу, коли вони працюють в 00:30, але решту дня працюють добре. Вони не виходять із повідомленням "gimme gimme gimme" у stderr, чого не очікували. Чому ми отримуємо цей вихід?
Ми помітили, що деякі наші автоматичні тести виходять з ладу, коли вони працюють в 00:30, але решту дня працюють добре. Вони не виходять із повідомленням "gimme gimme gimme" у stderr, чого не очікували. Чому ми отримуємо цей вихід?
Відповіді:
Шановний @colmmacuait , я думаю, що якщо ви введете "man" в 0001 годин, він повинен надрукувати "gimme gimme gimme". #abba @marnanel - 3 листопада 2011 року
Е, це була моя вина, я запропонував це. Вибачте.
Досить багато вся історія в комітеті. Людина, що підтримує людину, є моїм добрим другом, і одного дня шість років тому я жартома сказав йому, що якщо ви позовете людину після півночі, вона повинна надрукувати " gimme gimme gimme ", через пісню "Abba" під назвою " Gimme gimme gimme a man" після півночі ":
Ну, він на самому справі поклав його в . Кілька людей розважалися, щоб відкрити його, і ми здебільшого про нього забули до сьогодні.
Я не можу говорити за Кола , очевидно, але я не очікував, що це колись спричинить якісь проблеми: який тип тесту порушиться при аналізі результатів роботи людини без вказаної сторінки? Я думаю, я не повинен дивуватися, що зрештою з'явився, але це зайняло шість років.
(The повідомлення фіксації називає мене Томас, який є моїм законним першим ім'ям , хоча я не використовую його в Інтернеті багато.)
Цю проблему було вирішено з допомогою 84bde8 : Людина, що біжить man -w
, більше не запустить це пасхальне яйце
Це писанка в 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 і, мабуть, і більше, тому це не дуже специфічно для distro. Ви можете підтвердити grep
свій man
двійковий код.
Цей код відповідає за результат , доданий цим комітом :
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! Дай! Дай! (Людина після півночі) .
Розробник man-db Колін Ватсон вирішив, що було достатньо веселощів, і історія не забудеться і повністю видалила писанку .
Дякую Колін!
faketime
доступних платформах ви можете спробувати це, навіть не змінюючи системний час: faketime '00:30:00' man
(Debian 8).
man
, але не man -w
: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… та коментар Коліна до зізнання Марнанела ^ Вансвер .
man -w
друкує поточний шлях пошуку на сторінці вручну, який є предметом, який ви цілком розумно можете використовувати в якості будівельного блоку для чогось іншого, наприклад, якщо те, що ви автоматизували, включало встановлення або тестування сторінок вручну.
Після деякого роздуму я зняв це писанку . Він не піде в майбутньому man-db 2.8.0.
Я радий, що це змусило деяких людей посміхнутися, що, зрештою, було цілі цієї мети, а мої повідомлення в Twitter і так далі сьогодні говорять про те, що більшість людей вважають це кумеднішим, ніж дратівливим. Тим не менш, деякі люди вважають це дратівливим, і шість років здається досить хорошим пробігом для такої речі; це, мабуть, не отримає значно кращого опромінення, ніж це вже несподівано викликає це питання. Час покласти його спати.
man -abba
і коли його звільнять після півночі, він дасть писанку.