On 01/11/2012 02:08 PM, Janne Blomqvist wrote:
Checking for an absolute path is already done a few lines up. So if you prefer the kind of approach that you have in your patch, IMHO a more correct patch would be
I had a quick chat with Kai and decided to leave the lower part as is. However, I realized that the check for an absolute path is not correct for Windows. With the help of Kai I came up with the attached version.
OK for the trunk? Tobias
2012-01-11 Tobias Burnus <bur...@net-b.de> * runtime/main.c (store_exe_path): Fix absolute path detection for Windows. Index: libgfortran/runtime/main.c =================================================================== --- libgfortran/runtime/main.c (revision 183093) +++ libgfortran/runtime/main.c (working copy) @@ -105,15 +105,22 @@ store_exe_path (const char * argv0) } #endif - /* On the simulator argv is not set. */ - if (argv0 == NULL || argv0[0] == '/') + /* If the path is absolute or on an simulator where argv is not set. */ +#ifdef __MINGW32__ + if (argv0 == NULL + || ('A' <= argv0[0] && argv0[0] <= 'Z' && argv0[1] == ':') + || ('a' <= argv0[0] && argv0[0] <= 'z' && argv0[1] == ':') + || (argv0[0] == '/' && argv0[1] == '/') + || (argv0[0] == '\\' && argv0[1] == '\\')) +#else + if (argv0 == NULL || argv0[0] == DIR_SEPARATOR) +#endif { exe_path = argv0; please_free_exe_path_when_done = 0; return; } - memset (buf, 0, sizeof (buf)); #ifdef HAVE_GETCWD cwd = getcwd (buf, sizeof (buf)); if (!cwd)