Mail Archives: cygwin/2003/04/24/12:20:50
--------------080301020500010408000405
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Here is the code that is relevant to the problem:
int WINAPI WinMain
(
HINSTANCE,
HINSTANCE,
LPSTR pszArguments,
int
)
{
std::string strTitle(pszArguments);
...
If I compile this with the Borland compiler and then lauch the program
from bash using: ./Program.exe Filename, then pszArguments (and
consequently strTitle) just equals "Filename".
If I compile with Cygwin and launch the file the same way, pszArguments
equals something like: "Directory\\Directory\\Program.exe\" Filename "
pszArgument doesn't even contain the full path to the executable. It
starts partway through the path name, containing only the ending portion
of one of the directories in the path name.
I don't really care about the executable path name. All I want is the
filename, like what I get when I compile with Borland or Microsoft.
Elfyn McBratney wrote:
>>>>I have written a Windows application that expects a file name as a
>>>>command line argument. If I compile the program with a either the
>>>>Borland or Micrsoft compilers I get just the file name as the command
>>>>line argument when I run the program.
>>>>
>>>>However if I compile the program with the Cygwin compiler I get some
>>>>like the following for the command line argument when I run the program:
>>>>
>>>>"Directory\\Directory\\Program.exe\" Filename "
>>>>
>>>>
>>
>>
>>
>>Need just a bit more information that that. What is the code you are using?
>>WinMain?
>>
>>
>>
>
>
>>>>This is make things akward. I'm not sure why Cygwin is doing this when
>>>>other compilers don't.
>>>>
>>>>Does Cygwin provide an API or other strategy to deal with this scenario?
>>>>
>>>>
>>
>>
>>
>>Well, again that depends. My name is luke and I need to see the source. ;-)
>>For example, this mingw (AKA Windows native) application
>>
>>--- CUT HERE ---
>>#include <stdio.h>
>>
>>void
>>main (int argc, char **argv)
>>{
>> printf ("My name is %s,\nHello, %s\n",
>> argv[0] /* The program (executable file) name */,
>> argv[1] ? argv[1] : "No name" /* First argument (if) passed to
>>the program */);
>>}
>>--- CUT HERE ---
>>
>>Will print out the name of the program. On Cygwin
>>
>>
>>
>
>
>>>>My name is ./test1
>>>>Hello, Zippy
>>>>
>>>>
>>
>>
>>
>>and on Windows (from a command prompt)
>>
>>
>>
>
>
>>>>My name is G:\Cygwin\root\tmp\test1.exe
>>>>Hello, George and Bungle
>>>>
>>>>
>>
>>
>>
>>Elfyn
>>
>>
>>
>
--------------080301020500010408000405--
- Raw text -