Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-Id: <200207170244.g6H2i5x28559@d-ip-129-15-78-125.cs.ou.edu> X-Authentication-Warning: d-ip-129-15-78-125.cs.ou.edu: jcast owned process doing -bs To: Randall R Schulz cc: cygwin AT cygwin DOT com Subject: Re: gzip.exe as symlink breaks NTEmacs's jka-compr.el In-Reply-To: Message from Randall R Schulz of "Tue, 16 Jul 2002 19:07:43 PDT." <5 DOT 1 DOT 0 DOT 14 DOT 2 DOT 20020716185624 DOT 03113ce8 AT pop3 DOT cris DOT com> Date: Tue, 16 Jul 2002 21:44:05 -0500 From: Jon Cast Randall R Schulz wrote: > Jon, > I think you're right. There's a fundamental asymmetry created by > following the Unix convention of symlinks as aliases (in lieu of > universally applicable hard links, which are true aliases). I *think* I follow. Of course, on Unix, symlinks /are/ aliases, so the problem doesn't arise. > Simply having Cygwin's /bin in your PATH makes it possible to run > Cygwin ".exe" files, but not Cygwin symlinks unless it's a Cygwin > program that attempts to invoke the alias. True. > I guess the best answer for addressing this asymmetry from the > standpoint of simplicity and universality is to simply copy the > binary separately to each named program that binary implements. > Unfortunately, some of those files are pretty big. Witness these > symlink targets from /bin (repeats reflect there being more than one > symlink targeting the same binary): > -rwxrwxrwx 1 Administ None 3228 Jan 23 00:55 /bin/allcm* > -rwxrwxrwx 1 Administ None 2105 May 6 23:35 /bin/bzdiff* > -rwxrwxrwx 1 Administ None 1582 May 6 23:35 /bin/bzgrep* > -rwxrwxrwx 1 Administ None 1582 May 6 23:35 /bin/bzgrep* > -rwxrwxrwx 1 Administ None 1259 May 6 23:35 /bin/bzmore* > -rwxrwxrwx 1 Administ None 94208 Dec 26 2001 /bin/ctags.exe* > -rwxrwxrwx 1 Administ None 8192 Jun 26 10:49 /bin/db2_archive.exe* > -rwxrwxrwx 1 Administ None 9728 Jun 26 10:49 > /bin/db2_checkpoint.exe* > -rwxrwxrwx 1 Administ None 8704 Jun 26 10:49 /bin/db2_deadlock.exe > * > -rwxrwxrwx 1 Administ None 9728 Jun 26 10:49 /bin/db2_dump.exe* > -rwxrwxrwx 1 Administ None 13312 Jun 26 10:49 /bin/db2_load.exe* > -rwxrwxrwx 1 Administ None 8192 Jun 26 10:49 /bin/db2_printlog.exe > * > -rwxrwxrwx 1 Administ None 7680 Jun 26 10:49 /bin/db2_recover.exe* > -rwxrwxrwx 1 Administ None 15872 Jun 26 10:49 /bin/db2_stat.exe* > -rwxrwxrwx 1 Administ None 84992 Jan 23 00:56 /bin/dvilj4.exe* > -rwxrwxrwx 1 Administ None 84992 Jan 23 00:56 /bin/dvilj4l.exe* > -rwxrwxrwx 1 Administ None 68096 Jan 5 2002 /bin/ed.exe* > -rwxrwxrwx 1 Administ None 274944 Jan 23 00:56 /bin/etex.exe* > -rwxrwxrwx 1 Administ None 274944 Jan 23 00:56 /bin/etex.exe* > -rwxrwxrwx 1 Administ None 274944 Jan 23 00:56 /bin/etex.exe* > -rwxrwxrwx 1 Administ None 274944 Jan 23 00:56 /bin/etex.exe* > -rwxrwxrwx 1 Administ None 145408 May 13 22:05 /bin/flex.exe* > -rwxrwxrwx 1 Administ None 169984 Jun 24 2000 /bin/gawk.exe* > -rwxrwxrwx 1 Administ None 85504 Mar 20 21:16 /bin/grep.exe* > -rwxrwxrwx 1 Administ None 85504 Mar 20 21:16 /bin/grep.exe* > -rwxrwxrwx 1 Administ None 59392 Jul 15 08:13 /bin/gzip.exe* > -rwxrwxrwx 1 Administ None 59392 Jul 15 08:13 /bin/gzip.exe* > -rwxrwxrwx 1 Administ None 411136 Apr 1 2001 /bin/irc-20010101.exe > * > -rwxrwxrwx 1 Administ None 3306 Jan 23 00:56 /bin/kpsetool* > -rwxrwxrwx 1 Administ None 3306 Jan 23 00:56 /bin/kpsetool* > -rwxrwxrwx 1 Administ None 1349 May 23 19:22 /bin/libpng12-config* > -rwxrwxrwx 1 Administ None 506368 Jul 5 09:00 /bin/mc.exe* > -rwxrwxrwx 1 Administ None 506368 Jul 5 09:00 /bin/mc.exe* > lrwxrwxrwx 1 Administ None 13 Jul 9 07:55 /bin/mcedit -> mc* > lrwxrwxrwx 1 Administ None 13 Jul 9 07:55 /bin/mcedit -> mc* > -rwxrwxrwx 1 Administ None 3584 Jul 5 09:00 /bin/mcmfmt.exe* > -rwxrwxrwx 1 Administ None 3584 Jul 5 09:00 /bin/mcmfmt.exe* > -rwxrwxrwx 1 Administ None 9728 Jul 12 21:42 /bin/mcookie.exe* > -rwxrwxrwx 1 Administ None 9728 Jul 12 21:42 /bin/mcookie.exe* > lrwxrwxrwx 1 Administ None 13 Jul 9 07:55 /bin/mcview -> mc* > lrwxrwxrwx 1 Administ None 13 Jul 9 07:55 /bin/mcview -> mc* > -rwxrwxrwx 1 Administ None 225792 Jan 23 00:56 /bin/mf.exe* > -rwxrwxrwx 1 Administ None 225792 Jan 23 00:56 /bin/mf.exe* > -rwxrwxrwx 1 Administ None 78848 Jan 23 00:56 /bin/mft.exe* > -rwxrwxrwx 1 Administ None 78848 Jan 23 00:56 /bin/mft.exe* > -rwxrwxrwx 1 Administ None 4700 Jan 23 00:47 /bin/mktexlsr* > -rwxrwxrwx 1 Administ None 228352 Jan 23 00:56 /bin/mpost.exe* > -rwxrwxrwx 1 Administ None 228352 Jan 23 00:56 /bin/mpost.exe* > -rwxrwxrwx 1 Administ None 120832 Mar 30 21:57 /bin/ncftpbatch.exe* > -rwxrwxrwx 1 Administ None 381952 Jan 23 00:56 /bin/omega.exe* > -rwxrwxrwx 1 Administ None 381952 Jan 23 00:56 /bin/omega.exe* > -rwxrwxrwx 1 Administ None 381952 Jan 23 00:56 /bin/omega.exe* > -rwxrwxrwx 1 Administ None 381952 Jan 23 00:56 /bin/omega.exe* > -rwxrwxrwx 1 Administ None 627712 Jan 23 00:56 /bin/pdfetex.exe* > -rwxrwxrwx 1 Administ None 627712 Jan 23 00:56 /bin/pdfetex.exe* > -rwxrwxrwx 1 Administ None 627712 Jan 23 00:56 /bin/pdfetex.exe* > -rwxrwxrwx 1 Administ None 627712 Jan 23 00:56 /bin/pdfetex.exe* > -rwxrwxrwx 1 Administ None 591872 Jan 23 00:56 /bin/pdftex.exe* > -rwxrwxrwx 1 Administ None 591872 Jan 23 00:56 /bin/pdftex.exe* > -rwxrwxrwx 1 Administ None 591872 Jan 23 00:56 /bin/pdftex.exe* > -rwxrwxrwx 1 Administ None 591872 Jan 23 00:56 /bin/pdftex.exe* > -rwxrwxrwx 1 Administ None 2708992 Jun 10 05:13 /bin/postgres.exe* > -rwxrwxrwx 1 Administ None 3072 Jun 25 08:01 /bin/python2.2.exe* > -rwxrwxrwx 1 Administ None 9728 Nov 28 2001 /bin/shutdown.exe* > -rwxrwxrwx 1 Administ None 9728 Nov 28 2001 /bin/shutdown.exe* > -rwxrwxrwx 1 Administ None 9728 Nov 28 2001 /bin/shutdown.exe* > -rwxrwxrwx 1 Administ None 231424 Jul 4 02:31 /bin/ssh.exe* > -rwxrwxrwx 1 Administ None 241664 Jan 23 00:56 /bin/tex.exe* > -rwxrwxrwx 1 Administ None 241664 Jan 23 00:56 /bin/tex.exe* > -rwxrwxrwx 1 Administ None 241664 Jan 23 00:56 /bin/tex.exe* Actually, there is an (amortized) smaller way than copying the files. If the following program is compiled under Cygwin: #include int main (int argc, char **argv) { execv ("/bin/gzip", argv); } It should do the same job as a symlink to /bin/gzip under both Cygwin and Windows. It's slightly less time-and-process efficient, but if space is a concern it's probably better. I don't have easy access to a Cygwin box just at the moment, but on GNU/Linux (Redhat 7.3, to be precise) it's < 3k stripped. A lot more than a symlink (although I think Windows' filesystem granularity is higher than that anyway), but less than just about any of the programs you list. > I know that if one just uses the "ln" command (no "-s" option) on a > FAT volume you get a copy. If Cygwin packages used hard links for > program aliases (does the TAR format support hard links?) Yes. > and Setup.exe was given the same smarts as the "ln" command, you'd > get space-wasting copies on FAT volumes and fast, space-efficient > hard links on NTFS. This is a good idea if space on FAT volumes is not a concern. > Randall Schulz > Mountain View, CA USA Jon Cast -- 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/