Message-Id: Date: Mon, 3 Aug 98 14:36:39 MET DST From: Michel de Ruiter To: djgpp-workers AT delorie DOT com cc: dj AT delorie DOT com Subject: argv[0] behaviour. Precedence: bulk Hi, workers, I have noticed inconsistent behaviour in the value of the `argv[0]'-variable. Does anyone have comments about this? Say I have argv0.exe compiled from the following source: #include int main(int argc __attribute__((unused)), char *argv[]) { puts(argv[0]); return 0; } About _crt0_startup_flags, info/libc.inf says: `_CRT0_FLAG_USE_DOS_SLASHES' If set, reverse slashes (dos-style) are preserved in argv[0]. If not set, all reverse slashes are replaced with unix-style slashes. And `include/crt0.h' says: * The default is all flags off. But, the output differs when run from `make'. If I have the following makefile: all: @argv0 This results for instance in the following output, depending on if run from `make' or not and in which directory `argv0.exe' is: Command | Somewhere in %PATH% | In current directory --------+-------------------------------+----------------------------- argv0 | e:/djgpp/bin/argv0.exe | j:/share/mcsim/argv0.exe make | e:\djgpp\bin/argv0.exe | argv0.exe So, not "all reverse slashes are replaced with unix-style slashes", when run from `make'. Also, when run from the current directory, the path to the executable fails. Is this a bug in libc.a somewhere? A feature? Or is it a documentation bug? I've looked somewhat into it in the djlsr, and it appears to have a reason (args are set back to DOS-defaults if !proxy is used), but... what reason? -- Groeten, Michel. http://www.cs.vu.nl/~mdruiter ____________ \ /====\ / "You know, Beavis, you need things that suck, \/ \/ to have things that are cool", Butt-Head.