From: Angus L. <le...@ly...> - 2005-01-12 13:08:00
|
This might be a corner case, but I thought I'd flag it up anyway. It appears that getenv is chewing up my PATH. From a DOS cmd prompt, my PATH environment variable is: J:\MINSYS\HOME\ANGUS> echo %PATH% C:\PROGRA~1\Perl\bin\;C:\WINDOWS\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem; "C:\Program Files\Norton SystemWorks\Norton Ghost\" Note that the last entry here is enclosed in quotes. It's not me who put that entry in. I guess that it's safe to assume that Norton knew what they were doing. Doing the same thing from a MinSYS terminal: $ echo $PATH .:/usr/local/bin:/mingw/bin:/bin:/c/Program Files/Perl/bin/: /c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem: "C:/Program Files/Norton SystemWorks/Norton Ghost/" Ie, all is 'translated' as expected. However, all is not well when I try and grab the path using getenv: $ cat path.C #include <cstdlib> #include <iostream> int main() { char const * const path = getenv("PATH"); std::cout << "PATH is " << path << std::endl; return 0; } $ g++ -o path path.C $ ./path PATH is .;J:\MinSYS\local\bin;j:\mingw\bin; J:\MinSYS\bin;c:\Program Files\Perl\bin\; c:\WINDOWS\system32;c:\WINDOWS;c:\WINDOWS\System32\Wbem; "C;J:\MinSYS\Program Files\Norton SystemWorks\Norton Ghost\" See what nastiness it's done to the quoted entry? This was compiled using the MinGW g++ 3.4. I installed MinGW/MinSYS in mid December using all the latest bits and bobs on the download page. I guess (am no expert!) that the C library routines are to be found in libcrtdll.a, right? -rwxr-xr-x 1 angus angus 357874 Sep 5 15:23 libcrtdll.a HTH, -- Angus |
From: Angus L. <le...@ly...> - 2005-01-12 13:25:37
|
Angus Leeming wrote: > This was compiled using the MinGW g++ 3.4. I installed MinGW/MinSYS in > mid December using all the latest bits and bobs on the download page. I > guess (am no expert!) that the C library routines are to be found in > libcrtdll.a, right? > > -rwxr-xr-x 1 angus angus 357874 Sep 5 15:23 libcrtdll.a Being more specific, these are the packages I installed: $ ls -l /mnt/windowsC/Documents\ and\ Settings/Root/Desktop/MinGW\ downloads/ total 96244 -r-xr-xr-x 2 root root 14373888 Dec 13 09:08 binutils-2.15.91-20040904-1.tar -r-xr-xr-x 2 root root 8878080 Dec 13 09:13 gcc-core-3.4.2-20040916-1.tar -r-xr-xr-x 2 root root 17131520 Dec 13 09:16 gcc-g++-3.4.2-20040916-1.tar -r-xr-xr-x 2 root root 15219417 Dec 13 08:59 MinGW-3.1.0-1.exe -r-xr-xr-x 2 root root 4689920 Dec 13 09:00 mingw-runtime-3.5.tar -r-xr-xr-x 2 root root 4925440 Dec 13 09:02 mingw-utils-0.3.tar -r-xr-xr-x 2 root root 2808061 Dec 13 09:19 MSYS-1.0.10.exe -r-xr-xr-x 2 root root 2088960 Dec 13 09:22 msys-autoconf-2.59.tar -r-xr-xr-x 2 root root 1433600 Dec 13 09:23 msys-automake-1.8.2.tar -r-xr-xr-x 2 root root 10299560 Dec 13 09:29 msysDTK-1.0.1.exe -r-xr-xr-x 2 root root 2662400 Dec 13 09:24 msys-libtool-1.5.tar -r-xr-xr-x 2 root root 14028800 Dec 13 09:04 w32api-3.1.tar Regards, Angus |
From: Earnie B. <ea...@us...> - 2005-01-12 13:34:34
|
Angus, This is a nice bug report, but please put in in the bug tracker so that I don't lose it. See http://www.mingw.org/MinGWiki/index.php/ReportBugs for directions. <quote who="Angus Leeming"> > This might be a corner case, but I thought I'd flag it up anyway. It > appears that getenv is chewing up my PATH. > > From a DOS cmd prompt, my PATH environment variable is: > > J:\MINSYS\HOME\ANGUS> echo %PATH% > C:\PROGRA~1\Perl\bin\;C:\WINDOWS\system32;C:\WINDOWS; > C:\WINDOWS\System32\Wbem; > "C:\Program Files\Norton SystemWorks\Norton Ghost\" > > Note that the last entry here is enclosed in quotes. It's not me who put > that entry in. I guess that it's safe to assume that Norton knew what they > were doing. > > Doing the same thing from a MinSYS terminal: > > $ echo $PATH > .:/usr/local/bin:/mingw/bin:/bin:/c/Program Files/Perl/bin/: > /c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem: > "C:/Program Files/Norton SystemWorks/Norton Ghost/" > > Ie, all is 'translated' as expected. However, all is not well when I try > and grab the path using getenv: > > $ cat path.C > #include <cstdlib> > #include <iostream> > > int main() > { > char const * const path = getenv("PATH"); > std::cout << "PATH is " << path << std::endl; > > return 0; > } > > $ g++ -o path path.C > $ ./path > PATH is .;J:\MinSYS\local\bin;j:\mingw\bin; > J:\MinSYS\bin;c:\Program Files\Perl\bin\; > c:\WINDOWS\system32;c:\WINDOWS;c:\WINDOWS\System32\Wbem; > "C;J:\MinSYS\Program Files\Norton SystemWorks\Norton Ghost\" > > See what nastiness it's done to the quoted entry? > > This was compiled using the MinGW g++ 3.4. I installed MinGW/MinSYS in mid > December using all the latest bits and bobs on the download page. I guess > (am no expert!) that the C library routines are to be found in > libcrtdll.a, right? > > -rwxr-xr-x 1 angus angus 357874 Sep 5 15:23 libcrtdll.a > > HTH, > -- > Angus > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Mingw-msys mailing list > Min...@li... > https://lists.sourceforge.net/lists/listinfo/mingw-msys > Earnie -- http://www.mingw.org http://sourceforge.net/projects/mingw https://sourceforge.net/donate/index.php?user_id=15438 |
From: Angus L. <le...@ly...> - 2005-01-12 14:46:00
|
Earnie Boyd wrote: > Angus, > > This is a nice bug report, but please put in in the bug tracker so that I > don't lose it. See http://www.mingw.org/MinGWiki/index.php/ReportBugs for > directions. Ok. This is now bug 1100932 getenv chews PATH Regards, Angus |
From: Earnie B. <ea...@us...> - 2005-01-12 13:52:27
|
Rereading your report: <quote who="Angus Leeming"> -8<- > > This was compiled using the MinGW g++ 3.4. I installed MinGW/MinSYS in mid > December using all the latest bits and bobs on the download page. I guess > (am no expert!) that the C library routines are to be found in > libcrtdll.a, right? > > -rwxr-xr-x 1 angus angus 357874 Sep 5 15:23 libcrtdll.a > The C runtime is MSVCRT.DLL and its MinGW import library is libmsvcrt.a. CRTDLL.DLL was the first version used with the first release of Win95 it is very old and not maintained by MS. The MinGW gcc and binutils use -lmsvcrt as the system C runtime library by default. It is possible that the MSYS runtime which converts PATH to Windows format on execution of a non-MSYS binary has corrupted the environment string. As I said, put it in the bug tracker so I don't lose sight of it. Earnie -- http://www.mingw.org http://sourceforge.net/projects/mingw https://sourceforge.net/donate/index.php?user_id=15438 |