Subject: Re: Lseek'ing backwards with SEEK_CUR?
To: None <r-boni@uiuc.edu>
From: Charles M. Hannum <mycroft@gnu.ai.mit.edu>
List: current-users
Date: 12/14/1994 03:45:14
Is lseek'ing backwards with SEEK_CUR supported, or expected to work?
I have a program that writes out records to a file, sometimes needing
to insert them in the middle of the file. Invariably, this program
will close the file at some point, resulting in a *HUGE* file that's
backfiled with zeros.
The program does this seeking about like this:
lseek(fd, - RECSIZE, SEEK_CUR)
It sounds like you don't have a prototype (or have an incorrect one)
in scope, so the offset is being passed as 32 bits. The second
argument needs to be `off_t'.
*EITHER* way, inserting printf's that indicate current file positions
[by means of printf("%qd", lseek(fd, 0, SEEK_CUR))] indicate that the
file pointer is in the correct place.
Again, if you don't have a prototype, the return value will be taken
as 32 bits, plus whatever 32 bits of junk happens to be on the stack
above it.