Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

fseek broken

5 views
Skip to first unread message

Joerg Plate

unread,
Oct 15, 2001, 10:57:55 AM10/15/01
to
> Entweder gehoeren die Leute von der libc ganz ganz lange
> weggeschlossen oder ich muss ein paar Wochen auf die Bahamas.
Ich hoffe das Wetter auf den Bahamas ist gut...

> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende
> positionieren, herrje wer hat sich das ausgedacht?!
Doch, man kann das (und Du hast das ja auch gesehen). Es ist
durchaus sinnvoll die aktuelle Position auch hinter das akutelle
Ende der Datei zu setzen (z.B. um Daten anzufügen). Das man nach
dem fseek() nichts lesen kann ist allerdings auch anzunehmen...

(Und wenn "sparse files" unterstüzt werden kann man sogar
'grosse' Offsets nehmen ohne das die Datei entsprechend gross
wird).

--
"I'm working on it." <http://www.psyche.kn-bremen.de/> ICQ=46996186

DMCA, SSSCA, USAA, ATA: Land of the Free?

Kostka, Volkmar

unread,
Oct 15, 2001, 11:01:45 AM10/15/01
to

Hallo,

Patrick Piecha wrote:
>
> Hi.
>
> Ich habe ein File in.asc mit einer Laenge von 25 Bytes, wie man
> sieht. Kann mir dann bitte mal jemand erklaeren, was fseek da
> macht? Entweder gehoeren die Leute von der libc ganz ganz lange


> weggeschlossen oder ich muss ein paar Wochen auf die Bahamas.
>

> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende positionieren,
> herrje wer hat sich das ausgedacht?!

Ist aber so. Du kannst sogar negative Abstaende angeben.
Erklaerung (resp. Versuch einer):

Bei fseek gibts du an, wohin du willst.
5 vorwaerts, nach Muenschen auf den Stachus, 8 zurück.
Es garantiert dir aber niemand, ob da auch was ist.

Aufgabe:
Schlage einen Nagel in 500 km Hoehe in eine Wand.
Je nach System schlaegst du entweder ins Leere oder es entsteht auf
wundersame Weise eine 500 km hohe Wand.

Die Aufgabenstellung ist zulaessig.
Ob sie sinnvoll ausgefuehrt werden kann, haengt vom System ab.

MFG

Volkmar Kostka

Joerg Bruehe

unread,
Oct 15, 2001, 12:14:43 PM10/15/01
to
Hi!

Patrick Piecha wrote:
>
> Hi.
>
> Ich habe ein File in.asc mit einer Laenge von 25 Bytes, wie man
> sieht. Kann mir dann bitte mal jemand erklaeren, was fseek da
> macht? Entweder gehoeren die Leute von der libc ganz ganz lange
> weggeschlossen oder ich muss ein paar Wochen auf die Bahamas.

Nimm Dir genug zum Lesen mit.

>
> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende positionieren,
> herrje wer hat sich das ausgedacht?!

Doch, das geht auf allen Unix-Systemen (Stichwort "Sparse File"),
ist auch (z.B. bei X/Open) so spezifiziert:

| The fseek() function allows the file-position indicator
| to be set beyond the end of existing data in the file. ...

Was der C-Standard (nicht Unix/Posix sondern ISO) dazu sagt,
habe ich jetzt nicht gesucht - selbst wenn er es nicht vorschreibt,
wird er dieses Unix-uebliche Verhalten aber wohl nicht verbieten.

Gruss,
Joerg

--
Joerg Bruehe, SQL Datenbanksysteme GmbH, Berlin, Germany
(speaking only for himself)
mailto: jo...@sql.de

Felix von Leitner

unread,
Oct 15, 2001, 9:32:27 PM10/15/01
to
Thus spake Patrick Piecha (pie...@micronas.com):

> Ich kann in einem 25 Byte-File nicht auf einen Offset von 100
> Bytes nach dem Anfang oder 100 Bytes vor dem Ende positionieren,
> herrje wer hat sich das ausgedacht?!

Gibt es einen konkreten Grund dafür, daß du dir nicht die verfügbare
Dokumentation durchliest, und stattdessen hier postest?

Felix

0 new messages