Subject: Re: B20, Win95: cp destroys file
From: [email-masked] (Anders Norlander)

18 Nov 1998 13:49:20 -0800
Message-ID: <[email-masked]>
References: <[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: Mumit Khan <[email-masked]>
Cc: [email-masked], "Henry S. Warren, Jr." <[email-masked]>,
        [email-masked]

Mumit Khan wrote:
> 
> Earnie Boyd <[email-masked]> writes:
> > ---"Henry S. Warren, Jr." <[email-masked]> wrote:
> > >
> > > If you copy, using cp, a file to itself, and the target and source
> > files
> > > differ in capitalization, then the content of the file is wiped out;
> > it
> > > becomes a file of 0-length.  Example: "cp hilbert.c hilbert.C" trashes
> > > file hilbert.c.
> > >    The Win95 "copy" command gives the error message "File cannot be
> > > copied onto itself" in this situation (much preferable)
> >
> > Hmm.  It used to do it that way in b19.  Is it possible that inode or
> > stat routine has become buggy?
> 
> Are you by any chance doing this on a SMB mounted filesystem? I remember
> playing with this a while back, and it worked on FAT and NTFS, but not
> on SAMBA disk (didn't try SMB disks from non-SAMBA server, such as NT).
> 
> I believe that the problem is in MoveFileEx (WIN API), which doesn't do
> the right thing. However, the rename in MSVC runtime does somehow do
> it correctly on all filesystems, so it's doing something more than using
> MoveFileEx. (fyi, mv uses the rename runtime routine in winsup that in
> turn uses MoveFileEx to do the actual renaming).

Isn't this the same as the win32 `cat foo >foo' problem?
I find it hard to believe that this is related to a bug in
MoveFileEx, since MoveFileEx really just calls the driver for
the file-system in question (I would imagine) to perform the
actual disk/filesystem operations. At least on my FAT system,
running b19, cp destroys the file if it is the same file but
the names differ in capitalization.

Anders Norlander
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".