X-Recipient: archive-cygwin@delorie.com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
	:list-unsubscribe:list-subscribe:list-archive:list-post
	:list-help:sender:date:from:to:subject:message-id:reply-to
	:references:mime-version:content-type:in-reply-to; q=dns; s=
	default; b=Oq2CpdDK67V+4SoE/cE9FAQqp4hBleQ4RlUieZMG1fe93fAkC1EV7
	+9s6TRFPXeaQE4n+KnM1qrnlTYSHKPjba/BTMfbpHmhrgqhr9pquo8PyDo5s+9Zd
	l4Ro9juOkaURXnM2EErmoJMY6/1/ABsxSyRVpw0ZBgdiI8KcLWY+M8=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
	:list-unsubscribe:list-subscribe:list-archive:list-post
	:list-help:sender:date:from:to:subject:message-id:reply-to
	:references:mime-version:content-type:in-reply-to; s=default;
	 bh=r2WCfWvkMqC8LMUqAuSqPnkOYjs=; b=QllDIPs7Vc1raEYS+lzvsQuSDaX9
	6huPr8lgRNEcWIutiWIvj+Fr5LJdMJkqA0iFJiYfgWeAMBLG4/3PLZ5STuVGWth6
	/L2NvUqFADdZRttVUftMExsPJNOv+Re+jeAfQomuJajFB1+398tZunTyN598+jjf
	ALXGigjBGqqRSZM=
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=1.2 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2
X-HELO: mho-02-ewr.mailhop.org
X-Mail-Handler: Dyn Standard SMTP by Dyn
X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information)
X-MHO-User: U2FsdGVkX19wxTXhljWXJozoEJ6Gc/l9
Date: Tue, 5 Nov 2013 00:22:32 -0500
From: Christopher Faylor <cgf-use-the-mailinglist-please@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: Cygwin exe magic does not understand .com extension?
Message-ID: <20131105052232.GA7141@ednor.casa.cgf.cx>
Reply-To: cygwin@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
References: <3310368726.20131105025244@mtu-net.ru> <20131105035821.GB3059@ednor.casa.cgf.cx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20131105035821.GB3059@ednor.casa.cgf.cx>
User-Agent: Mutt/1.5.20 (2009-06-14)

On Mon, Nov 04, 2013 at 10:58:21PM -0500, Christopher Faylor wrote:
>On Tue, Nov 05, 2013 at 02:52:44AM +0400, Andrey Repin wrote:
>>Greetings, All!
>>
>>$ mode<Tab>
>>mode.com     modemui.dll  modex.dll
>
>That would be /bin/sh exe magic from the looks of it.  It is probably
>just trying to find anything with an executable bit set, just like on
>Linux.
>
>>$ mode
>>bash: mode: command not found
>>
>>Now, I see two issues.
>>First, it is that it see .dll files as executables. Which is true in essence,
>>but rather suspicious, as .dll files are normally not directly executable.
>>Would really like an explanation for this behavior.
>>
>>Second, is that it actually see mode.com, but unable to execute it.
>
>It's likely that "mode.com" would execute it.
>
>>P.S.
>>$ set | grep PATHEXT
>>PATHEXT='.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1'
>
>% cd /cygwin/sources
>% grep -B17 PATHEXT *(.)
>environ.cc-/* Minimal list of Windows vars which must be converted to uppercase.
>environ.cc-   Either for POSIX compatibility of for backward compatibility with
>environ.cc-   existing applications. */
>environ.cc-static struct renv {
>environ.cc-	const char *name;
>environ.cc-	const size_t namelen;
>environ.cc-} renv_arr[] = {
>environ.cc-	{ NL("ALLUSERSPROFILE=") },		// 0
>environ.cc-	{ NL("COMMONPROGRAMFILES=") },		// 1
>environ.cc-	{ NL("COMPUTERNAME=") },
>environ.cc-	{ NL("COMSPEC=") },
>environ.cc-	{ NL("HOME=") },			// 4
>environ.cc-	{ NL("HOMEDRIVE=") },
>environ.cc-	{ NL("HOMEPATH=") },
>environ.cc-	{ NL("NUMBER_OF_PROCESSORS=") },	// 7
>environ.cc-	{ NL("OS=") },				// 8
>environ.cc-	{ NL("PATH=") },			// 9
>environ.cc:	{ NL("PATHEXT=") },
>
>
>i.e., the only thing Cygwin does with PATHEXT is convert it to upper
>case.

Further clarification: I went to the effort of checking the source for
PATHEXT but didn't do so for .com.  I thought we'd gotten rid of .com
processing but we hadn't.

Cygwin will execute mode on the path using execvp.  It won't
automatically add a .com extension to an open or stat call.  Only .exe
is really treated specially wrt filename lookups so if bash is doing its
own PATH scanning it won't find 'mode' with no extension.  However, if
you type /path/to/mode it will work without the extension.

.com files are a dying breed so please don't ask to further complicate
Cygwin's path logic to add support.

cgf

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

