* Replaced all usages of Os.isFamily( String ) with Os.isFamily( OsFamily ). * Replaced all usages of "os.name" system properties with calls to Os.isFamily(). git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271667 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -72,8 +72,7 @@ public class Exec | |||
| } | |||
| /** | |||
| * Only execute the process if <code>os.name</code> is included in this | |||
| * string. | |||
| * Only execute the process if running on the specified OS family. | |||
| */ | |||
| public void setOs( final String os ) | |||
| { | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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 <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @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; | |||
| } | |||
| } | |||
| @@ -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" ); | |||
| @@ -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; | |||
| } | |||
| @@ -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 ) | |||
| { | |||
| @@ -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; | |||
| } | |||
| @@ -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(); | |||
| } | |||
| @@ -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 ? '\\' : '/'; | |||
| @@ -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"; | |||
| } | |||
| } | |||
| @@ -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" ); | |||
| @@ -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() ) | |||
| @@ -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 | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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(); | |||
| } | |||
| @@ -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 ? '\\' : '/'; | |||
| @@ -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"; | |||
| } | |||
| } | |||
| @@ -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" ); | |||
| @@ -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() ) | |||
| @@ -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 | |||
| @@ -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; | |||
| } | |||