c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] Ticket 167

Absender: Timo Sandmann
Datum: Mo, 02.06.2008 13:28:56
In-reply-to: <4842DB09.5000809@xxxxxx>
References: <4842DB09.5000809@xxxxxx>


Hallo,

Am 01.06.2008 um 19:23 schrieb Achim Pankalla:
hallo,
anbei ein patch, der den fehler unter ticket 167 korregieren sollte. :-)
das problem war, das die fkt. command_init in command.c aufgerufen
wurde, bevor der eeprom-emulator initialisiert wurde. dadurch lieferten
die get-aufrufe in command_init immer 0.
ich habe mit diesen patch die reihenfolge in ct-bot.c so geändert, das
der eeprom-manager schon initialisiert ist, bevor ein set_ oder
get_bot_address() erfolgt.
in zuge dieser arbeiten, habe ich auch ein problem bei der auswertung
der aufrufoptionen von ct-bot.exe entdeckt (es kann zum doppelten aufruf
von init_eeprom_man() kommen und auch hier war ein set_bot_address()
aufruf vor dem eeprom_init möglich).

erstmal danke für den Patch, testen muss ich das Ganze dann demnächst mal unter Linux. Aber was ich bei der neuen Argument-Auswertung nicht verstehe, für den Fall 'i' passiert dann nur noch folgendes:

case 'i': {
	/* EEPROM-Init */
printf("EEPROM soll mit den Daten einer eep-Datei initialisiert werden.\n");
	opt_eeprom = 1;
	exit(0);
}

Das macht aber ja irgendwie keinen Sinn bzw. es passiert dann halt gar nix. Wo war denn jetzt das Problem mit der alten Version?

Zur Änderung bei den Inits: Wäre es nicht einfacher, zuerst das EEPROM zu initialisieren und dann die Argumente zu prüfen? Dann braucht man die Bot-Adresse nicht per globaler Variable zwischenspeichern und sie später in main() noch zu setzen. Oder schadet eine doppelte Initialisierung des EEPROMs (für den Fall, dass 'i' übergeben wurde)?

Grüße,
Timo