Forum: PC Hard- und Software Xnec2c Code - Länge des Input Dateinamens


von Markus W. (dl8mby)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich habe mir vor kurzem das xnec2c Programm für die
Antennensimmulation auf einem x86_64 Rechner unter
OpenSuse 13.1 compiliert.

Das Programm samt Gui scheint soweit zu funktionieren.
Mir ist aber aufgefallen, das nicht alle exampels d.h.
.nec Files liefen, sondern bei einigen eine Fehlermeldung
angezeigt wurde.

Als Ursache stellte sich heraus, dass der Dateiname samt Pfad
länger als 80 Zeichen war.

Fehlermeldung siehe Anhang.

Ich wollte diese Längenbeschränkung ausweiten und habe im Code
gesucht, wo das "infile" definiert wird.

shared.h:extern char infile[81];
shared.c:char infile[81] = "";

fork.c:    retval = Read_Pipe( num_child, infile, 80, FALSE );

Nun zu meiner Frage:

Ich habe die beiden ersten gefundenen Zeilen geändert und die
Länge auf z.B. 161 gesetzt also verdoppelet.
Nun ist mir nicht klar, ob ich auch an der dritten Stelle, d.h.
bei dem Pipe-Aufruf die 80 durch 160 ersetzen muss.

Kann mir jemand diese Frage sachdienlich beantworten.

Danke!

Markus

PS.: Nach meiner Änderung, scheint das Programm weiterhin zu
funktionieren, siehe zweiten Anhang. Ich habe aber nicht im Detail
untersucht, ob der Pipe Übergabeparameter mit dem Wert 80 überhaupt
etwas mit der Länge des Dateinamens zu tun hat.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus W. schrieb:
> Nun ist mir nicht klar, ob ich auch an der dritten Stelle, d.h.
> bei dem Pipe-Aufruf die 80 durch 160 ersetzen muss.

Musst Du.

Besser als mit "magic numbers", d.h. wild in Deinem Code verstreuten 
Zahlen solltest Du mit einem zentralen #define arbeiten.

Das ist z.B. in limits.h als PATH_MAX definiert.

Also:

char infile[PATH_MAX + 1];

...

retval = Read_Pipe( num_child, infile, PATH_MAX, FALSE );

von Markus W. (dl8mby)


Lesenswert?

Hallo Rufus,

danke für Deine Hinweise.

Ich habe den Code aus dem Web. Es handelt sich um den NEC2
"numeric electromagnetic code" Version 2 Simulator für das
Berechnen von Antennen. Dieser Fortrancode wurde in C übertragen
und es gibt das Programm Xnec2c, das eine GUI (GTK2) für die
nummerische Eingabe und Darstellung der Lösung bereitstellt.

Ich werde Deine Anregungen ergänzen und hoffe, dass es noch weitere
Interessenten gibt, die den Code durchsehen können und diesen
optimieren.

Das Prgramm ist in seiner Art sehr leistungsfähig und ist frei
verfügbar. Programme dieser Art kosten normalerweise sehr viel Geld.

Gruß
Markus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.