=================================================================== RCS file: /cvs/djgpp/djgpp/src/libc/crt0/c1args.c,v retrieving revision 1.7 retrieving revision 1.8 diff -p -u -r1.7 -r1.8 --- djgpp/src/libc/crt0/c1args.c 1999/06/14 16:20:40 1.7 +++ /cvs/djgpp/djgpp/src/libc/crt0/c1args.c 2000/12/25 20:31:51 1.8 @@ -398,11 +398,34 @@ __crt0_setup_arguments(void) */ { char doscmd[128]; + char *cmdline; + movedata(_stubinfo->psp_selector, 128, ds, (int)doscmd, 128); - arglist = parse_bytes(doscmd+1, doscmd[0] & 0x7f, - (_crt0_startup_flags & _CRT0_FLAG_KEEP_QUOTES) == 0); + if ((doscmd[0] & 0x7f) != 127 || ((cmdline = getenv("CMDLINE")) == NULL)) + arglist = parse_bytes(doscmd + 1, doscmd[0] & 0x7f, + (_crt0_startup_flags & _CRT0_FLAG_KEEP_QUOTES)==0); + else + { + /* Command line is in the environment variable CMDLINE. */ + char stop_token; + + /* Skip over the name of the program. */ + if ((*cmdline == '\"') || (*cmdline == '\'')) + stop_token = *cmdline; + else + stop_token = ' '; + + /* FIXME: what about the case of 'foo\'bar'? */ + while (*cmdline != stop_token) + ++cmdline; + + ++cmdline; /* Skip over the stop token. */ + + arglist = parse_bytes(cmdline, strlen(cmdline), + (_crt0_startup_flags & _CRT0_FLAG_KEEP_QUOTES) == 0); + } } - + /* ** Check for !proxy. **