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 From: "Ronald Landheer" To: Subject: [PATCH] ls & "magic" cygdrive dir (was: RE: cygdrive stuff) Date: Sun, 23 Sep 2001 23:04:27 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_000A_01C14484.184DAC80" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Importance: Normal ------=_NextPart_000_000A_01C14484.184DAC80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello all, After the overwhelming display of interest for my last mail on this = subject (which had gone completely unnoticed as far as I can tell), I = have patched up the patch I sent earlier to take care of a lacking = feature. Much of my original mail is still valid, so I'm re-posting: -- BEGIN RE-POST -- > On Wed, Sep 19, 2001 at 04:11:52PM -0300, salvador wrote: >> 1) "ls -la /" doesn't show any cygdrive directory. Note it could=20 >> be solved in the same way UNIX solves the /proc stuff, just mounting >> over an existent directory a fake one. >> 2) "ls -la /cygdrive" doesn't work. > Correct. > If you'd like to correct this, patches will be, as always,=20 > gratefully accepted. I saw this, it itched me, so I'm attaching a patch :) The patch I'm attaching is against the source 'ls.c' as found in=20 fileutils-4.1-1. It introduces three methods, of which one is called:=20 ls-cygwin-loop(). It is called whenever needed. I've *only* tested this on a Win98 platform, but I don't think NT=20 changes anything in this case (I don't have any NT platforms here, so I=20 can't test them). Here's how it works: $ ls -la / (..) ?--------- 0 0 Sigma 0 Jan 1 1970 cygdrive (..) Note it only shows you that cygdrive exists. As there is no "magic dir"=20 filetype, and it's not a real directory, I'm not showing it as one. My=20 patch only does anything when there *is* no real directory - if it comes = through a stat() call, it is not handled. $ ls -la /cygdrive/ ?--------- 0 0 Sigma 0 Jan 1 1970 c ?--------- 0 0 Sigma 0 Jan 1 1970 d ?--------- 0 0 Sigma 0 Jan 1 1970 p ?--------- 0 0 Sigma 0 Jan 1 1970 u Note that 'ls -la /cygdrive' *only* shows: ?--------- 0 0 Sigma 0 Jan 1 1970 cygdrive The patch works regardless of the cygdrive setting, but does=20 (regrettably) not show the mounted drives if the cygdrive setting is=20 '/' and -an 'ls -la /' is done. I guess I should fix this, but the=20 problem is that the mounted drives come through a stat() call as a=20 directory, so I don't know whether or not they're really there -=20 ideas would help. Everything where displaying etc. is concerned is handled by the old code = - my code only adds stuff to the list and does so conservatively (so it=20 does not, for example, show the /usr/bin mount when an ls -la /usr is=20 done, unless the directory is really there, in which case ls would show=20 it anyway. (This is to avoid duplicates in the file list). I lifted some code from mount - code used to see what mounts exist, and=20 what the cygdrive prefix is.. I've surrounded those by copyright notices = attributing it to mount & Cygnus. The rest is my own (but I'm quite=20 willing to sign it over, if it's significant enough for any signatures:=20 I'm no lawyer, so I'm being conservative - this, ofcourse, only if it=20 proves useful enough to apply to ls..). All code is surrounded by the magic __CYGWIN__ ifdefs - so no other=20 platforms should be affected at all. (However, I don't know how MinGW32=20 handles this, or how this goes along with the -mno-cygwin flag) --- END RE-POST --- In addition to this, my former patch didn't handle relative directories=20 (at all). I.e. running "ls ../../../.." from the "/usr/src/fileutils- 4.1-1/src" directory didn't show the /cygdrive magic dir, while "ls /"=20 did. This has been fixed by expanding the path as handled by the patch=20 to the full POSIX path. Once again: this patch has *only* been tested on my development machine, = because I do not have any other configurations available here. Please,=20 if you have other configurations, feel free to test it - it's only=20 prudent. I hope this will be helpful (and won't go unnoticed this time) :) Greetz! Ronald ------=_NextPart_000_000A_01C14484.184DAC80 Content-Type: application/x-gzip; name="ls.c.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ls.c.diff.gz" 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 ------=_NextPart_000_000A_01C14484.184DAC80 Content-Type: text/plain; charset=us-ascii -- 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/ ------=_NextPart_000_000A_01C14484.184DAC80--