[Allegro] Fehler in optsget.inc
Thomas Berger
ThB at Gymel.com
Mi Sep 3 11:38:31 CEST 2014
Lieber Herr Eversberg,
>> Unfug, das ist nur mein Spiegel /Ihrer/ Version im Kontext eines
>> Verzeichnisses, das modifizierte Parameterdateien fuer V23-Verknuepfungen
>> vorhält.
>>
> Na umso besser. Dann hatte nur ich den Fehler da hineingebastelt,
> das ist ja nicht so schlimm, denn jetzt ist er weg.
Nein, in meiner getopts.jnc war er auch drin und ich habe ihn
gerade erst herausgebaut:
< http://svn.gymel.com/viewvc/allegro?view=revision&revision=25861 >
> Bin aber nicht sicher, ob in Ihrem Skript eine sichere Absicherung
> gegen fehlende Option -e bzw. -s drin ist bzw. Ignorierung des Fehlens,
> wenn sie nicht gebraucht werden, wie im update.job. (Muß aber wohl,
> sonst hätten Sie ja dauernd Ärger damit.)
Problem in der Praxis ist eher, dass acon ueber fehlende Optionen
stolpert, bevor der Job ausgefuehrt wird und sagen kann, welche
das sein koennten...
> Andererseits verstehe ich nicht, warum Sie den Schleifenbaum-Fehler
> nicht gleich durchschaut hatten. Ist aber besser so, denn es gab ja
> den - obzwar damit gar nicht korrelierten - Fehler mit insert #uyx,
> der uns sonst noch auf die Füße hätte fallen können und das ganz sicher
> auch getan hätte.
Bei meinen Tests hier lag es definitiv an dem "insert"-Problem, das sich
so aeusserte, dass eine angeblich illegale Option '' moniert wurde:
// legal?
var $OP.cl (1,1)
ins $OP.name
var " " $OP.cl (0,3)
ins #ucc
if $OP.CHECK Write "Teste '** " $OP.accept " " $OP.acon " **' gegen '" #ucc "'" n
var "** " $OP.accept " " $OP.acon " **"
var (b"#ucc")
if "" jump ERRnoa
Es geht um die allererste Option auf der Kommandozeile (irgendwelche
Bemerkungen zum Schalter -e konnten da noch nicht anfallen) und an der
Stelle ist bereits klar, dass $OP.cl mit "-" beginnt, #ucc muss nach
dem "ins" also mindestens zwei Zeichen enthalten, daher wird vor dem
var (b"#ucc")
auch nicht abgefangen, ob #ucc leer ist. An der Stelle ist das Laufzeit-
verhalten bei leerem #ucc aber moeglicherweise undefiniert. Hier jedenfalls
war die iV anschliessend leer und die Fehlerbehandlung bei ERRnoa wurde
eingeleitet.
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro