home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!gatech!usenet.ins.cwru.edu!agate!dog.ee.lbl.gov!horse.ee.lbl.gov!torek
- From: torek@horse.ee.lbl.gov (Chris Torek)
- Newsgroups: comp.unix.bsd
- Subject: Re: STDIO Mode "a+" screwed up
- Date: 28 Jul 1992 00:47:22 GMT
- Organization: Lawrence Berkeley Laboratory, Berkeley
- Lines: 27
- Message-ID: <24972@dog.ee.lbl.gov>
- References: <39897@gremlin.nrtc.northrop.com>
- Reply-To: torek@horse.ee.lbl.gov (Chris Torek)
- NNTP-Posting-Host: 128.3.112.15
-
- In article <39897@gremlin.nrtc.northrop.com> dec@lazarus.nrtc.northrop.com
- (Dwight E. Cass) writes:
- > I have just spent the weekend trying to find out why rogue crashes
- >when it attempts to update its score file and have found the problem:
-
- > In: /usr/src/lib/libc/stdio/flags.c - Mode "a+" translates to an
- > open flag with O_APPEND (in __sflags()). This means that if
- > you seek the file to the beginning and start writting, all the
- > written will be APPENDED to the end of the file - rather than
- > updating the top of the file as specified by the plus sign.
-
- This is not a bug. ANSI C standard, section 4.9.5.3, pp. 126--127,
- l. 39 ff.:
-
- Opening a file with append mode ('a' as the first character in
- the mode argument) causes all subsequent writes to the file to
- be forced to the then-current end-of-file, *regardless of
- intervening calls to the fseek function*.
-
- [emphasis mine]
-
- > What's the cure - ouch.
-
- Fix rogue. It should use "w+" mode.
- --
- In-Real-Life: Chris Torek, Lawrence Berkeley Lab CSE/EE (+1 510 486 5427)
- Berkeley, CA Domain: torek@ee.lbl.gov
-