it-swarm-fr.com

Pourquoi l'homme imprime "gimme gimme gimme" à 00:30?

Nous avons remarqué que certains de nos tests automatiques échouent lorsqu'ils s'exécutent à 00h30, mais fonctionnent bien le reste de la journée. Ils échouent avec le message "gimme gimme gimme" dans stderr, ce qui n'était pas prévu. Pourquoi obtenons-nous cette sortie?

1647
Jaroslav Kucera

Il s'agit d'un œuf de Pâques en man. Lorsque vous exécutez man sans spécifier la page ou avec -w, il envoie "gimme gimme gimme" à stderr, mais seulement à 00h30:

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

Le code de sortie est toujours 0.

La sortie correcte doit toujours être:

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

La chaîne "gimme gimme gimme" peut être trouvée dans RHEL, OpenSUSE, Fedora, Debian et probablement plus, donc ce n'est pas vraiment spécifique à la distribution. Vous pouvez grep votre man binaire pour vérifier.

Ce code est responsable de la sortie , ajouté par ce 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");

J'ai contacté le support RHEL à propos de ce problème.

La chaîne vient de bien connu chanson ABBA Gimme! Gimme! Gimme! (A Man After Midnight) .


Le développeur de l'homme-db, Colin Watson, a décidé qu'il y avait assez de plaisir et que l'histoire ne sera pas oubliée et supprima complètement l'oeuf de Pâques .

Merci Colin!

429
Jaroslav Kucera

Cher @ colmmacuait , je pense que si vous tapez "man" à 0001 heures, il devrait imprimer "gimme gimme gimme". # abba
@ marnanel - 3 novembre 2011

euh, c'était ma faute, je l'ai suggéré. Désolé.

À peu près toute l'histoire est dans le commit. Le mainteneur de l'homme est un bon ami à moi, et un jour il y a six ans, je lui ai dit en plaisantant que si vous invoquez l'homme après minuit, il devrait afficher " gimme gimme gimme", à cause de la Abba chanson intitulée " Gimme gimme gimme a man after midnight":

Eh bien, il l'a fait mettez-lein . Quelques personnes ont été amusées à le découvrir, et nous l'avons surtout oublié jusqu'à aujourd'hui.

Je ne peux pas parler au nom du Col , évidemment, mais je ne m'attendais pas à ce que cela cause des problèmes: quel genre de test se casserait en analysant la sortie de man sans aucune page spécifiée? Je suppose que je ne devrais pas être surpris que l'un d'eux soit finalement arrivé, mais cela a pris six ans.

(Le message de validation m'appelle Thomas, qui est mon prénom légal bien que je ne l'utilise pas beaucoup en ligne.)

Ce problème a été corrigé avec commit 84bde8 : Running man with man -w ne déclenchera plus cet œuf de Pâques.

2166
Marnanel Thurman

Après réflexion, j'ai retiré cet œuf de Pâques . Ce sera parti dans la prochaine man-db 2.8.0.

Je suis heureux que cela ait fait sourire certaines personnes, ce qui était après tout l'objectif, et mes notifications Twitter et ainsi de suite aujourd'hui suggèrent que la plupart des gens pensaient que c'était plus amusant qu'énervant. Pourtant, certaines personnes l'ont trouvé ennuyeux, et six ans semblent être une assez bonne course pour ce genre de chose; il ne va probablement pas obtenir une exposition beaucoup mieux que ce qu'il a déjà de manière inattendue à travers cette question. Il est temps de le coucher.

369
Colin Watson