desenv-web-rp.com

Por que o homem imprime "gimme gimme gimme" às ​​00:30?

Percebemos que alguns de nossos testes automáticos falham quando são executados às 00:30, mas funcionam bem o resto do dia. Eles falham com a mensagem "gimme gimme gimme" no stderr, o que não era esperado. Por que estamos obtendo essa saída?

1647
Jaroslav Kucera

Este é um ovo de páscoa em man. Quando você executa man sem especificar a página ou com -w, gera "gimme gimme gimme" para stderr, mas somente à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 sempre ser:

# 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, por isso não é realmente específico da distribuição. Você pode grep seu man binário para verificar.

Este código é responsável pela saída , adicionado por este 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 do RHEL sobre esse problema.

A string vem de bem conhecido música do ABBA Gimme! Gimme! Gimme! (A Man After Midnight) .


O desenvolvedor do man-db, Colin Watson, decidiu que havia diversão suficiente e a história não será esquecida e removeu o ovo de páscoa completamente .

Obrigado Colin!

429
Jaroslav Kucera

Caro @ colmmacuait , acho que se você digitar "man" às 0001 horas, deverá imprimir "gimme gimme gimme". # abba
@ marnanel - 3 de novembro de 2011

er, isso foi culpa minha, eu sugeri. Desculpa.

Praticamente toda a história está no commit. O mantenedor do homem é um bom amigo meu, e um dia, seis anos atrás, eu disse a ele brincando que se você invocar o homem depois da meia-noite, ele deve imprimir " me dê me dê me dê", por causa da Canção Abba chamada " Me dê me dê um homem depois da meia-noite":

Bem, ele fez realmente coloquein . Algumas pessoas se divertiram ao descobrir isso, e quase sempre esquecemos até hoje.

Eu não posso falar por Col , obviamente, mas eu não esperava que isso causasse problemas: que tipo de teste seria interrompido ao analisar a saída do man sem nenhuma página especificada? Suponho que não deveria me surpreender com o fato de alguém aparecer, mas levou seis anos.

(O mensagem de confirmação me chama de Thomas, que é meu primeiro nome legal, embora eu não o use muito online.)

Esse problema foi corrigido com o commit 84bde8 : Executando man com man -w não ativará mais este ovo de páscoa.

2166
Marnanel Thurman

Depois de alguma reflexão, eu removi este ovo de Páscoa . Ele será lançado no próximo man-db 2.8.0.

Fico feliz que isso fez algumas pessoas sorrirem, o que afinal era o objetivo disso, e minhas notificações do Twitter e assim por diante hoje sugerem que a maioria das pessoas achou mais divertido do que irritante. Ainda assim, algumas pessoas acharam isso irritante, e seis anos parecem uma boa corrida para esse tipo de coisa; provavelmente não terá uma exposição significativamente melhor do que já inesperadamente tem por meio dessa pergunta. Hora de colocá-lo na cama.

369
Colin Watson