delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2013/11/05/00:23:09

X-Recipient: archive-cygwin AT delorie DOT 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 AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
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
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 AT dyndns DOT 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 AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Cygwin exe magic does not understand .com extension?
Message-ID: <20131105052232.GA7141@ednor.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <3310368726 DOT 20131105025244 AT mtu-net DOT ru> <20131105035821 DOT GB3059 AT ednor DOT casa DOT cgf DOT cx>
MIME-Version: 1.0
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

- Raw text -


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