it-swarm-es.tech

¿Por qué el hombre imprime "dame dame dame dame" a las 00:30?

Hemos notado que algunas de nuestras pruebas automáticas fallan cuando se ejecutan a las 00:30 pero funcionan bien el resto del día. Fallan con el mensaje "dame dame dame dame" en stderr, que no era de esperar. ¿Por qué estamos obteniendo esta salida?

1647
Jaroslav Kucera

Este es un huevo de pascua en man. Cuando ejecuta man sin especificar la página o con -w, emite "dame dame dame dame" a stderr, pero solo a las 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

El código de salida siempre es 0.

La salida correcta siempre debe ser:

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

La cadena "gimme gimme gimme" se puede encontrar en RHEL, OpenSUSE, Fedora, Debian y probablemente más, por lo que no es realmente específica de la distribución. Puede grep su man binario para verificar.

Este código es responsable de la salida , agregado 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");

Me he puesto en contacto con el soporte de RHEL sobre este problema.

La secuencia proviene de la conocida canción de ABBA Gimme! Gimme! Gimme! (A Man After Midnight) .


El desarrollador de man-db, Colin Watson, decidió que había suficiente diversión y que la historia no se olvidará y eliminó el huevo de Pascua por completo .

Gracias Colin!

429
Jaroslav Kucera

Estimado @ colmmacuait , creo que si escribe "man" a las 0001 horas, debería imprimir "gimme gimme gimme". # abba
@ marnanel - 3 de noviembre de 2011

er, fue mi culpa, lo sugerí. Lo siento.

Casi toda la historia está en el compromiso. El mantenedor de man es un buen amigo mío, y un día hace seis años le dije en broma que si invocas a man después de la medianoche, debería imprimir " gimme gimme gimme ", debido a la canción de Abba llamada " Dame dame dame un hombre después de la medianoche ":

Bueno, en realidad lo hizo ponloen . Algunas personas se divirtieron al descubrirlo, y la mayoría lo olvidamos hasta hoy.

No puedo hablar por Col , obviamente, pero no esperaba que esto causara algún problema: ¿qué tipo de prueba se rompería al analizar la salida de man sin una página especificada? Supongo que no debería sorprenderme que finalmente apareciera uno, pero tardó seis años.

(El mensaje de confirmación me llama Thomas, que es mi nombre legal aunque no lo uso en línea mucho).

Este problema se ha solucionado con commit 84bde8 : Running man with man -w ya no activará este huevo de pascua.

2166
Marnanel Thurman

Después de un poco de reflexión, he eliminado este huevo de Pascua . Se habrá ido en el próximo man-db 2.8.0.

Me alegro de que haya hecho sonreír a algunas personas, lo que, después de todo, era todo el propósito, y mis notificaciones de Twitter, etc., sugieren que la mayoría de la gente pensó que era más divertido que molesto. Aún así, algunas personas lo encontraron molesto, y seis años parece una muy buena carrera para ese tipo de cosas; probablemente no va a obtener una exposición significativamente mejor de lo que ya tiene inesperadamente a través de esta pregunta. Es hora de acostarse.

369
Colin Watson