bodewig 2003/04/02 06:53:23
Modified: . WHATSNEW src/main/org/apache/tools/ant/taskdefs Execute.java Log: Don't hardcode /usr/bin/env for Unix. PR: 17642 Revision Changes Path 1.385 +4 -1 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.384 retrieving revision 1.385 diff -u -r1.384 -r1.385 --- WHATSNEW 2 Apr 2003 12:00:27 -0000 1.384 +++ WHATSNEW 2 Apr 2003 14:53:20 -0000 1.385 @@ -79,6 +79,9 @@ * <antlr> will now recompile your grammar if the supergrammar has changed. Bugzilla Report 12691. +* <property env> will now work on Unices with /bin/env instead of + /usr/bin/env. Bugzilla Report 17642. + Other changes: -------------- * Shipped XML parser is now Xerces 2.4.0 @@ -145,7 +148,7 @@ * <tarfileset> has a new dirmode attribute to specify the permissions for directories. -* <fixcrlf>'s eol attribute now also understand "mac", "unix" and "dos". +* <fixcrlf>'s eol attribute now also understands "mac", "unix" and "dos". * <classfileset> now picks up dependencies of the form MyClass.class. This works for the code generated by the Sun java compiler. It may not work for 1.53 +16 -12 ant/src/main/org/apache/tools/ant/taskdefs/Execute.java Index: Execute.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Execute.java,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- Execute.java 14 Mar 2003 16:01:03 -0000 1.52 +++ Execute.java 2 Apr 2003 14:53:22 -0000 1.53 @@ -229,19 +229,23 @@ String[] cmd = {"command.com", "/c", "set" }; return cmd; } - } else if (Os.isFamily("z/os")) { - String[] cmd = {"/bin/env"}; - return cmd; - } else if (Os.isFamily("tandem")) { -// String[] cmd = {"/bin/sh -c env"}; - String[] cmd = {"/bin/env"}; - return cmd; - } else if (Os.isFamily("unix")) { - // Generic UNIX - // Alternatively one could use: /bin/sh -c env - String[] cmd = {"/usr/bin/env"}; + } else if (Os.isFamily("z/os") || Os.isFamily("tandem") + || Os.isFamily("unix")) { + // On most systems one could use: /bin/sh -c env + + // Some systems have /bin/env, others /usr/bin/env, just try + String[] cmd = new String[1]; + if (new File("/bin/env").canRead()) { + cmd[0] = "/bin/env"; + } else if (new File("/usr/bin/env").canRead()) { + cmd[0] = "/usr/bin/env"; + } else { + // rely on PATH + cmd[0] = "env"; + } return cmd; } else if (Os.isFamily("netware") || Os.isFamily("os/400")) { + // rely on PATH String[] cmd = {"env"}; return cmd; } else {