X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Wed, 4 Aug 2010 13:26:30 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: How to pass parameters to a windows application Message-ID: <20100804112630.GT8324@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <7B35B979DF6941628DE9A6D131AA3909 AT phoenix> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: 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 On Aug 3 12:26, Andy Koppe wrote: > On 2 August 2010 12:56, Jason Pyeron wrote: > >> 'cygstart'. > > > > It does not play nice with unc paths. Starting by cmd.exe /c start path does. > > Suggestions? > > > > > > jpyeron AT phoenix /projects/cdnetdb/private/fxiao/cdnet > > $ cygstart . > > > > jpyeron AT phoenix /projects/cdnetdb/private/fxiao/cdnet > > $ cygstart //host67/inst > > Unable to start '\\?\UNC\host67\inst': There is no application associated with > > the given file name extension. > > It's a bug. > > Cygstart uses cygwin_conv_path to convert to a Windows path, which > produces UNC paths for network paths. Trouble is, the ShellExecute > API, which is used to do the actual opening, doesn't appear to support > UNC paths. > > Cygpath already turns '\\?\UNC\' at the start of a path into plain ol > '\\' (unless the resulting path would be longer than MAX_PATH, in > which case the UNC path is mandatory). Mintty does the same thing when > a file is opened with Ctrl+click. > > So cygstart would need to do the same. And mkshortcut too (because the > APIs involved in creating shortcuts have trouble with long paths too). > Basically, any program that passes a path converted with > cygwin_conv_path to Windows APIs might have this issue. It's a shame that not even the official Win32 APIs are always clean in terms of the long path name definition. > Therefore I'm wondering whether it wouldn't be better to address this > once and for all in cygwin_conv_path itself by doing what cygpath > does: assuming the resulting path fits into MAX_PATH, drop "\\?\" from > all long paths and turn "UNC\" into "\\". This is already implemented in cygwin_conv_path for some time, but only for the CCP_POSIX_TO_WIN_A case. I never expected that this would also be necessary for the wide char case. Anyway, I applied a matching patch. As long as the resulting wide char path is not longer than MAX_PATH, it will be stripped of the long path prefix. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- 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