X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: Lloyd Zusman Subject: Re: Changing Windows "hidden" and "system" attributes? Date: Sun, 29 Oct 2006 22:08:57 +0000 (UTC) Lines: 57 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit User-Agent: Loom/3.14 (http://gmane.org/) X-IsSubscribed: yes 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 Igor Peshansky cs.nyu.edu> writes: > > On Sat, 28 Oct 2006, Lloyd Zusman wrote: > > > Well, for one thing, things like this don't work: > >and this is what > > find . -type f -print | xargs attrib > > > > Yes, I know that I could put a wrapper script around attrib to apply > > cygpath to the argument, to name but one of several ways to solve this. > > In fact, I have already done this, thereby making my own > > cygwin-compliant analog to attrib. > > find . -type f -print | cygpath -w -f- | xargs attrib > > Won't work with -print0, but you get the idea. > Igor Thank you. I've tried this, and the -L1 argument is needed with xargs. But even with that, the pathnames get screwed up for subdirectories ... $ pwd /home/me $ cygpath -w `pwd` e:\home\me $ find . -type f -print | cygpath -w -f- | xargs -L1 attrib A E:\home\me\.bash_history A E:\home\me\.cvspass File not found - .elinksbookmarks File not found - .elinkscookies File not found - .elinkselinks.conf File not found - .elinksglobhist File not found - .elinksgotohist A E:\home\me\.emacs File not found - .fluxboxfbrun_history ... etc. ... Because of cygpath, filenames such as .elinks/bookmarks and .fluxbox/fbrun_history are passed to xargs like this: .elinks\bookmarks and .fluxbox\fbrun_history. Then xargs invokes attrib via a subshell, and therefore, shell meta-character handling is performed. That causes the backslashes in those path names to be removed before they get passed to the attrib command, thereby causing that program to see incorrect file names. Because of this, a hacky wrapper script for attrib like the one I wrote in my earlier message is still needed, unfortunately. -- Lloyd Zusman ljz AT asfast DOT com Lloyd Zusman -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/