delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/01/15/21:53:39

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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: <41E9D722.3010306@tlinx.org>
Date: Sat, 15 Jan 2005 18:53:22 -0800
From: linda w <cygwin AT tlinx DOT org>
User-Agent: Mozilla Thunderbird 0.9 (Windows/20041103)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Can "DLL's" & libraries be marked as non-executable?
X-IsSubscribed: yes

I was told I might fix the problem of typing in a partial command name
like "cyg", and the command completion character and getting a long list
of DLL's with a few EXE's thrown in. 

I had been told it could be fixed through adjustment of the bash command
completion or in the readline completion used by bash.  This doesn't
appear to be a straight forward solution.  To complete a command, bash
relies on the default behavior in readline.  Readline relies on the
OS correctly returning a file's executable status as a command.  Readline
checks if what has been typed is a directory, a variable, a hostname or
a tilde needing expansion.  There doesn't seem to be a split out for
determining whether a file is an executable if the OS is "lying" to it.

I understand that DLL's are libraries of executable code much like linux
'so', shared object files, but the libraries on linux are not generally
considered to be executable commands even though they contain executable
code.

Is there some reason cygwin needs to return DLL's as executables, as the
underlying OS doesn't require it (having no 'executable bit').  Does some
part of cygwin need to mark DLL's as executables?  Can it be made a bit
smarter and know that DLL's contain executable code but are not intended
to be executable on their own.  If a user needs to execute a DLL, maybe
they could do so with cygstart, and let the native OS handle the start?
It would make command completion cleaner, I think.  The same could be
true of other libraries that are currently marked as executables (ocx, etc).

Wouldn't the following test for executable be sufficient: check
for the endings in PATHEXT, and peek in files for #! type
scripts. 

Perhaps it would cause problems, but it could be decided that only
extension-less files would be peeked at, inside -- thus speeding up
checks to see if a file is executable and maybe speeding up find's
in general (like when building the locate database).  Conversely,
it could skip peeking in the file if it had a known
library (non-executable) or PATHEXT extension (executable).  This might
be too big a step, but it would be nice to at least have the
libraries not considered to be executable commands unless
specifically called out via cygstart.

Is this something 'you', the cygwin maintainers might consider and
something that 'you' the cygwin users would welcome or accept?

Please don't blow me off by asking me to submit the patches. 
I am not capable of doing so at this point and may never be. :-(

Linda



--
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019