Odd, is it not? mkdir 'e:\' cannot be undone by rmdir 'e:\' ...

Houder houder@xs4all.nl
Wed Aug 28 07:16:00 GMT 2019


On Tue, 27 Aug 2019 11:44:17, Vince Rice  wrote:

> > On Aug 27, 2019, at 11:28 AM, Houder wrote:
> >
> > On Tue, 27 Aug 2019 17:25:49, Corinna Vinschen  wrote:
> >>
> >> mkdir(2) has some special code from 2009 which drops trailing
> >> {back}slashes to perform a bordercase in mkdir Linux-compatible.
> >> This code snippet doesn't exist in rmdir(2).
> >
> > .. uhm, I must be speaking to the alter ego of Corinna V,. because
> > as far as I know, Corinna has given herself some time off ...
> >
> > Perhaps you could make an entry in her "TODO list" that the 3 lines
> > above requires some more explanation for pour souls like me.
> 
> I am not Corinna, but I read that as
> The mkdir command works because it has special code added to it to make
> it work. The rmdir command doesn't work because it doesn't have the same
> code in it.

Right, "Corinna" Number Three.

Before I sent my question to the list, I had fired up the debugger and
lured it in providing me the neccessary info:

It showed me that my input (e:\) was being "mutilated" at the start of
mkdir() in winsup/cygwin/dir.cc

Using git I had found the "suspicious-looking" commit by Eric Blake:

 - https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=commit;h=52dba6a5c45e8d8ba1e237a15213311dc11d91fb
   ( Fix some POSIX-compliance bugs in link, rename, mkdir. )

--
author	Eric Blake <eblake@redhat.com>	
        Sat, 26 Sep 2009 15:51:53 +0000 (15:51 +0000) <====
committer	Eric Blake <eblake@redhat.com>	
        Sat, 26 Sep 2009 15:51:53 +0000 (15:51 +0000)
commit	52dba6a5c45e8d8ba1e237a15213311dc11d91fb
--

Note September 2009! (as hinted by Corinna's alter ego)

In short, neither the answer by Corinna's alter ego nor your translation
raised the level of the knowledge that I had already acquired.

Linux-compat. Really?

Who in his right mind would want to create a subdirectory e:\ on Linux?

ls -ld 'e:\'
stat 'e:\'
touch 'e:\'
rmdir 'e:\'

all refer to /drv/e # /cygdrive/e if not remapped

Only mkdir does NOT.

And I am the only one who finds this a bit odd? That why I asked: why
cannot mkdir and rmdir be symmetrical w/ respect to e:\ ?

Because of Linux? Weird.

Now I have to tell a newbie on Cygwin, that he should use

    mkdir 'e:\.' BUT rmdir 'e:\'

in order to observe the same results as the Windows equivalents do.

(yes, he should use mkdir /drv/e and rmdir /drv/e)

Tampi.

Apparently, design decisions in Cygwin must remain in the mists of
the past. Like archeology cannot tell us how our forefathers lived
in the Netherlands some three milleniums ago (The Netherlands were
flooded several times in the past : all info has gone as result of
that).

Henri


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list