From: Gert D. <dri...@us...> - 2003-11-30 15:40:28
|
Update of /cvsroot/nant/nant/src/NAnt.Core/Tasks In directory sc8-pr-cvs1:/tmp/cvs-serv2428 Modified Files: ExecTask.cs Log Message: fix for bug report #648595: - if specified program contains path information, do not scan the PATH - if no path information is specified, first check if the given program does not exist in the current project's base directory before passing it on to allow scan of directory on the PATH Index: ExecTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.Core/Tasks/ExecTask.cs,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** ExecTask.cs 17 Oct 2003 07:46:22 -0000 1.21 --- ExecTask.cs 30 Nov 2003 15:40:24 -0000 1.22 *************** *** 119,129 **** /// Gets the filename of the external program to start. /// </summary> ! /// <value>The filename of the external program.</value> public override string ProgramFileName { get { ! if (_baseDirectory == null || Path.IsPathRooted(FileName)) { return FileName; } else { ! return Path.Combine(Path.GetFullPath(BaseDirectory), FileName); } } --- 119,151 ---- /// Gets the filename of the external program to start. /// </summary> ! /// <value> ! /// The filename of the external program. ! /// </value> public override string ProgramFileName { get { ! if (Path.IsPathRooted(FileName)) { return FileName; + } else if (_baseDirectory == null) { + // resolve program to full path relative to project's base + // directory + string filePath = Path.GetFullPath(Path.Combine(Path.GetFullPath( + BaseDirectory), FileName)); + // check whether the specified program contains a directory name + if (!StringUtils.IsNullOrEmpty(Path.GetDirectoryName(FileName))) { + // no need to scan the PATH, as the specified progrram + // contains directory information + return filePath; + } else if (File.Exists(filePath)) { + // the specified program is located in the current project's + // base directory + return filePath; + } else { + // just use the filename to scan the directories on the + // PATH + return FileName; + } } else { ! return Path.GetFullPath(Path.Combine(Path.GetFullPath( ! BaseDirectory), FileName)); } } |