Commit Graph

89 Commits

Author SHA1 Message Date
Brad King f668112039 Merge branch 'upstream-kwsys' into update-kwsys 2013-11-25 11:19:42 -05:00
Brad King 09b147b3a7 Merge branch 'upstream-kwsys' into update-kwsys 2013-08-07 08:18:32 -04:00
Brad King b7593bf3f5 Merge branch 'upstream-kwsys' into update-kwsys 2013-05-07 08:38:10 -04:00
Brad King 6f6afbd69f Merge branch 'upstream-kwsys' into update-kwsys 2013-01-08 08:42:58 -05:00
Brad King e48796b26b KWSys: Fix SystemTools environment memory handling (#13156)
The SystemTools::PutEnv function tries to provide the "putenv" API
without leaking memory.  However, the kwsysDeletingCharVector singleton
frees memory that may still be referenced by the environment table,
having been placed there by putenv.  If any static destruction or
processing by an external tool happens after the singleton is destroyed
and accesses the environment it will read invalid memory.

Replace use of putenv with setenv/unsetenv when available.  The latter
manage internal copies of the values passed instead of referencing the
original memory.  When setenv/unsetenv are not available use putenv with
a singleton that removes its values from the environment before freeing
their memory.  This requires an "unputenv" implementation.  On at least
some platforms it must be written in terms of "putenv" because other
APIs are not available and direct modification of the "environ" global
is not safe (e.g. on Windows there is interaction with "wenviron").
Fortunately either putenv("A=") or putenv("A") will remove "A" from the
environment on these platforms.  On other platforms fall back to direct
manipulation of "environ".

Also add UnPutEnv to the API and add a test for the behavior of both.
2012-04-27 08:13:52 -04:00
Brad King 89742d73cc KWSys: Fix Doxygen warnings
Author: Nicolas Despres <nicolas.despres@gmail.com>
2011-10-24 10:05:10 -04:00
Brad King 74e1156bc2 KWSys: Simplify SystemTools::GetTime implementation (#12261)
We already use GetSystemTimeAsFileTime() and gettimeofday()
unconditionally on supported Windows and non-Windows platforms,
respectively.  Remove outdated portability complexity.
2011-08-03 14:50:04 -04:00
Brad King 3bf1869c93 KWSys: Improve SplitPath method documentation
Document explicitly that the first component always exists.  Fix the
documentation of SplitPathRootComponent to note that home directory
roots (~/ and ~u/) always have a trailing slash.
2010-08-27 10:20:02 -04:00
Brad King ac17dc4a43 KWSys: Remove "copyPermissions" parameters
The CopyFileIfDifferent, CopyFileAlways, CopyAFile and CopyADirectory
methods should always copy permissions.  The special cases in which a
caller would pass copyPermissions=false should be handled at the call
site.  The parameter needlessly complicates the interface and semantics
of these methods.
2010-06-04 16:02:00 -04:00
Brad King de955e4b6d Convert KWSys to OSI-approved BSD License
This converts the KWSys license to a pure 3-clause OSI-approved BSD
License.  We drop the previous license clause requiring modified
versions to be plainly marked.  We also update the KWSys copyright to
cover the full development time range.
2009-09-28 11:37:35 -04:00
Brad King 9b6c3d0782 Optimize KWSys SystemTools::FileExists on Windows
We optimize this method by using the GetFileAttributesExA native Windows
API to check for file existence when possible.  For real Windows builds
we always use it.  For Cygwin we use cygwin_conv_to_win32_path to get a
native Windows path if possible and otherwise fall back to 'access'.

Cygwin-to-Windows path conversion and cache by Wojciech Migda.
See issue #8826.
2009-09-22 13:02:20 -04:00
Bill Hoffman fdff8eb300 ENH: move PutEnv to SystemTools 2009-06-05 12:01:30 -04:00
Brad King 714d2fc04b ENH: Remove obscure method from KWSys SystemTools
This removes SystemTools::FileExistsInParentDirectories from KWSys since
it is a special-purpose method that is not generally useful.
2009-04-21 11:36:59 -04:00
Brad King ca096a4596 BUG: Fix GetRealPath when realpath fails
This patch from Philip Lowman teaches SystemTools::GetRealPath to deal
with paths that do not exist by dealing with the case that realpath
returns NULL.  See issue #8423.
2009-02-09 09:23:13 -05:00
David Cole 0fafdb7eb8 BUG: Do not copy permissions of files when making the copy in an install rule. If the source file was read-only, this prevents the subsequent set of the destination file's modification time, making the copied file always different in time-stamp than the original and always installing a new file with a new time stamp (but the same content) causing unnecessary downstream incremental rebuilds. As part of this fix, add an optional copyPermissions parameter to the SystemTools routines CopyFileIfDifferent, CopyFileAlways, CopyAFile and CopyADirectory. The copyPermissions parameter defaults to true to preserve the behavior of these routines for existing callers. 2008-12-18 10:43:24 -05:00
Brad King cea66664c5 ENH: Added WOW64 key view support to KWSys SystemTools' windows registry API.
- Add an argument to registry read/write/delete methods to specify
    a 32-bit or 64-bit view.
  - Default is the bit-ness of the running program.
  - See issue #7095.
2008-05-27 14:47:00 -04:00
Bill Hoffman 7dcfdf5005 BUG: fix install problem on make and allow symlinks to cmake bin directory 2008-03-27 17:05:11 -04:00
Brad King e3c2c1923a STYLE: Remove references to std:: inside KWSys, even in comments. This will allow a commit check to be added. 2008-01-31 08:21:35 -05:00
Brad King a6d32b96ed ENH: Add SystemTools::SplitPathRootComponent and re-implement SplitPath to use it. Add better treatment of user home directory paths. 2008-01-11 08:33:48 -05:00
Bill Hoffman a5e76555bf BUG: fix for bug 6136 make sure includes are not directories 2007-12-14 20:31:27 -05:00
Philippe Pebay f18ae2234c ENH: added two functions for URL parsing:
1. an "abridged" version that separates protocol from dataglom in
        an expression with the form protocol://dataglom
     2. a "full" version that parses protocol, username, password,
        hostname, port, and path in a standard URL (all of these variables
        are optional, except for protocol and hostname).
2007-12-05 12:24:27 -05:00
Bill Hoffman 5050706ae3 ENH: add a touch -E command to cmake 2007-12-04 16:03:19 -05:00
Sean McBride 0b4c9cb86c STYLE: fixed misspellings of Mac OS X 2007-10-26 12:13:01 -04:00
Bill Hoffman e0899bcaf2 ENH: speed up actual path name by cache on windows 2007-10-02 15:48:21 -04:00
Brad King e01cdf2065 ENH: Added kwsys SystemTools::CreateSymlink and SystemTools::ReadSymlink. 2007-03-12 13:50:28 -04:00
Ken Martin ae3ef64307 ENH: added a limit to the getline method 2007-03-01 14:30:42 -05:00
Brad King 3a44f2a47e ENH: Added JoinPath overload that accepts an iterator range. 2006-08-17 12:02:18 -04:00
Ken Martin 4f9fcad327 ENH: better coverage 2006-07-31 13:50:50 -04:00
Ken Martin b379666b39 BUG: some bug fixes, better docs, and more coverage 2006-07-25 12:08:05 -04:00
Brad King 523d9ebeed ENH: Added always/if-different option to CopyADirectory. Added CopyAFile with the same interface. 2006-05-05 10:29:27 -04:00
Bill Hoffman cae4e6b37a ENH: add patch for finding applications on OSX 2006-04-13 11:00:52 -04:00
Mathieu Malaterre e9fcafafe5 ENH: Use const char where it should have been. At same time fix Bug#2958 2006-03-17 12:06:41 -05:00
Mathieu Malaterre 8e7d92049e ENH: Add documentation on the problem with system wide path for looking up dynamic libraries. STYLE: Fix trailing white spaces 2006-03-10 16:03:26 -05:00
Andy Cedilnik 30daaa6a3e COMP: Fix problem with STL on HP, and fix reusing the same variable in for loops 2006-02-08 07:17:59 -05:00
Andy Cedilnik e5a8e115bc ENH: Move relative path to kwsys 2006-02-07 10:23:17 -05:00
Mathieu Malaterre 4763c14502 ENH: Add some doc for visible class 2006-02-07 09:25:15 -05:00
Bill Hoffman 909d9dbd5a ENH: fix for icc 2006-01-17 16:53:56 -05:00
Bill Hoffman 9891260a6d ENH: add support for watcom wmake and wcl386 2006-01-17 10:21:45 -05:00
Andy Cedilnik 33c891f8d8 ENH: Add another signature to FindProgram that matches more to the one from CMake 2005-12-10 12:08:55 -05:00
Andy Cedilnik b93359f41d ENH: Add an accessor for the maximum file length 2005-10-12 12:08:49 -04:00
Sebastien Barre 6e4b6ca0d3 ENH: add method to attempt to check if a file is text or binary 2005-07-28 13:21:03 -04:00
Andy Cedilnik eee2d2b035 BUG: Revert the change to FileIsDirectory. Add FileIsSymlink and treat symlinks as files when removing directory 2005-07-12 13:21:21 -04:00
Sebastien Barre 7f2c1e434c ENH: add method to escape some chars in a string 2005-06-13 18:03:53 -04:00
Sebastien Barre a662af88de ENH: add convenience function to convert Windows command line args into Unix argc/argv. Pulled and cleaned from PV/VV/VJ init code 2005-05-27 22:11:26 -04:00
Andy Cedilnik fe110e2ae0 ENH: Add split that splits on arbitrary separator 2005-05-04 11:37:01 -04:00
Andy Cedilnik 214269f095 ENH: Expose ConvertToUnixOutputPath 2005-05-04 11:12:27 -04:00
Brad King 3f224b7558 COMP: Do not do va_list hack if there is no std:: namespace. 2005-04-21 13:56:55 -04:00
Andy Cedilnik 1e04844de9 COMP: Attempt to fix problem with building on SGI 2005-04-19 18:26:40 -04:00
Sebastien Barre ecc142ee33 ENH: move convenience method to get OS name and version from KWApp to KWSys. 2005-04-15 15:18:51 -04:00
Bill Hoffman 266d5d16df ENH: optimization of cwd and do not leak library handle 2005-04-12 13:25:19 -04:00