Alexander Foken: Zeilenende UNIX/DOS

Beitrag lesen

Moin Moin !

heisst das ich muss das im binmode machen, obwohl es eigentlich ein Textfile ist?

Wenn Du darauf bestehst, ein u.U. OS-fremdes Zeilenende zu haben: Ja.

Du kannst Dir vielleicht das Leben wesentlich leichter machen, wenn Du zum Transfer der Text-Dateien FTP im ASCII-Mode (im Gegensatz zum Binär-Mode) benutzt, dann werden die Zeilenenden beim Transfer automatisch an das jeweilige OS angepaßt.

Diese ganze Unterscheidung zwischen Textmode und Binärmode bei Dateien ist sowieso nur eine Spielerei der C-Runtime-Library (libc), der Betriebssystemkern arbeitet immer binär (zumindest bei Unixen aller Art, DOS und Windows).

Im Prinzip ist die libc auf Nicht-Unix-Betriebssystemen eine (sehr dünne) Emulation von Unix. Unter Unix ist das Zeilenende einer Textdatei LF ("\n"), und wenn der selbe Quelltext auch auf Nicht-Unix-Systemen ohne Änderungen laufen soll, muß eben die libc die Zeilenenden anpassen, d.h. beim Schreiben wird aus LF CR/LF unter DOS und Windows und CR auf dem Mac, und beim Lesen wird aus CR/LF unter DOS bzw CR auf dem Mac wieder ein LF ("\n"). Weil mit diesem "hochintelligenten" Algorithmus aber sämtliche Binärdateien auf Nicht-Unix-Systemen geschreddert würden, ist irgendjemand auf die Idee gekommen, zwischen Textmode und Binärmode umzuschalten.

Beschwerden bitte an Microsoft und Digital wegen der DOS- und CP/M-Zeilenenden und an Apple wegen der Mac-Zeilenenden; sowie an K&R, die uns den ganzen Ärger mit C eingebrockt haben. ;-)

Alexander