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: <3F7B0C4E.4090000@cs.nyu.edu> Date: Wed, 01 Oct 2003 10:18:06 -0700 From: Yap on ExactGeom User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) X-Accept-Language: en-us, en, ko-kr MIME-Version: 1.0 To: cygwin AT cygwin DOT com CC: Chee Yap , Igor Pechtchanski Subject: Re: Hello and cygwin quesiton References: <3F7A1AC0 DOT 3050503 AT cs DOT nyu DOT edu> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dear Igor, Nice to hear from you, and thanks for the clarification! I understand your explanation of the difference between gvim and vim. But there is still a mystery. In my previous installation of cygwin, no such problems arise. The difference is that my previous system was Windows 2000 and my current one is Windows XP. Can you explain this? Thanks, --Chee Igor Pechtchanski wrote: >On Tue, 30 Sep 2003, Yap on ExactGeom wrote: > > > >>Dear Igor, >> >>How are you? I noticed that you are an active developer of cygwin. >>I really liked this platform and our Core Library is developed >>on this mainly. I have a question: >> >>In my recent (June) installation of cygwin, there was an annoying >>bug -- many of the files that I create are automatically given >>the execute permission. [Since my "ls" will automatically show >>me which files are executable, this is VERY annoying.] >>But this behavior is not universal. If I have a non-executable >>file, and I exit it using gvim, the file will become executable. >>But using vim, it remains non-executable. But I don't think >>the program is with a bad installation of gvim, because this >>phenomenon shows up in other places. >> >>Heard of this bug before? >>Thanks, Chee >> >> > >Hi, Chee, > >Great to hear from you. > >I'm redirecting this reply to the general Cygwin list, mostly to get this >into the archives (because I know others are having this same problem). >Also, this brings your question up before a large body of expertise -- >perhaps someone else will find something I've missed. > >This is not a bug, but rather an artifact of the default permissions files >get when written by Windows programs. Gvim is a pure Windows program, in >contrast with vim, which is a Cygwin one. Also, vim writes files >in-place, whereas gvim creates a new copy -- hence the change in >permissions. Unfortunately, there isn't anything you can easily do to fix >this. I have a script (attached) that I run periodically on my system to >fix the executable permissions. It's not foolproof, but it's better than >nothing (and it should err on the conservative side). > Igor > > >------------------------------------------------------------------------ > >#!/bin/sh ># ># A script to fix up executable permissions. ># ># Copyright (c) 2002, 2003, Igor Pechtchanski ># ># Written by Igor Pechtchanski ># ># This program is distributed under the terms of the GNU General Public ># License. For more information see . ># > >PROGNAME="`basename "$0"`" >USAGE="Usage: $PROGNAME [-v|--verbose] [-n|--dry-run] [-b|--batch] [dirs]" >DASH_PRINT= >ECHO= >TEE=cat >BATCH= >dup2() { ># xargs -r -0 -n 1 perl -e 'exit unless ($a=shift);print STDERR "$a\n";print "$a\0"' ># xargs -r -0 -n 100 perl -e 'foreach(@ARGV){print STDERR "$_\n";print "$_\0"}' > perl -e '$/="\0";while(<>){chomp();print STDERR "$_\n";print "$_\0"}' >} >while [ -n "$1" ]; do > case "$1" in > -h|--help) echo "$USAGE" >&2 ; exit 0 ;; > -v|--verbose) DASH_PRINT="-print" ; TEE=dup2 ;; > -n|--dry-run) ECHO="echo" ;; > -b|--batch) BATCH="true" ;; > --) shift ; break ;; > -*) echo "Invalid flag: $1" >&2 ; echo "$USAGE" >&2 ; exit 2 ;; > *) break ;; > esac > shift >done > >DIRS="${@:-.}" > >#EXEEXT="sh exe bat com dll" >EXEEXT="exe bat com dll" >EXTFILTER="$(echo "$EXEEXT" | perl -pe 's/(\w+)/-name \\*.$1 -o/g')" > >#DBGPRG='-exec echo CAUGHT ".(++$i)." {} \\;' >EXEPAT='^#! */^: *Use */eval.*exec' >#PATPRG='-exec perl -ne \"BEGIN{\\\$s=1};\\\$.=1&&/$p/&&exit(\\\$s=0);exit(\\\$s);END{exit(\\\$s)}\" {} \\;'; >PATPRG='-exec awk \"BEGIN{S=1}NR=1&&/$p/{S=0;exit(0)}{exit(S)}END{exit(S)}\" {} \\;'; >PATFILTER="$(echo "$EXEPAT" | perl -pe 's/\n$//;@p=split(//);foreach $p(@p){$p=~s@(['"'"'"/])@\\\\$1 AT g;$p="'"$PATPRG $DBGPRG"' -o";};$_=join(" ",@p)')" > >eval "set -- $EXTFILTER $PATFILTER" > >for DIR in $DIRS; do > if [ -d "$DIR" -o -h "$DIR" ]; then > FILTER="-type f" > elif [ -f "$DIR" ]; then > FILTER="-maxdepth 1" > fi > if [ -z "$BATCH" ]; then > find "$DIR" $FILTER -perm -0100 \( "$@" \( $DASH_PRINT -exec $ECHO chmod a-x {} \; \) \) > else > find "$DIR" $FILTER -perm -0100 \( "$@" -print0 \) | $TEE | xargs -r -0 -n 1000 $ECHO chmod a-x -- > fi >done > > > -- 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/