Por que o homem imprime "me dê, me dê" às 00:30?

Por que o homem imprime "me dê, me dê" às 00:30?

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 -wnão acionará mais este ovo de páscoa.

Responder2

Este é um ovo de páscoa em man. Quando você executa mansem 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 grepseu 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.

informação relacionada