it-swarm.com.de

Warum druckt man "gimme gimme gimme" um 00:30?

Wir haben festgestellt, dass einige unserer automatischen Tests fehlschlagen, wenn sie um 00:30 Uhr ausgeführt werden, aber den Rest des Tages problemlos funktionieren. Sie scheitern mit der Meldung "gimme gimme gimme" in stderr, die nicht erwartet wurde. Warum bekommen wir diese Ausgabe?

1647
Jaroslav Kucera

Dies ist ein Osterei in man. Wenn Sie man ausführen, ohne die Seite anzugeben, oder mit -w, es gibt "gimme gimme gimme" an stderr aus, aber nur um 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

Der Exit-Code ist immer 0.

Die richtige Ausgabe sollte immer sein:

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

Die Zeichenfolge "gimme gimme gimme" ist in RHEL, OpenSUSE, Fedora, Debian und wahrscheinlich mehr zu finden, daher ist sie nicht wirklich distro-spezifisch. Sie können grep Ihre man Binärdatei überprüfen.

Dieser Code ist für die Ausgabe verantwortlich , hinzugefügt von dieses 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");

Ich habe den RHEL-Support wegen dieses Problems kontaktiert.

Die Saite stammt von bekannten ABBA-Song Gimme! Gimme! Gimme! (Ein Mann nach Mitternacht) .


Der Entwickler der man-db, Colin Watson, entschied, dass es genug Spaß gab und die Geschichte nicht vergessen wird und entfernte das Osterei vollständig .

Danke Colin!

429
Jaroslav Kucera

Sehr geehrte @ colmmacuait , ich denke, wenn Sie "Mann" um 0001 Stunden eingeben, sollte "gimme gimme gimme" gedruckt werden. # abba
@ marnanel - 3. November 2011

ähm, das war meine Schuld, ich schlug es vor. Es tut uns leid.

So ziemlich die ganze Geschichte ist im Commit. Der Erhalter des Menschen ist ein guter Freund von mir, und eines Tages vor sechs Jahren sagte ich scherzhaft zu ihm, wenn Sie den Menschen nach Mitternacht anrufen, sollte " gimme gimme gimme" gedruckt werden, wegen der Abba Lied namens " Gimme gimme gib mir einen Mann nach Mitternacht":

Nun, er hat es tatsächlich in gesetzt. Ein paar Leute waren amüsiert, es zu entdecken, und wir haben es bis heute größtenteils vergessen.

Ich kann natürlich nicht für Col sprechen, aber ich hatte nicht erwartet, dass dies jemals Probleme verursachen würde: Welche Art von Test würde beim Parsen der Ausgabe von man ohne Seite brechen spezifizierten? Ich denke, ich sollte mich nicht wundern, dass irgendwann einer auftauchte, aber es dauerte sechs Jahre.

(Die Commit-Nachricht nennt mich Thomas. Dies ist mein legaler Vorname, obwohl ich ihn online nicht oft benutze.)

Dieses Problem wurde mit commit 84bde8 behoben: Running man with man -w löst dieses Osterei nicht mehr aus.

2166

Nach einigem Nachdenken habe ich dieses Osterei entfernt . Es wird in der kommenden man-db 2.8.0 weg sein.

Ich bin froh, dass es einige Leute zum Lächeln gebracht hat, was schließlich der ganze Zweck war, und meine Twitter-Benachrichtigungen usw. deuten heute darauf hin, dass die meisten Leute es eher amüsant als nervig fanden. Trotzdem fanden es einige Leute ärgerlich, und sechs Jahre scheinen ein ziemlich guter Lauf für so etwas zu sein; Es wird wahrscheinlich keine wesentlich bessere Belichtung erhalten, als dies bei dieser Frage bereits unerwartet der Fall war. Zeit, es ins Bett zu bringen.

369
Colin Watson