From: John DOT Cooper AT digitivity DOT com ("John Cooper") Subject: Re: `find' command broken. 14 Jul 1997 02:56:14 -0700 Sender: mail AT cygnus DOT com Approved: cygnus DOT gnu-win32 AT cygnus DOT com Distribution: cygnus Message-ID: <19970714091909312.AAA68.cygnus.gnu-win32@TENDLE> References: <19970711092719531 DOT AAA303 AT TENDLE> <19970711133409718 DOT AAA335 AT TENDLE> <33C6B5BF DOT BA9 AT wgn DOT net> <33C76150 DOT A2F58F7F AT prairienet DOT org> <33C79F98 DOT 101D AT wgn DOT net> <199707121814 DOT EAA04604 AT murlibobo DOT cs DOT mu DOT OZ DOT AU> <33C85B70 DOT 19BE AT wgn DOT net> <199707130736 DOT RAA03125 AT murlibobo DOT cs DOT mu DOT OZ DOT AU> Reply-To: john DOT cooper AT digitivity DOT com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Original-To: Fergus Henderson Original-Cc: gnu-win32 AT cygnus DOT com, Amol Deshpande In-Reply-To: <199707130736.RAA03125@murlibobo.cs.mu.OZ.AU> X-Mailer: VM 6.32 under Emacs 19.34.1 X-Attribution: JSC X-Face: -%]aecOJlhOSKn)}>~DbRQwM6G6gDkOD{2f!2Bt9|S-xC1~Gk^dCp_/HH#zo^u5z8iGty3N L_1.GYkj0by`^VQK14EzbsY~BC%%O#x+[Giaf?X`hi9H)oEy]M>cx/Y4.I^5@^#kQrJk*!DwlpX: 1} eZVU9: ~_QGIMF5[I Original-Sender: owner-gnu-win32 AT cygnus DOT com Fergus Henderson writes: > >> The relevent source is winsup/dcrt0.cc, > >> which contains the startup code for cygwin.dll: > >> > >> /* Expand *.c, etc. */ > >> if (! u->self->cygwin_parent_p) > >> globify (&argc, &argv); > >> > >> So, the problem with `zsh' commands being doubly-globbed could > >> presumably be fixed by recompiling zsh with gnu-win32. Great, the mystery seems to be explained... > >This code doen't check for any escapes. It just checks for > >globbing characters. Couldn't this be made to ignore args > >with ' or " as the first char, by inserting this code. > > > > if (av[i][0] == '\'' || av[i][0] == '"') > > { > > /* strip quotes off arg here (front and back) and adjust arg ptr */ > > } > > Yep, that would be a good idea. > > But if zsh was not compiled with cygwin, then you would still need > to do some gnarly quoting to get it right, e.g. > > find . -name '"*.c"' -print > or > find . -name "'*.c'" -print > > You would need two levels of quotes, because one would get stripped > away by zsh, and one by cygwin.dll. How about introducing an environment variable that means "don't have cygwin glob", and modify the above code as follows: > >> /* Expand *.c, etc. */ > >> if (! u->self->cygwin_parent_p && !getenv("CYGWIN_DONT_GLOB")) > >> globify (&argc, &argv); Then I could just set CYGWIN_DONT_GLOB in my .zshrc and find, etc would behave the same as bash. It's a bit of a hack, but if the quoting problem is too gnarly, perhaps it would suffice (at least as a short-term solution). Thanks, --- John - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".