Class CUtil


  • public class CUtil
    extends java.lang.Object
    Some utilities used by the CC and Link tasks.
    Author:
    Adam Murdoch, Curt Arnold
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  CUtil.StringArrayBuilder
      A class that splits a white-space, comma-separated list into a String array.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int FILETIME_EPSILON  
    • Constructor Summary

      Constructors 
      Constructor Description
      CUtil()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addAll​(java.util.Vector dest, java.lang.Object[] src)
      Adds the elements of the array to the given vector
      static int checkDirectoryArray​(java.lang.String[] names)
      Checks a array of names for non existent or non directory entries and nulls them out.
      static java.lang.String getBasename​(java.io.File file)
      Extracts the basename of a file, removing the extension, if present
      static java.io.File getExecutableLocation​(java.lang.String exeName)
      Gets the parent directory for the executable file name using the current directory and system executable path
      static java.lang.String getParentPath​(java.lang.String path)
      Extracts the parent of a file
      static java.io.File[] getPathFromEnvironment​(java.lang.String envVariable, java.lang.String delim)
      Returns an array of File for each existing directory in the specified environment variable
      static java.lang.String getRelativePath​(java.lang.String base, java.io.File targetFile)
      Returns a relative path for the targetFile relative to the base directory.
      static boolean isActive​(org.apache.tools.ant.Project p, java.lang.String ifCond, java.lang.String unlessCond)  
      static boolean isSignificantlyAfter​(long time1, long time2)
      Determines whether time1 is later than time2 to a degree that file system time truncation is not significant.
      static boolean isSignificantlyBefore​(long time1, long time2)
      Determines whether time1 is earlier than time2 to a degree that file system time truncation is not significant.
      static boolean isSystemPath​(java.io.File source)
      Determines if source file has a system path, that is part of the compiler or platform.
      static java.io.File[] parsePath​(java.lang.String path, java.lang.String delim)
      Parse a string containing directories into an File[]
      static int runCommand​(CCTask task, java.io.File workingDir, java.lang.String[] cmdline, boolean newEnvironment, org.apache.tools.ant.types.Environment env)
      This method is exposed so test classes can overload and test the arguments without actually spawning the compiler
      static boolean sameList​(java.lang.Object[] a, java.lang.Object[] b)
      Compares the contents of 2 arrays for equaliy.
      static boolean sameList​(java.util.Vector v, java.lang.Object[] a)
      Compares the contents of an array and a Vector for equality.
      static boolean sameSet​(java.lang.Object[] a, java.util.Vector b)
      Compares the contents of an array and a Vector for set equality.
      static java.lang.String[] toArray​(java.util.Vector src)
      Converts a vector to a string array.
      static java.lang.String toUnixPath​(java.lang.String path)  
      static java.lang.String toWindowsPath​(java.lang.String path)  
      static java.lang.String xmlAttribEncode​(java.lang.String attrValue)
      Replaces any embedded quotes in the string so that the value can be placed in an attribute in an XML file
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CUtil

        public CUtil()
    • Method Detail

      • addAll

        public static void addAll​(java.util.Vector dest,
                                  java.lang.Object[] src)
        Adds the elements of the array to the given vector
      • checkDirectoryArray

        public static int checkDirectoryArray​(java.lang.String[] names)
        Checks a array of names for non existent or non directory entries and nulls them out.
        Returns:
        Count of non-null elements
      • getBasename

        public static java.lang.String getBasename​(java.io.File file)
        Extracts the basename of a file, removing the extension, if present
      • getExecutableLocation

        public static java.io.File getExecutableLocation​(java.lang.String exeName)
        Gets the parent directory for the executable file name using the current directory and system executable path
        Parameters:
        exeName - Name of executable such as "cl.exe"
        Returns:
        parent directory or null if not located
      • getParentPath

        public static java.lang.String getParentPath​(java.lang.String path)
        Extracts the parent of a file
      • getPathFromEnvironment

        public static java.io.File[] getPathFromEnvironment​(java.lang.String envVariable,
                                                            java.lang.String delim)
        Returns an array of File for each existing directory in the specified environment variable
        Parameters:
        envVariable - environment variable name such as "LIB" or "INCLUDE"
        delim - delimitor used to separate parts of the path, typically ";" or ":"
        Returns:
        array of File's for each part that is an existing directory
      • getRelativePath

        public static java.lang.String getRelativePath​(java.lang.String base,
                                                       java.io.File targetFile)
        Returns a relative path for the targetFile relative to the base directory.
        Parameters:
        base - base directory as returned by File.getCanonicalPath()
        targetFile - target file
        Returns:
        relative path of target file. Returns targetFile if there were no commonalities between the base and the target
      • isActive

        public static boolean isActive​(org.apache.tools.ant.Project p,
                                       java.lang.String ifCond,
                                       java.lang.String unlessCond)
                                throws org.apache.tools.ant.BuildException
        Throws:
        org.apache.tools.ant.BuildException
      • parsePath

        public static java.io.File[] parsePath​(java.lang.String path,
                                               java.lang.String delim)
        Parse a string containing directories into an File[]
        Parameters:
        path - path string, for example ".;c:\something\include"
        delim - delimiter, typically ; or :
      • runCommand

        public static int runCommand​(CCTask task,
                                     java.io.File workingDir,
                                     java.lang.String[] cmdline,
                                     boolean newEnvironment,
                                     org.apache.tools.ant.types.Environment env)
                              throws org.apache.tools.ant.BuildException
        This method is exposed so test classes can overload and test the arguments without actually spawning the compiler
        Throws:
        org.apache.tools.ant.BuildException
      • sameList

        public static boolean sameList​(java.lang.Object[] a,
                                       java.lang.Object[] b)
        Compares the contents of 2 arrays for equaliy.
      • sameList

        public static boolean sameList​(java.util.Vector v,
                                       java.lang.Object[] a)
        Compares the contents of an array and a Vector for equality.
      • sameSet

        public static boolean sameSet​(java.lang.Object[] a,
                                      java.util.Vector b)
        Compares the contents of an array and a Vector for set equality. Assumes input array and vector are sets (i.e. no duplicate entries)
      • toArray

        public static java.lang.String[] toArray​(java.util.Vector src)
        Converts a vector to a string array.
      • xmlAttribEncode

        public static java.lang.String xmlAttribEncode​(java.lang.String attrValue)
        Replaces any embedded quotes in the string so that the value can be placed in an attribute in an XML file
        Parameters:
        attrValue - value to be expressed
        Returns:
        equivalent attribute literal
      • isSignificantlyBefore

        public static boolean isSignificantlyBefore​(long time1,
                                                    long time2)
        Determines whether time1 is earlier than time2 to a degree that file system time truncation is not significant.
        Parameters:
        time1 - long first time value
        time2 - long second time value
        Returns:
        boolean if first time value is earlier than second time value. If the values are within the rounding error of the file system return false.
      • isSignificantlyAfter

        public static boolean isSignificantlyAfter​(long time1,
                                                   long time2)
        Determines whether time1 is later than time2 to a degree that file system time truncation is not significant.
        Parameters:
        time1 - long first time value
        time2 - long second time value
        Returns:
        boolean if first time value is later than second time value. If the values are within the rounding error of the file system return false.
      • toWindowsPath

        public static java.lang.String toWindowsPath​(java.lang.String path)
      • toUnixPath

        public static java.lang.String toUnixPath​(java.lang.String path)
      • isSystemPath

        public static boolean isSystemPath​(java.io.File source)
        Determines if source file has a system path, that is part of the compiler or platform.
        Parameters:
        source - source, may not be null.
        Returns:
        true is source file appears to be system library and its path should be discarded.