diff --git a/proposal/myrmidon/src/java/org/apache/antlib/nativelib/Exec.java b/proposal/myrmidon/src/java/org/apache/antlib/nativelib/Exec.java
index 63e473cb4..166b4f0f3 100644
--- a/proposal/myrmidon/src/java/org/apache/antlib/nativelib/Exec.java
+++ b/proposal/myrmidon/src/java/org/apache/antlib/nativelib/Exec.java
@@ -72,8 +72,7 @@ public class Exec
}
/**
- * Only execute the process if os.name
is included in this
- * string.
+ * Only execute the process if running on the specified OS family.
*/
public void setOs( final String os )
{
diff --git a/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java b/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java
index 6cadccba7..1a3fdcf6a 100644
--- a/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java
+++ b/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java
@@ -14,6 +14,7 @@ import java.util.Iterator;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
import org.apache.aut.vfs.FileType;
+import org.apache.aut.vfs.NameScope;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.AbstractTask;
@@ -129,9 +130,10 @@ public class CopyFilesTask
continue;
}
- // TODO - use scope here, to make sure that the result
- // is a descendent of the dest dir
- final FileObject destFile = m_destDir.resolveFile( path );
+ // Locate the destination file
+ final FileObject destFile = m_destDir.resolveFile( path, NameScope.DESCENDENT );
+
+ // Copy the file across
copyFile( srcFile, destFile );
}
}
diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java
index 12cc6fbe1..3dfcfac06 100644
--- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java
+++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java
@@ -7,9 +7,11 @@
*/
package org.apache.aut.nativelib;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
import java.util.Locale;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
+import java.util.Set;
/**
* Class to help determining the OS.
@@ -20,9 +22,6 @@ import org.apache.avalon.excalibur.i18n.Resources;
*/
public class Os
{
- private final static Resources REZ =
- ResourceManager.getPackageResources( Os.class );
-
private final static String OS_NAME =
System.getProperty( "os.name" ).toLowerCase( Locale.US );
private final static String OS_ARCH =
@@ -31,6 +30,123 @@ public class Os
System.getProperty( "os.version" ).toLowerCase( Locale.US );
private final static String PATH_SEP =
System.getProperty( "path.separator" );
+ private final static OsFamily OS_FAMILY;
+ private final static OsFamily[] OS_ALL_FAMILIES;
+
+ /** All Windows based OSes. */
+ public final static OsFamily OS_FAMILY_WINDOWS = new OsFamily( "windows" );
+
+ /** All DOS based OSes. */
+ public final static OsFamily OS_FAMILY_DOS
+ = new OsFamily( "dos", new OsFamily[]{OS_FAMILY_WINDOWS} );
+
+ /** All Windows NT based OSes. */
+ public final static OsFamily OS_FAMILY_WINNT
+ = new OsFamily( "nt", new OsFamily[]{OS_FAMILY_WINDOWS} );
+
+ /** All Windows 9x based OSes. */
+ public final static OsFamily OS_FAMILY_WIN9X
+ = new OsFamily( "win9x", new OsFamily[]{OS_FAMILY_WINDOWS, OS_FAMILY_DOS} );
+
+ /** OS/2 */
+ public final static OsFamily OS_FAMILY_OS2
+ = new OsFamily( "os/2", new OsFamily[]{OS_FAMILY_DOS} );
+
+ /** Netware */
+ public final static OsFamily OS_FAMILY_NETWARE
+ = new OsFamily( "netware" );
+
+ /** All UNIX based OSes. */
+ public final static OsFamily OS_FAMILY_UNIX
+ = new OsFamily( "unix" );
+
+ /** All Mac based OSes. */
+ public final static OsFamily OS_FAMILY_MAC
+ = new OsFamily( "mac" );
+
+ /** OSX */
+ public final static OsFamily OS_FAMILY_OSX
+ = new OsFamily( "osx", new OsFamily[]{OS_FAMILY_UNIX, OS_FAMILY_MAC} );
+
+ private final static OsFamily[] ALL_FAMILIES =
+ {
+ OS_FAMILY_DOS,
+ OS_FAMILY_MAC,
+ OS_FAMILY_NETWARE,
+ OS_FAMILY_OS2,
+ OS_FAMILY_OSX,
+ OS_FAMILY_UNIX,
+ OS_FAMILY_WINDOWS,
+ OS_FAMILY_WINNT,
+ OS_FAMILY_WIN9X
+ };
+
+ static
+ {
+ // Determine the most specific OS family
+ if( OS_NAME.indexOf( "windows" ) > -1 )
+ {
+ if( OS_NAME.indexOf( "xp" ) > -1
+ || OS_NAME.indexOf( "2000" ) > -1
+ || OS_NAME.indexOf( "nt" ) > -1 )
+ {
+ OS_FAMILY = OS_FAMILY_WINNT;
+ }
+ else
+ {
+ OS_FAMILY = OS_FAMILY_WIN9X;
+ }
+ }
+ else if( OS_NAME.indexOf( "os/2" ) > -1 )
+ {
+ OS_FAMILY = OS_FAMILY_OS2;
+ }
+ else if( OS_NAME.indexOf( "netware" ) > -1 )
+ {
+ OS_FAMILY = OS_FAMILY_NETWARE;
+ }
+ else if( OS_NAME.indexOf( "mac" ) > -1 )
+ {
+ if( OS_NAME.endsWith( "x" ) )
+ {
+ OS_FAMILY = OS_FAMILY_OSX;
+ }
+ else
+ {
+ OS_FAMILY = OS_FAMILY_MAC;
+ }
+ }
+ else if( PATH_SEP.equals( ":" ) )
+ {
+ OS_FAMILY = OS_FAMILY_UNIX;
+ }
+ else
+ {
+ OS_FAMILY = null;
+ }
+
+ // Otherwise, unknown OS
+
+ // Determine all families the current OS belongs to
+ Set allFamilies = new HashSet();
+ if( OS_FAMILY != null )
+ {
+ List queue = new ArrayList();
+ queue.add( OS_FAMILY );
+ while( queue.size() > 0 )
+ {
+ final OsFamily family = (OsFamily)queue.remove( 0 );
+ allFamilies.add( family );
+ final OsFamily[] families = family.getFamilies();
+ for( int i = 0; i < families.length; i++ )
+ {
+ OsFamily parent = families[ i ];
+ queue.add( parent );
+ }
+ }
+ }
+ OS_ALL_FAMILIES = (OsFamily[])allFamilies.toArray( new OsFamily[ allFamilies.size() ] );
+ }
/**
* Private constructor to block instantiation.
@@ -45,34 +161,36 @@ public class Os
*/
public static boolean isVersion( final String version )
{
- return isOs( null, null, null, version );
+ return isOs( (OsFamily)null, null, null, version );
}
/**
* Determines if the OS on which Ant is executing matches the given OS
* architecture.
- *
- * @param arch Description of Parameter
- * @return The Arch value
*/
public static boolean isArch( final String arch )
{
- return isOs( null, null, arch, null );
+ return isOs( (OsFamily)null, null, arch, null );
}
/**
* Determines if the OS on which Ant is executing matches the given OS
* family.
- *
- * @param family Description of Parameter
- * @return The Family value
- * @since 1.5
*/
public static boolean isFamily( final String family )
{
return isOs( family, null, null, null );
}
+ /**
+ * Determines if the OS on which Ant is executing matches the given OS
+ * family.
+ */
+ public static boolean isFamily( final OsFamily family )
+ {
+ return isOs( family, null, null, null );
+ }
+
/**
* Determines if the OS on which Ant is executing matches the given OS name.
*
@@ -82,7 +200,7 @@ public class Os
*/
public static boolean isName( final String name )
{
- return isOs( null, name, null, null );
+ return isOs( (OsFamily)null, name, null, null );
}
/**
@@ -99,6 +217,24 @@ public class Os
final String name,
final String arch,
final String version )
+ {
+ return isOs( getFamily( family ), name, arch, version );
+ }
+
+ /**
+ * Determines if the OS on which Ant is executing matches the given OS
+ * family, name, architecture and version
+ *
+ * @param family The OS family
+ * @param name The OS name
+ * @param arch The OS architecture
+ * @param version The OS version
+ * @return The Os value
+ */
+ public static boolean isOs( final OsFamily family,
+ final String name,
+ final String arch,
+ final String version )
{
if( family != null || name != null || arch != null || version != null )
{
@@ -115,6 +251,25 @@ public class Os
}
}
+ /**
+ * Locates an OsFamily by name (case-insensitive).
+ *
+ * @return the OS family, or null if not found.
+ */
+ public static OsFamily getFamily( final String name )
+ {
+ for( int i = 0; i < ALL_FAMILIES.length; i++ )
+ {
+ final OsFamily osFamily = ALL_FAMILIES[ i ];
+ if( osFamily.getName().equalsIgnoreCase( name ) )
+ {
+ return osFamily;
+ }
+ }
+
+ return null;
+ }
+
private static boolean versionMatches( final String version )
{
boolean isVersion = true;
@@ -145,42 +300,20 @@ public class Os
return isName;
}
- private static boolean familyMatches( final String family )
+ private static boolean familyMatches( final OsFamily family )
{
- boolean isFamily = true;
- if( family != null )
+ if( family == null )
{
- if( family.equals( "windows" ) )
- {
- isFamily = OS_NAME.indexOf( "windows" ) > -1;
- }
- else if( family.equals( "os/2" ) )
- {
- isFamily = OS_NAME.indexOf( "os/2" ) > -1;
- }
- else if( family.equals( "netware" ) )
- {
- isFamily = OS_NAME.indexOf( "netware" ) > -1;
- }
- else if( family.equals( "dos" ) )
- {
- isFamily = PATH_SEP.equals( ";" ) && !isFamily( "netware" );
- }
- else if( family.equals( "mac" ) )
- {
- isFamily = OS_NAME.indexOf( "mac" ) > -1;
- }
- else if( family.equals( "unix" ) )
- {
- isFamily = PATH_SEP.equals( ":" ) &&
- ( !isFamily( "mac" ) || OS_NAME.endsWith( "x" ) );
- }
- else
+ return false;
+ }
+ for( int i = 0; i < OS_ALL_FAMILIES.length; i++ )
+ {
+ final OsFamily osFamily = OS_ALL_FAMILIES[ i ];
+ if( family == osFamily )
{
- final String message = REZ.getString( "unknown-os-family", family );
- throw new IllegalArgumentException( message );
+ return true;
}
}
- return isFamily;
+ return false;
}
}
diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/OsFamily.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/OsFamily.java
new file mode 100644
index 000000000..c8532d656
--- /dev/null
+++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/OsFamily.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) The Apache Software Foundation. All rights reserved.
+ *
+ * This software is published under the terms of the Apache Software License
+ * version 1.1, a copy of which has been included with this distribution in
+ * the LICENSE.txt file.
+ */
+package org.apache.aut.nativelib;
+
+/**
+ * An enumerated type, which represents an OS family.
+ *
+ * @author Adam Murdoch
+ * @version $Revision$ $Date$
+ */
+public final class OsFamily
+{
+ private final String m_name;
+ private final OsFamily[] m_families;
+
+ OsFamily( final String name )
+ {
+ m_name = name;
+ m_families = new OsFamily[0];
+ }
+
+ OsFamily( final String name, final OsFamily[] families )
+ {
+ m_name = name;
+ m_families = families;
+ }
+
+ /**
+ * Returns the name of this family.
+ */
+ public String getName()
+ {
+ return m_name;
+ }
+
+ /**
+ * Returns the OS families that this family belongs to.
+ */
+ public OsFamily[] getFamilies()
+ {
+ return m_families;
+ }
+}
diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java
index 345e89dd9..65c994875 100644
--- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java
+++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/DefaultExecManager.java
@@ -11,7 +11,6 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Locale;
import java.util.Properties;
import org.apache.aut.nativelib.ExecException;
import org.apache.aut.nativelib.ExecManager;
@@ -174,37 +173,28 @@ public class DefaultExecManager
{
CommandLauncher launcher = null;
- if( Os.isFamily( "mac" ) )
+ if( Os.isFamily( Os.OS_FAMILY_MAC ) )
{
// Mac
launcher = new MacCommandLauncher();
}
- else if( Os.isFamily( "os/2" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_OS2 ) )
{
// OS/2 - use same mechanism as Windows 2000
launcher = new WinNTCommandLauncher();
}
- else if( Os.isFamily( "windows" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_WINNT ) )
{
- // Windows. Need to determine which JDK we're running in
-
- // Determine if we're running under 2000/NT or 98/95
- final String osname =
- System.getProperty( "os.name" ).toLowerCase( Locale.US );
-
- if( osname.indexOf( "nt" ) >= 0 || osname.indexOf( "2000" ) >= 0 )
- {
- // Windows 2000/NT
- launcher = new WinNTCommandLauncher();
- }
- else
- {
- // Windows 98/95 - need to use an auxiliary script
- final String script = resolveCommand( homeDir, "bin/antRun.bat" );
- launcher = new ScriptCommandLauncher( script );
- }
+ // Windows 2000/NT
+ launcher = new WinNTCommandLauncher();
+ }
+ else if( Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
+ {
+ // Windows 98/95 - need to use an auxiliary script
+ final String script = resolveCommand( homeDir, "bin/antRun.bat" );
+ launcher = new ScriptCommandLauncher( script );
}
- else if( Os.isFamily( "netware" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
// NetWare. Need to determine which JDK we're running in
final String perlScript = resolveCommand( homeDir, "bin/antRun.pl" );
diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java
index 2452c719d..c21a9f5bc 100644
--- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java
+++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/Environment.java
@@ -12,14 +12,13 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
-import java.util.Locale;
import java.util.Properties;
import org.apache.aut.nativelib.ExecException;
import org.apache.aut.nativelib.ExecManager;
import org.apache.aut.nativelib.ExecMetaData;
import org.apache.aut.nativelib.Os;
-import org.apache.avalon.excalibur.util.StringUtil;
import org.apache.avalon.excalibur.io.IOUtil;
+import org.apache.avalon.excalibur.util.StringUtil;
/**
* This is the class that can be used to retrieve the environment
@@ -178,33 +177,27 @@ final class Environment
private static String[] getEnvCommand()
throws ExecException
{
- if( Os.isFamily( "os/2" ) )
+ if( Os.isFamily( Os.OS_FAMILY_OS2 ) )
{
// OS/2 - use same mechanism as Windows 2000
return CMD_EXE;
}
- else if( Os.isFamily( "windows" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_WINNT ) )
{
- final String osname =
- System.getProperty( "os.name" ).toLowerCase( Locale.US );
- // Determine if we're running under 2000/NT or 98/95
- if( osname.indexOf( "nt" ) >= 0 || osname.indexOf( "2000" ) >= 0 )
- {
- // Windows 2000/NT
- return CMD_EXE;
- }
- else
- {
- // Windows 98/95 - need to use an auxiliary script
- return COMMAND_COM;
- }
+ // Windows 2000/NT
+ return CMD_EXE;
+ }
+ else if( Os.isFamily( Os.OS_FAMILY_WINDOWS) )
+ {
+ // Windows 98/95 - need to use an auxiliary script
+ return COMMAND_COM;
}
- else if( Os.isFamily( "unix" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_UNIX ) )
{
// Generic UNIX
return ENV_CMD;
}
- else if( Os.isFamily( "netware" ) )
+ else if( Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
return ENV_RAW;
}
diff --git a/proposal/myrmidon/src/java/org/apache/aut/tar/TarEntry.java b/proposal/myrmidon/src/java/org/apache/aut/tar/TarEntry.java
index 6803cf455..e9fca9443 100644
--- a/proposal/myrmidon/src/java/org/apache/aut/tar/TarEntry.java
+++ b/proposal/myrmidon/src/java/org/apache/aut/tar/TarEntry.java
@@ -9,6 +9,7 @@ package org.apache.aut.tar;
import java.io.File;
import java.util.Date;
+import org.apache.aut.nativelib.Os;
/**
* This class represents an entry in a Tar archive. It consists of the entry's
@@ -178,37 +179,29 @@ public class TarEntry
m_file = file;
String name = file.getPath();
- final String osname = System.getProperty( "os.name" );
- if( osname != null )
+ // Strip off drive letters!
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS) )
{
- // Strip off drive letters!
- // REVIEW Would a better check be "(File.separator == '\')"?
- final String win32Prefix = "Windows";
- final String prefix = osname.substring( 0, win32Prefix.length() );
-
- if( prefix.equalsIgnoreCase( win32Prefix ) )
+ if( name.length() > 2 )
{
- if( name.length() > 2 )
+ final char ch1 = name.charAt( 0 );
+ final char ch2 = name.charAt( 1 );
+
+ if( ch2 == ':' &&
+ ( ( ch1 >= 'a' && ch1 <= 'z' ) ||
+ ( ch1 >= 'A' && ch1 <= 'Z' ) ) )
{
- final char ch1 = name.charAt( 0 );
- final char ch2 = name.charAt( 1 );
-
- if( ch2 == ':' &&
- ( ( ch1 >= 'a' && ch1 <= 'z' ) ||
- ( ch1 >= 'A' && ch1 <= 'Z' ) ) )
- {
- name = name.substring( 2 );
- }
+ name = name.substring( 2 );
}
}
- else if( osname.toLowerCase().indexOf( "netware" ) > -1 )
+ }
+ else if( Os.isFamily( Os.OS_FAMILY_NETWARE) )
+ {
+ final int colon = name.indexOf( ':' );
+ if( colon != -1 )
{
- final int colon = name.indexOf( ':' );
- if( colon != -1 )
- {
- name = name.substring( colon + 1 );
- }
+ name = name.substring( colon + 1 );
}
}
@@ -584,7 +577,7 @@ public class TarEntry
/**
* Write an entry's header information to a header buffer.
*
- * @param outbuf The tar entry header buffer to fill in.
+ * @param buffer The tar entry header buffer to fill in.
*/
public void writeEntryHeader( final byte[] buffer )
{
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/DependSet.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/DependSet.java
index c91806149..f1e1e526a 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/DependSet.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/DependSet.java
@@ -141,7 +141,7 @@ public class DependSet extends MatchingTask
* be able to check file modification times.
* (Windows has a max resolution of two secs for modification times)
*/
- if( Os.isFamily( "windows" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
now += 2000;
}
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javac.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javac.java
index e0737395c..d787e72a4 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javac.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Javac.java
@@ -12,7 +12,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.framework.JavaVersion;
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter;
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory;
@@ -726,7 +725,7 @@ public class Javac extends MatchingTask
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for java in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -736,7 +735,7 @@ public class Javac extends MatchingTask
new java.io.File( System.getProperty( "java.home" ) +
"/../bin/javac" + extension );
- if( jExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
return jExecutable.getAbsolutePath();
}
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/PathConvert.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
index c8e1ca784..4d16c8f85 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
@@ -9,6 +9,7 @@ package org.apache.tools.ant.taskdefs;
import java.io.File;
import java.util.ArrayList;
+import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.Path;
@@ -45,7 +46,7 @@ public class PathConvert extends AbstractTask
/**
* Override the default path separator string for the target os
*
- * @param sep The new PathSep value
+ * @param pathSep The new PathSep value
*/
public void setPathSep( final String pathSep )
{
@@ -64,7 +65,7 @@ public class PathConvert extends AbstractTask
/**
* Set the value of the targetos attribute
*
- * @param target The new Targetos value
+ * @param targetOS The new Targetos value
*/
public void setTargetos( String targetOS )
throws TaskException
@@ -121,13 +122,10 @@ public class PathConvert extends AbstractTask
// And Unix is everything that is not Windows
// (with the exception for NetWare below)
- String osname = System.getProperty( "os.name" ).toLowerCase();
-
// for NetWare, piggy-back on Windows, since here and in the
// apply code, the same assumptions can be made as with windows -
// that \\ is an OK separator, and do comparisons case-insensitive.
- m_onWindows = ( ( osname.indexOf( "windows" ) >= 0 ) ||
- ( osname.indexOf( "netware" ) >= 0 ) );
+ m_onWindows = ( Os.isFamily( Os.OS_FAMILY_WINDOWS ) || Os.isFamily( Os.OS_FAMILY_NETWARE ) );
// Determine the from/to char mappings for dir sep
char fromDirSep = m_onWindows ? '\\' : '/';
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
index bf38015e3..e572de2fe 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
@@ -845,7 +845,7 @@ public class Javadoc
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for javadoc in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -854,17 +854,12 @@ public class Javadoc
File jdocExecutable = new File( System.getProperty( "java.home" ) +
"/../bin/javadoc" + extension );
- if( jdocExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jdocExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
return jdocExecutable.getAbsolutePath();
}
else
{
- if( !Os.isFamily( "netware" ) )
- {
- getLogger().debug( "Unable to locate " + jdocExecutable.getAbsolutePath() +
- ". Using \"javadoc\" instead." );
- }
return "javadoc";
}
}
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
index f48f51d50..4ba03072e 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
@@ -17,8 +17,8 @@ import java.util.Iterator;
import org.apache.aut.nativelib.ExecManager;
import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.myrmidon.framework.Execute;
+import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;
@@ -103,7 +103,7 @@ public class Cab
getLogger().info( "Building cab: " + m_cabFile.getAbsolutePath() );
- if( !Os.isFamily( "windows" ) )
+ if( !Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
getLogger().debug( "Using listcab/libcabinet" );
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/text/FixCRLF.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/text/FixCRLF.java
index 9bea1f3ee..1964d521a 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/text/FixCRLF.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/text/FixCRLF.java
@@ -21,6 +21,7 @@ import java.io.Reader;
import java.io.Writer;
import java.util.Iterator;
import java.util.NoSuchElementException;
+import org.apache.aut.nativelib.Os;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.taskdefs.MatchingTask;
@@ -122,25 +123,23 @@ public class FixCRLF
public FixCRLF()
{
tabs = ASIS;
- if( File.pathSeparator.equals( ":" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS) )
+ {
+ ctrlz = ASIS;
+ eol = CRLF;
+ eolstr = "\r\n";
+ }
+ else if( Os.isFamily( Os.OS_FAMILY_MAC ) )
{
ctrlz = REMOVE;
- if( System.getProperty( "os.name" ).indexOf( "Mac" ) > -1 )
- {
- eol = CR;
- eolstr = "\r";
- }
- else
- {
- eol = LF;
- eolstr = "\n";
- }
+ eol = CR;
+ eolstr = "\r";
}
else
{
- ctrlz = ASIS;
- eol = CRLF;
- eolstr = "\r\n";
+ ctrlz = REMOVE;
+ eol = LF;
+ eolstr = "\n";
}
}
@@ -618,9 +617,7 @@ public class FixCRLF
}
else
{// (tabs != ASIS)
- int ptr;
-
- while( ( ptr = line.getNext() ) < linelen )
+ while( line.getNext() < linelen )
{
switch( lines.getState() )
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/CommandlineJava.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/CommandlineJava.java
index c012cda9a..020cc76e2 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/CommandlineJava.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/CommandlineJava.java
@@ -264,7 +264,7 @@ public class CommandlineJava
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for java in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -274,7 +274,7 @@ public class CommandlineJava
new File( System.getProperty( "java.home" ) +
"/../bin/java" + extension );
- if( jExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
// NetWare may have a "java" in that directory, but 99% of
// the time, you don't want to execute it -- Jeff Tulley
diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/SourceFileScanner.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/SourceFileScanner.java
index fd14b07f3..91a108f65 100644
--- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/SourceFileScanner.java
+++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/SourceFileScanner.java
@@ -56,7 +56,7 @@ public class SourceFileScanner
* not have it, so if we could reliably passively test for an NTFS
* file systems we could turn this off...
*/
- if( Os.isFamily( "windows" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
now += 2000;
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/DependSet.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/DependSet.java
index c91806149..f1e1e526a 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/DependSet.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/DependSet.java
@@ -141,7 +141,7 @@ public class DependSet extends MatchingTask
* be able to check file modification times.
* (Windows has a max resolution of two secs for modification times)
*/
- if( Os.isFamily( "windows" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
now += 2000;
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javac.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javac.java
index e0737395c..d787e72a4 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javac.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Javac.java
@@ -12,7 +12,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.framework.JavaVersion;
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter;
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory;
@@ -726,7 +725,7 @@ public class Javac extends MatchingTask
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for java in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -736,7 +735,7 @@ public class Javac extends MatchingTask
new java.io.File( System.getProperty( "java.home" ) +
"/../bin/javac" + extension );
- if( jExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
return jExecutable.getAbsolutePath();
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/PathConvert.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/PathConvert.java
index c8e1ca784..4d16c8f85 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/PathConvert.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/PathConvert.java
@@ -9,6 +9,7 @@ package org.apache.tools.ant.taskdefs;
import java.io.File;
import java.util.ArrayList;
+import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.Path;
@@ -45,7 +46,7 @@ public class PathConvert extends AbstractTask
/**
* Override the default path separator string for the target os
*
- * @param sep The new PathSep value
+ * @param pathSep The new PathSep value
*/
public void setPathSep( final String pathSep )
{
@@ -64,7 +65,7 @@ public class PathConvert extends AbstractTask
/**
* Set the value of the targetos attribute
*
- * @param target The new Targetos value
+ * @param targetOS The new Targetos value
*/
public void setTargetos( String targetOS )
throws TaskException
@@ -121,13 +122,10 @@ public class PathConvert extends AbstractTask
// And Unix is everything that is not Windows
// (with the exception for NetWare below)
- String osname = System.getProperty( "os.name" ).toLowerCase();
-
// for NetWare, piggy-back on Windows, since here and in the
// apply code, the same assumptions can be made as with windows -
// that \\ is an OK separator, and do comparisons case-insensitive.
- m_onWindows = ( ( osname.indexOf( "windows" ) >= 0 ) ||
- ( osname.indexOf( "netware" ) >= 0 ) );
+ m_onWindows = ( Os.isFamily( Os.OS_FAMILY_WINDOWS ) || Os.isFamily( Os.OS_FAMILY_NETWARE ) );
// Determine the from/to char mappings for dir sep
char fromDirSep = m_onWindows ? '\\' : '/';
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
index bf38015e3..e572de2fe 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/javadoc/Javadoc.java
@@ -845,7 +845,7 @@ public class Javadoc
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for javadoc in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -854,17 +854,12 @@ public class Javadoc
File jdocExecutable = new File( System.getProperty( "java.home" ) +
"/../bin/javadoc" + extension );
- if( jdocExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jdocExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
return jdocExecutable.getAbsolutePath();
}
else
{
- if( !Os.isFamily( "netware" ) )
- {
- getLogger().debug( "Unable to locate " + jdocExecutable.getAbsolutePath() +
- ". Using \"javadoc\" instead." );
- }
return "javadoc";
}
}
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java
index f48f51d50..4ba03072e 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java
@@ -17,8 +17,8 @@ import java.util.Iterator;
import org.apache.aut.nativelib.ExecManager;
import org.apache.aut.nativelib.Os;
import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.myrmidon.framework.Execute;
+import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;
@@ -103,7 +103,7 @@ public class Cab
getLogger().info( "Building cab: " + m_cabFile.getAbsolutePath() );
- if( !Os.isFamily( "windows" ) )
+ if( !Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
getLogger().debug( "Using listcab/libcabinet" );
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/text/FixCRLF.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/text/FixCRLF.java
index 9bea1f3ee..1964d521a 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/text/FixCRLF.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/text/FixCRLF.java
@@ -21,6 +21,7 @@ import java.io.Reader;
import java.io.Writer;
import java.util.Iterator;
import java.util.NoSuchElementException;
+import org.apache.aut.nativelib.Os;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.taskdefs.MatchingTask;
@@ -122,25 +123,23 @@ public class FixCRLF
public FixCRLF()
{
tabs = ASIS;
- if( File.pathSeparator.equals( ":" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS) )
+ {
+ ctrlz = ASIS;
+ eol = CRLF;
+ eolstr = "\r\n";
+ }
+ else if( Os.isFamily( Os.OS_FAMILY_MAC ) )
{
ctrlz = REMOVE;
- if( System.getProperty( "os.name" ).indexOf( "Mac" ) > -1 )
- {
- eol = CR;
- eolstr = "\r";
- }
- else
- {
- eol = LF;
- eolstr = "\n";
- }
+ eol = CR;
+ eolstr = "\r";
}
else
{
- ctrlz = ASIS;
- eol = CRLF;
- eolstr = "\r\n";
+ ctrlz = REMOVE;
+ eol = LF;
+ eolstr = "\n";
}
}
@@ -618,9 +617,7 @@ public class FixCRLF
}
else
{// (tabs != ASIS)
- int ptr;
-
- while( ( ptr = line.getNext() ) < linelen )
+ while( line.getNext() < linelen )
{
switch( lines.getState() )
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/CommandlineJava.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/CommandlineJava.java
index c012cda9a..020cc76e2 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/CommandlineJava.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/CommandlineJava.java
@@ -264,7 +264,7 @@ public class CommandlineJava
{
// This is the most common extension case - exe for windows and OS/2,
// nothing for *nix.
- String extension = Os.isFamily( "dos" ) ? ".exe" : "";
+ String extension = Os.isFamily( Os.OS_FAMILY_DOS ) ? ".exe" : "";
// Look for java in the java.home/../bin directory. Unfortunately
// on Windows java.home doesn't always refer to the correct location,
@@ -274,7 +274,7 @@ public class CommandlineJava
new File( System.getProperty( "java.home" ) +
"/../bin/java" + extension );
- if( jExecutable.exists() && !Os.isFamily( "netware" ) )
+ if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) )
{
// NetWare may have a "java" in that directory, but 99% of
// the time, you don't want to execute it -- Jeff Tulley
diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/SourceFileScanner.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/SourceFileScanner.java
index fd14b07f3..91a108f65 100644
--- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/SourceFileScanner.java
+++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/SourceFileScanner.java
@@ -56,7 +56,7 @@ public class SourceFileScanner
* not have it, so if we could reliably passively test for an NTFS
* file systems we could turn this off...
*/
- if( Os.isFamily( "windows" ) )
+ if( Os.isFamily( Os.OS_FAMILY_WINDOWS ) )
{
now += 2000;
}