我们注意到,我们的一些自动测试在 00:30 运行时会失败,但在一天的其余时间运行良好。他们失败的消息
gimme gimme gimme
Run Code Online (Sandbox Code Playgroud)
in stderr
,这是意料之中的。为什么我们得到这个输出?
小智 2338
亲爱的@colmmacuait,我认为如果你在 0001 小时输入“man”,它应该打印“gimme gimme gimme”。#abba @marnanel - 2011 年 11 月 3 日
呃,那是我的错,我建议的。对不起。
几乎整个故事都在提交中。man 的维护者是我的好朋友,六年前的一天,我开玩笑地对他说,如果你在午夜之后调用 man 应该打印“ gimme gimme gimme ”,因为阿爸的歌叫“ Gimme gimme gimme gimme a man”午夜后“:
嗯,他确实把它放进去 了。一些人很高兴地发现它,直到今天我们大多忘记了它。
显然,我不能代表 Col 发言,但我没想到这会导致任何问题:在解析没有指定页面的 man 输出时,什么样的测试会中断?我想我不应该对最终出现一个人感到惊讶,但它确实花了六年时间。
(提交消息称我为 Thomas,这是我的合法名字,虽然我不太在网上使用它。)
此问题已通过提交84bde8 修复: Running man withman -w
将不再触发这个复活节彩蛋。
Jar*_*era 460
这是一个复活节彩蛋man
。当您在man
不指定页面或 with 的情况下运行时-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
Run Code Online (Sandbox Code Playgroud)
退出代码始终为 0。
正确的输出应该总是:
# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1
Run Code Online (Sandbox Code Playgroud)
字符串“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");
Run Code Online (Sandbox Code Playgroud)
我已经就这个问题联系了 RHEL 支持。
琴弦来自著名的ABBA 歌曲 Gimme!给我!给我!(午夜过后的男人)。
man-db 的开发者 Colin Watson 认为有足够的乐趣并且故事不会被遗忘并完全删除了复活节彩蛋。
谢谢科林!
Col*_*son 416
经过一番思考,我已经删除了这个复活节彩蛋。它会在即将到来的 man-db 2.8.0 中消失。
我很高兴它让一些人微笑,毕竟这就是它的全部目的,我今天的 Twitter 通知等等表明,大多数人认为这更有趣而不是烦人。尽管如此,有些人确实觉得这很烦人,六年似乎对这种事情来说是一个不错的选择。通过这个问题,它可能不会获得比它已经出乎意料地更好的曝光率。是时候把它放在床上了。
归档时间: |
|
查看次数: |
399370 次 |
最近记录: |