Mailing-List: contact cygwin-apps-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-apps-owner AT sourceware DOT cygnus DOT com List-Subscribe: List-Archive: List-Post: List-Help: , Delivered-To: mailing list cygwin-apps AT sources DOT redhat DOT com Date: Sun, 16 Jul 2000 00:38:24 -0400 From: Chris Faylor To: Robert Collins Cc: cygapp Subject: Re: two questions Message-ID: <20000716003824.A8880@cygnus.com> Reply-To: cygwin-apps AT sourceware DOT cygnus DOT com Mail-Followup-To: Robert Collins , cygapp References: <004801bfeed8$5a75f610$f7c723cb AT lifelesswks> <20000715234510 DOT A8476 AT cygnus DOT com> <005c01bfeede$10604c00$f7c723cb AT lifelesswks> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2i In-Reply-To: <005c01bfeede$10604c00$f7c723cb@lifelesswks>; from robert.collins@itdomain.com.au on Sun, Jul 16, 2000 at 02:26:50PM +1000 On Sun, Jul 16, 2000 at 02:26:50PM +1000, Robert Collins wrote: >Sorry, I should explain more > >exec("C:/cygwin/usr/local/program.exe") fails >exec("C:\\cygwin\usr\local\program.exe") works (\\ c-style escaped) > >and program.exe receives the first format from start|run, and from >shortcuts, or double-clicking on a program. So having a program that calls >exec based in it's own path will need an library call equivalent to >cygpath -u (which looks to be cygwin_conv_to_posix_path(name, >convertedname), or for argv[0] to be a little more consistent. 'exec' is not a cygwin function. Maybe this function is having problems with the path that you are specifying above. The 'exec[lv]*' family of functions should (and as far as I can tell, do) operate correctly with any valid windows or cygwin path. The short program below illustrates this: #include int main (int argc, char **argv) { fprintf (stderr, "argv[0] '%s', argv[1] '%s'\n", argv[0], argv[1]); sleep(10); execl (argv[1], argv + 2); } When I run this from Start->Run I notice that argv[0] has quotes around it, unlike what happens when running from the command shell. Cygwin was preserving the quotes and that thwarts its later attempt to translate the windows path version of argv[0] into a posix path. I've checked in a change to cygwin to cause it to strip the quotes from argv[0]. So, I'm not sure why you are having problems running the c:/cygwin/usr/local/program.exe. It works for me, and I would expect that it would. cgf >I've put cygwin_conv_to_posix_path in the program I'm working on, All i'm >saying is that a longer term solution might be to put something in the >startup code.. > >Rob > > >----- Original Message ----- >From: "Chris Faylor" >To: "cygapp" >Sent: Sunday, July 16, 2000 1:45 PM >Subject: Re: two questions > > >> On Sun, Jul 16, 2000 at 01:45:56PM +1000, Robert Collins wrote: >> >1)Start|run, c:\cygwin\usr\local\program.exe >> >2)start|run, cmd (running win2k). then (from any drive) >> >"c:\cygwin\usr\local\program.exe" >> > >> >in 1, argv[0] is C:/cygwin/usr/local/program.exe >> >in 2, argv[0] is /usr/local/program.exe >> > >> >Note that bash was not the shell in 2! I'm quite happy to code around >this >> >myself, but if someone wanted to provide a pointer as to where I should >> >place it I'm happy to code around it for cygwin.. >> > >> >The reason it's a issue, is that I want to call >exec(argv[0],newswitches), >> >which the above behaviour scuttles.. >> >> Why? >> >> cgf >> -- cgf AT cygnus DOT com Cygnus Solutions, a Red Hat company http://sourceware.cygnus.com/ http://www.redhat.com/