Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-Id: <4.3.1.2.20010808155242.023fabc8@pop.ma.ultranet.com> X-Sender: lhall AT pop DOT ma DOT ultranet DOT com X-Mailer: QUALCOMM Windows Eudora Version 4.3.1 Date: Wed, 08 Aug 2001 15:55:45 -0400 To: John Wiersba , "'cygwin'" From: "Larry Hall (RFK Partners, Inc)" Subject: RE: unlink() problem In-Reply-To: <03F4742D8225D21191EF00805FE62B9908E23FC0@aa-msg-01.medstat .com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" At 03:47 PM 8/8/2001, John Wiersba wrote: >Thanks for your reply, Larry. Unfortunately, this is a bad bug since the >simple perl script below removes the original file (whoops!) since it >assumes that if you have permission to unlink the original file, then you >have permission to create a new file of the same name (I believe this is >always true on unix). The net result is that you lose your data. > >I can't think of anyway around it except to know that you can't do inplace >editing on cygwin. Right. I suppose if one could queue up the file creation as well, this might help. Still it ain't UNIX semantics by a long shot! > > -----Original Message----- > > From: Larry Hall (RFK Partners, Inc) [mailto:lhall AT rfk DOT com] > > Sent: Tuesday, July 31, 2001 6:59 PM > > To: John Wiersba; 'cygwin' > > Subject: Re: unlink() problem > > > > > > At 06:22 PM 7/31/2001, John Wiersba wrote: > > >I'm having a problem with unlink(). I've scanned the FAQ > > and searched some > > >in the newsgroup archives for information about the > > following problem. I > > >did find a post (see > > >http://sources.redhat.com/ml/cygwin/2001-05/msg01095.html) > > but no apparent > > >resolution. > > > > > >$ touch asdf > > >$ perl -i -pe 1 asdf > > >Can't do inplace edit on asdf: Permission denied. > > > > > >What perl is doing is equivalent to: > > > > > >$ perl -e ' > > > open A, "< asdf" or die "one $!"; # open asdf for read > > > unlink "asdf"; > > > open B, "> asdf" or die "two $!"; # open asdf for write > > > while () { print B } # copy from A to B > > >' > > >two Permission denied at -e line 4. > > > > > >The problem: after the unlink(), I can't open the same > > filename for write > > >as I can on unix. If I pause the program after unlinking > > asdf, it is still > > >there and can be seen by ls, but can't be read by ls -l. > > > > > >Is there a workaround for this behavior? Is it considered a > > bug or is it > > >just a quirk of the cygwin implementation of trying to implement unix > > >filesystem semantics on top of windows? > > > > > > The latter. This has been quite a day for this issue! This is the > > third time it came up. Perhaps this qualifies as an FAQ now! ;-) > > > > See my previous posts about this subject from earlier in the day: > > > > http://www.cygwin.com/ml/cygwin/2001-07/msg01797.html > > http://www.cygwin.com/ml/cygwin/2001-07/msg01774.html > > > > There's also a related FAQ, although the message it mentions doesn't > > seem to pop up anymore, which gives insight into the underlying > > implementation. See: > > > > http://www.cygwin.com/faq/faq_4.html#SEC57 > > > > Of course, the code is the "last word" on this subject in terms of the > > actual implementation. > > > > > > > > > > > > > > > > Larry Hall lhall AT rfk DOT com > > RFK Partners, Inc. http://www.rfk.com > > 118 Washington Street (508) 893-9779 - RFK Office > > Holliston, MA 01746 (508) 893-9889 - FAX > > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/