diff options
author | Brad King <brad.king@kitware.com> | 2003-06-23 12:58:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2003-06-23 12:58:58 (GMT) |
commit | dc3fd5c26727ae81b57c4fa2b5559b6c1e36840c (patch) | |
tree | ed05e732bd914a3a9048b566f14cdffbba2eeb85 /Source/cmSystemTools.h | |
parent | c5890b8c2e5593752eaceeb19923917618d59e1f (diff) | |
download | CMake-dc3fd5c26727ae81b57c4fa2b5559b6c1e36840c.zip CMake-dc3fd5c26727ae81b57c4fa2b5559b6c1e36840c.tar.gz CMake-dc3fd5c26727ae81b57c4fa2b5559b6c1e36840c.tar.bz2 |
ENH: Merged use of kwsys library.
Diffstat (limited to 'Source/cmSystemTools.h')
-rw-r--r-- | Source/cmSystemTools.h | 215 |
1 files changed, 9 insertions, 206 deletions
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 51d9c41..fc484a6 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -19,47 +19,17 @@ #include "cmStandardIncludes.h" +#include <cmsys/SystemTools.hxx> + /** \class cmSystemTools * \brief A collection of useful functions for CMake. * * cmSystemTools is a class that provides helper functions * for the CMake build system. */ -class cmSystemTools +class cmSystemTools: public cmsys::SystemTools { public: - /** - * Replace symbols in str that are not valid in C identifiers as - * defined by the 1999 standard, ie. anything except [A-Za-z0-9_]. - * They are replaced with `_' and if the first character is a digit - * then an underscore is prepended. Note that this can produce - * identifiers that the standard reserves (_[A-Z].* and __.*). - */ - static std::string MakeCindentifier(const char* s); - - /** - * Make a new directory if it is not there. This function - * can make a full path even if none of the directories existed - * prior to calling this function. - */ - static bool MakeDirectory(const char* path); - - /** - * Get current time as a double. On certain platforms this will - * return higher resolution than seconds: - * (1) gettimeofday() -- resolution in microseconds - * (2) ftime() -- resolution in milliseconds - * (3) time() -- resolution in seconds - */ - static double GetTime(); - - /** - * Replace replace all occurances of the string in - * the source string. - */ - static void ReplaceString(std::string& source, - const char* replace, - const char* with); /** Expand out any arguements in the vector that have ; separated * strings into multiple arguements. A new vector is created @@ -71,47 +41,11 @@ public: std::vector<std::string>& argsOut); /** - * Read a registry value - */ - static bool ReadRegistryValue(const char *key, std::string &value); - - /** - * Write a registry value - */ - static bool WriteRegistryValue(const char *key, const char *value); - - /** - * Delete a registry value - */ - static bool DeleteRegistryValue(const char *key); - - /** * Look for and replace registry values in a string */ static void ExpandRegistryValues(std::string& source); /** - * Return a capitalized string (i.e the first letter is uppercased, all other - * are lowercased). - */ - static std::string Capitalized(const std::string&); - - /** - * Return a lower case string - */ - static std::string LowerCase(const std::string&); - - /** - * Return a lower case string - */ - static std::string UpperCase(const std::string&); - - /** - * Replace Windows file system slashes with Unix-style slashes. - */ - static void ConvertToUnixSlashes(std::string& path); - - /** * Platform independent escape spaces, unix uses backslash, * windows double quotes the string. */ @@ -119,15 +53,6 @@ public: ///! Escape quotes in a string. static std::string EscapeQuotes(const char* str); - - /** - * For windows this calles ConvertToWindowsOutputPath and for unix - * it calls ConvertToUnixOutputPath - */ - static std::string ConvertToOutputPath(const char*); - - ///! Return true if a file exists in the current directory. - static bool FileExists(const char* filename); /** * Given a string, replace any escape sequences with the corresponding @@ -135,19 +60,6 @@ public: */ static std::string RemoveEscapes(const char*); - - /** - * Add the paths from the environment variable PATH to the - * string vector passed in. - */ - static void GetPath(std::vector<std::string>& path); - - /** - * Get the file extension (including ".") needed for an executable - * on the current platform ("" for unix, ".exe" for Windows). - */ - static const char* GetExecutableExtension(); - typedef void (*ErrorCallback)(const char*, const char*, bool&, void*); /** * Set the function used by GUI's to display error messages @@ -191,26 +103,6 @@ public: cmSystemTools::s_ErrorOccured = false; } - /** - * Copy the source file to the destination file only - * if the two files differ. - */ - static bool CopyFileIfDifferent(const char* source, - const char* destination); - - ///! Compare the contents of two files. Return true if different. - static bool FilesDiffer(const char* source, - const char* destination); - ///! return true if the two files are the same file - static bool SameFile(const char* file1, const char* file2); - - ///! Copy a file. - static void cmCopyFile(const char* source, - const char* destination); - - ///! Remove a file. - static bool RemoveFile(const char* source); - /** * does a string indicate a true or on value ? This is not the same * as ifdef. @@ -229,22 +121,6 @@ public: ///! Return true if value is NOTFOUND or ends in -NOTFOUND. static bool IsNOTFOUND(const char* value); - ///! Find a file in the system PATH, with optional extra paths. - static std::string FindFile(const char* name, - const std::vector<std::string>& path= std::vector<std::string>()); - - ///! Find an executable in the system PATH, with optional extra paths. - static std::string FindProgram(const char* name, - const std::vector<std::string>& path = std::vector<std::string>(), - bool no_system_path = false); - - ///! Find a library in the system PATH, with optional extra paths. - static std::string FindLibrary(const char* name, - const std::vector<std::string>& path); - - ///! return true if the file is a directory. - static bool FileIsDirectory(const char* name); - static bool DoesFileExistWithExtensions( const char *name, const std::vector<std::string>& sourceExts); @@ -265,43 +141,8 @@ public: static bool SimpleGlob(const std::string& glob, std::vector<std::string>& files, int type = 0); - static std::string GetCurrentWorkingDirectory(); - static std::string GetProgramPath(const char*); - static void SplitProgramPath(const char* in_name, - std::string& dir, - std::string& file, - bool errorReport = true); - static std::string CollapseFullPath(const char* in_relative); - static std::string CollapseFullPath(const char* in_relative, - const char* in_base); - - ///! return path of a full filename (no trailing slashes). - static std::string GetFilenamePath(const std::string&); - - - ///! return file name of a full filename (i.e. file name without path). - static std::string GetFilenameName(const std::string&); - - ///! Split a program from its arguments and handle spaces in the paths. - static void SplitProgramFromArgs(const char* path, - std::string& program, std::string& args); - - ///! return file extension of a full filename (dot included). - static std::string GetFilenameExtension(const std::string&); - - ///! return file extension of a full filename (dot included). - static std::string GetFilenameLastExtension(const std::string&); - - ///! return file name without extension of a full filename. - static std::string GetFilenameWithoutExtension(const std::string&); - - ///! return file name without its last (shortest) extension. - static std::string GetFilenameWithoutLastExtension(const std::string&); - - /** Return whether the path represents a full path (not relative). */ - static bool FileIsFullPath(const char*); - - static long int ModifiedTime(const char* filename); + ///! Copy a file. + static bool cmCopyFile(const char* source, const char* destination); /** * Run an executable command and put the stdout in output. @@ -319,13 +160,7 @@ public: bool verbose = true, int timeout = 0); static bool RunCommand(const char* command, std::string& output, int &retVal, const char* directory = 0, - bool verbose = true, int timeout = 0); - - ///! for windows return the short path for the given path, unix just a pass through - static bool GetShortPath(const char* path, std::string& result); - - ///! change directory the the directory specified - static int ChangeDirectory(const char* dir); + bool verbose = true, int timeout = 0); static void EnableMessages() { s_DisableMessages = false; } static void DisableMessages() { s_DisableMessages = true; } @@ -333,10 +168,6 @@ public: static void EnableRunCommandOutput() {s_DisableRunCommandOutput = false; } static bool GetRunCommandOutput() { return s_DisableRunCommandOutput; } - /** Split a string on its newlines into multiple lines. Returns - false only if the last line stored had no newline. */ - static bool Split(const char* s, std::vector<cmStdString>& l); - /** * Come constants for different file formats. */ @@ -360,8 +191,6 @@ public: */ static FileFormat GetFileFormat(const char* ext); - static std::string GetCurrentDateTime(const char* format); - /** * On Windows 9x we need a comspec (command.com) substitute to run * programs correctly. This string has to be constant available @@ -380,35 +209,9 @@ public: */ static void ReportLastSystemError(const char* m); - /** When building DEBUG with MSVC, this enables a hook that prevents - * error dialogs from popping up if the program is being run from - * DART. - */ - static void EnableMSVCDebugHook(); - - /** - * Read line from file. Make sure to get everything. Due to a buggy stream - * library on the HP and another on Mac OSX, we need this very carefully - * written version of getline. Returns true if any data were read before the - * end-of-file was reached. - */ - static bool GetLineFromStream(std::istream& istr, std::string& line); - -protected: - // these two functions can be called from ConvertToOutputPath - /** - * Convert the path to a string that can be used in a unix makefile. - * double slashes are removed, and spaces are escaped. - */ - static std::string ConvertToUnixOutputPath(const char*); - - /** - * Convert the path to string that can be used in a windows project or - * makefile. Double slashes are removed if they are not at the start of - * the string, the slashes are converted to windows style backslashes, and - * if there are spaces in the string it is double quoted. - */ - static std::string ConvertToWindowsOutputPath(const char*); + /** Split a string on its newlines into multiple lines. Returns + false only if the last line stored had no newline. */ + static bool Split(const char* s, std::vector<cmStdString>& l); private: static bool s_RunCommandHideConsole; |