X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Thu, 23 Apr 2009 15:58:51 -0400 From: Christopher Faylor To: cygwin AT cygwin DOT com, ncokwqc02 AT sneakemail DOT com Subject: Re: detecting program invocation from a symbolic link Message-ID: <20090423195851.GA29258@ednor.casa.cgf.cx> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com, ncokwqc02 AT sneakemail DOT com References: <14974-38810 AT sneakemail DOT com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <14974-38810@sneakemail.com> User-Agent: Mutt/1.5.16 (2007-06-09) 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 Thu, Apr 23, 2009 at 07:18:40PM -0000, ncokwqc02 AT sneakemail DOT com wrote: >I have some C++ code that runs from the command line in a console >shell. It is designed to behave differently depending on whether it >was called directly by name or by a differently named symbolic link. >This is easy to check under Unix because argv[0] contains the name of >the first command line argument, which is either the executable name or >the name of the link. > >This doesn't work under Windows, however, because argv[0] always >contains the name of the program being called whether it is actually on >the command line or via a link. > >Even symbolic links created using 'ln -s' under Cygwin behave this way. >I'm wondering if there is a way around this problem. In other words, >any way for my C++ program to detect the name of the symbolic link if >one was used to invoke the executable. When a cygwin program B is run from a cygwin program A and cygwin program B is a symlink to program C, then when C is eventually run its argv[0] should be "B", like on UNIX. None of this works when running B from a non-cygwin program like the windows command prompt since the windows command prompt doesn't understand cygwin symlinks. So, AFAICT, Cygwin does like UNIX. If you are not seeing this behavior we need more details and a simple test case to reproduce the problem. -- 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/