[linux-l] Re: Mac und Linux

Rocco Rutte pdmef at cs.tu-berlin.de
Do Aug 3 19:17:49 CEST 2006


Hi,

* Oliver Bandel [06-08-03 18:30:52 +0200] wrote:
>On Thu, Aug 03, 2006 at 11:47:58AM +0000, Rocco Rutte wrote:

>Ich rede nicht vom Programmierinterface, sondern
>von der Shell-Benutzung.

Klar. Aber die Shell schlägt doch auf die Tools durch?

>Wenn ich unter OS-X die bash habe, dann darf ich nur erst die switches
>und dann die anderen Args nehmen.
>Wenn ich unter Linux (Debian jedenfalls) die bash benutze, dann ist
>es egal, ob die switches am Anfang oder auch hinten folgen, denn
>das geht beides.

Naja, du weisst aber nicht, wie ls programmiert ist. Die Shell sortiert 
das auf gar keinen Fall um. Wenn, dann macht das getopt(). Und wenn 
ls(1) das benutzt (selbst als Shell-Builtin kann es das), dann bekommst 
du mit einer anderen C-Bibliothek zwei unterschiedliche getopt()s und 
demnach auch unterschiedliches Verhalten identischen (Bash-)Codes. Oder 
verstehe ich was falsch?

>> IMHO hat getopt() da überhaupt nichts an den Argumenten zu fummeln; es 
>> hat sie genauso weiterzugeben wie es sie von der Shell bekommt und nur 
>> eben auf zustätzliche Optionen pro Argument zu gucken.

>> >"-l" wird jedenfalls bei "ls * -l" unter OS-X angemeckert mit der Meldung,
>> >es gäbe keine Datei namens "-l".

>> Hier auch, was sonst? Das kann aber auch andere Ursachen haben... :)

>S.o. unter dem Debian ist das "-l" am Ende auch als ein switch interpretiert,
>nicht nur wenn er vor den Dateinamen kommt.

Ich weiss. Weil getopt() umsortiert. Das ls-Programm (in dem Fall wohl 
bash) bekommt nach getopt() das zu sehen:

   ls -l *

auch wenn du

   ls * -l

geschrieben hast.

>> Als Programmierer möchte ich die _exakt_ so bekommen wie der User sie 
>> mir gibt,

>Dann kannste das ja selber pasrsen, also argv[] selber untersuchen.
>Weiter oben hast Du getopt() erwähnt.
>Das müsstest Du demnach also gerne ignorieren?!

Ja. Getopt() bietet mir zu wenig zusätzliche Funktionalität, als dass 
ich dafür eine neue Funktion benutzen möchte. Selber schreiben dauert 
auch nicht länger und ist auch nicht mehr Code. Dafür aber frei von 
solchen Nebeneffekten.

   bye, Rocco
-- 
:wq!



Mehr Informationen über die Mailingliste linux-l