
Percebemos que alguns de nossos testes automáticos falham quando são executados às 00h30, mas funcionam bem no resto do dia. Eles falham com a mensagem
gimme gimme gimme
em stderr
, o que não era esperado. Por que estamos obtendo esse resultado?
Responder1
Querido@colmmacuait, acho que se você digitar "man" às 0001 horas, ele deverá imprimir "me dê, me dê".#abba
@marnanel- 3 de novembro de 2011
er, a culpa foi minha, eu sugeri. Desculpe.
Praticamente toda a história está no commit. O mantenedor do homem é um bom amigo meu, e um dia, há seis anos, eu disse a ele, brincando, que se você invocar o homem depois da meia-noite, ele deveria imprimir "Dá-me, dá-me, dá-me", por causa da música do Abba chamada "Me dê, me dê um homem depois da meia-noite":
Bem, ele realmente fezcolocá-lo em. Algumas pessoas se divertiram ao descobri-lo e quase sempre nos esquecemos dele até hoje.
Não posso falar por Col, obviamente, mas eu não esperava que isso causasse problemas: que tipo de teste falharia ao analisar a saída de man sem nenhuma página especificada? Suponho que não deveria ficar surpreso que um deles eventualmente aparecesse, mas demorou seis anos.
(Omensagem de confirmaçãome chama de Thomas, que é meu primeiro nome legal, embora eu não o use muito online.)
Este problema foi corrigido com commit84bde8:Correr com o homem man -w
não acionará mais este ovo de páscoa.
Responder2
Este é um ovo de páscoa em man
. Quando você executa man
sem especificar a página ou com -w
, ele gera "gimme gimme gimme" para stderr, mas apenas às 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
O código de saída é sempre 0.
A saída correta deve ser sempre:
# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1
A string "gimme gimme gimme" pode ser encontrada no RHEL, OpenSUSE, Fedora, Debian e provavelmente mais, então não é realmente específica da distribuição. Você pode verificar grep
seu binário.man
Este código é responsável pela saída, adicionado poreste 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");
Entrei em contato com o suporte RHEL sobre esse problema.
A corda vem de um conhecidoMúsica do ABBA Me dê! Me dê! Me dê! (Um homem depois da meia-noite).
O desenvolvedor do man-db Colin Watson decidiu que já era bastante divertido e a história não seria esquecida eremoveu o ovo de páscoa completamente.
Obrigado Colin!
Responder3
Depois de alguma reflexão, euremovi este ovo de Páscoa. Ele desaparecerá no próximo man-db 2.8.0.
Fico feliz que isso tenha feito algumas pessoas sorrirem, o que afinal era o propósito disso, e minhas notificações no Twitter e assim por diante sugerem que a maioria das pessoas achou que era mais divertido do que irritante. Ainda assim, algumas pessoas acharam isso irritante, e seis anos parece um bom período para esse tipo de coisa; provavelmente não obterá uma exposição significativamente melhor do que já obteve inesperadamente por meio desta pergunta. Hora de colocá-lo na cama.