From: kagel AT quasar DOT bloomberg DOT com Date: Thu, 13 Feb 1997 12:36:05 -0500 Message-Id: <9702131736.AA04929@quasar.bloomberg.com > To: cat AT sun4 DOT iol DOT unh DOT edu Cc: djgpp AT delorie DOT com In-Reply-To: (cat@sun4.iol.unh.edu) Subject: Re: I'd like to truncate a file but I don't know how Reply-To: kagel AT dg1 DOT bloomberg DOT com From: "Chris A. Triebel" Newsgroups: comp.os.msdos.djgpp Date: Mon, 10 Feb 1997 12:13:05 -0500 On 10 Feb 1997, Ian Miller wrote: > Date: 10 FEB 1997 14:02:19 +0000 > From: Ian Miller > Newgroups: comp.os.msdos.djgpp > Subject: I'd like to truncate a file but I don't know how > > I'd like to say "truncate this file here" in one of my programs. > > Can I/how do I do this with standard C/C++? > Can I/how do I do this with non-standard features of DJGPP C/C++? > > At the moment, if I delete a word from a file (a dictionary file > as it happens) and shift everything down to reclaim the space, > I'm left with a load of spare space at the end that I can't get > rid of. > > TIA, > -- > Ian Miller, Dorset, UK > DJGPP 2.01, Win95 DOS box (LFN undefined, FNCASE=y) > I don't know if this is a viable option for you, but what about importing the entire file into memory, making changes, edits, and accesses from local memory rather than from the file itself. Then you can close the file, open it with O_WRITE|O_TRUNC ( I think ) to purge the file and write your new information out. Of course that removes the possibility of making a backup which you might want to do. cat I believe that DJGPP includes the UNIX ftruncate() function which truncates/expands an open file descriptor to a given length. If the length is longer than the actual file the file is extended with binary zeros and if length is less than the current size of the file the file is truncated. -- Art S. Kagel, kagel AT quasar DOT bloomberg DOT com A proverb is no proverb to you 'till life has illustrated it. -- John Keats