
自動テストの一部は00:30に実行すると失敗するものの、残りの時間は正常に動作することがわかりました。失敗のメッセージは次のようになります。
gimme gimme gimme
でstderr
、予想外の結果になりました。なぜこのような出力になるのでしょうか?
答え1
親愛なるフォロー0001 時に「man」と入力すると、「gimme gimme gimme」と出力されると思います。#アバ
マルナネル- 2011年11月3日
えーと、それは私が提案したせいです。ごめんなさい。
ほぼすべての話はコミットの中にあります。man のメンテナーは私の良き友人で、6 年前のある日、私は冗談で彼に、真夜中過ぎに man を呼び出すと次のように表示されるはずだと言いました。ちょうだいちょうだい「アバの曲『真夜中過ぎに男をください「:」
まあ、彼は実際にそれを置く で少数の人々がそれを発見して面白がっていましたが、私たちは今日までほとんどそれを忘れていました。
私はコルの代わりに話すことはできない当然ですが、これが問題を引き起こすとは思っていませんでした。ページが指定されていない man の出力を解析すると、どのようなテストが失敗するのでしょうか? 最終的に問題が見つかったとしても驚くべきではないと思いますが、6 年かかりました。
(コミットメッセージ私のことをトーマスと呼びます。これは私の正式なファーストネームですが、オンラインではあまり使用しません。
この問題はコミットにより修正されました84bde8:ランニングマンでは、man -w
このイースターエッグは起動しなくなります。
答え2
これは のイースターエッグです。ページを指定せずに、または とともにman
実行すると、00:30 のみに「gimme gimme gimme」が stderr に出力されます。man
-w
# 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
で確認できます。
このコードは出力を担当します、 によって追加このコミット:
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の開発者、コリン・ワトソンは、十分に楽しいし、物語は忘れ去られることはないと判断し、イースターエッグを完全に削除しました。
コリン、ありがとう!
答え3
少し考えてみて、私はこのイースターエッグを削除しました今後の man-db 2.8.0 では削除される予定です。
結局、この質問の目的は笑顔だったのに、何人かの人が笑顔になってくれたのは嬉しいし、今日の私の Twitter 通知などを見ると、ほとんどの人が迷惑というよりは面白いと思っていたようだ。それでも、迷惑だと感じた人もいたし、6 年というのは、そういうこととしてはなかなか良い期間だったと思う。この質問によって予想外にすでに注目を集めているが、これ以上注目されることはおそらくないだろう。そろそろおしまいにしよう。