The patch I believe you refer to is below. I couldn't reproduce your second problem, with $@. If you can construct a test case that reliably reproduces it, I'm interested. Thanks.
--- make-3.79.1/job.c Fri Jun 23 11:54:56 2000 +++ make/job.c Wed May 2 01:17:08 2001 @@ -895,8 +895,14 @@ ++p; } - /* Update the file's command flags with any new ones we found. */ - child->file->cmds->lines_flags[child->command_line - 1] |= flags; + /* Update the file's command flags with any new ones we found. We only + keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are + now marking more commands recursive than should be in the case of + multiline define/endef scripts where only one line is marked "+". In + order to really fix this, we'll have to keep a lines_flags for every + actual line, after expansion. */ + child->file->cmds->lines_flags[child->command_line - 1] + |= flags & COMMANDS_RECURSE; /* Figure out an argument list from this command line. */ @@ -1580,6 +1586,8 @@ } user_access (); + DB (DB_JOBS, ("Current system load = %f (max requested = %f)\n", + load, max_load_average)); return load >= max_load_average; #endif } @@ -2421,7 +2429,7 @@ char* sh_chars; char** sh_cmds; #else /* WINDOWS32 */ - static char sh_chars[] = "#;\"*?[]&|<>(){}$`^"; + static char sh_chars[] = "#;\"*?[]&|<>(){}$`^~"; static char *sh_cmds[] = { "cd", "eval", "exec", "exit", "login", "logout", "set", "umask", "wait", "while", "for", "case", "if", ":", ".", "break", "continue",
-- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://www.paulandlesley.org/gmake/ "Please remain calm...I may be mad, but I am a professional." --Mad Scientist