Commit Graph

308 Commits

Author SHA1 Message Date
Brad King 5c08e2559c KWSys SystemTools: Teach Touch with !create to succeed on missing file 2015-04-10 12:51:10 -04:00
Paul Martin b8ea771b13 KWSys SystemTools: Update CopyFileAlways stream library workarounds
On some stream libraries failbit is not set when trying to read past
EOF.  Instead, always exit the copy loop when gcount() is zero.
2015-03-02 08:55:13 -05:00
Brad King 7e468cd8f9 Merge branch 'upstream-kwsys' into update-kwsys 2015-01-21 09:15:44 -05:00
Brad King e5b9142097 Merge branch 'upstream-kwsys' into update-kwsys 2015-01-10 12:09:04 -05:00
Brad King 5868b4e2fb Merge branch 'upstream-kwsys' into update-kwsys 2014-10-31 13:11:58 -04:00
Brad King 208530090d Merge branch 'upstream-kwsys' into update-kwsys 2014-09-26 09:34:26 -04:00
Brad King daab3b3bdf Merge branch 'upstream-kwsys' into update-kwsys 2014-09-09 08:46:41 -04:00
Brad King 51c82c3a66 Merge branch 'upstream-kwsys' into update-kwsys 2014-08-11 09:30:22 -04:00
Brad King 60c783676c Merge branch 'upstream-kwsys' into update-kwsys 2014-08-04 10:16:34 -04:00
Brad King 5f525da0e3 Merge branch 'upstream-kwsys' into update-kwsys 2014-07-07 09:04:27 -04:00
Brad King 2903d609b1 Merge branch 'upstream-kwsys' into update-kwsys 2014-05-19 10:58:14 -04:00
Brad King 7fa16df4d7 Merge branch 'upstream-kwsys' into update-kwsys 2014-05-13 14:55:35 -04:00
Stephen Kelly 21c573f682 Remove some c_str() calls.
Use the clang RemoveCStrCalls tool to automatically migrate the
code. This was only run on linux, so does not have any positive or
negative effect on other platforms.
2014-03-11 15:03:50 +01:00
Brad King 7db95df39d Merge branch 'upstream-kwsys' into update-kwsys 2014-03-04 10:19:33 -05:00
Brad King 2a943d9264 Merge branch 'upstream-kwsys' into update-kwsys 2013-12-19 10:44:29 -05:00
Brad King f668112039 Merge branch 'upstream-kwsys' into update-kwsys 2013-11-25 11:19:42 -05:00
Brad King f59693b971 Merge branch 'upstream-kwsys' into update-kwsys 2013-10-08 09:53:13 -04:00
Brad King 09b147b3a7 Merge branch 'upstream-kwsys' into update-kwsys 2013-08-07 08:18:32 -04:00
Brad King 635e19d607 Merge branch 'upstream-kwsys' into update-kwsys 2013-07-11 09:04:05 -04:00
Brad King 063617cd18 Merge branch 'upstream-kwsys' into update-kwsys 2013-06-26 09:52:46 -04:00
Brad King c91e88d0e1 Merge branch 'upstream-kwsys' into update-kwsys 2013-06-04 09:08:58 -04:00
Brad King 884e3edeb1 Merge branch 'upstream-kwsys' into update-kwsys 2013-06-03 10:23:31 -04:00
Brad King 2c0c59a2e1 Merge branch 'upstream-kwsys' into update-kwsys 2013-05-29 08:56:20 -04:00
Brad King b7593bf3f5 Merge branch 'upstream-kwsys' into update-kwsys 2013-05-07 08:38:10 -04:00
Brad King 0c04428d04 Merge branch 'upstream-kwsys' into update-kwsys 2013-04-26 16:08:35 -04:00
Brad King 7df291fb6e Merge branch 'upstream-kwsys' into update-kwsys 2013-02-07 08:34:56 -05:00
Brad King 588d705cb1 Merge branch 'upstream-kwsys' into update-kwsys 2013-02-01 09:28:50 -05:00
Brad King 6f6afbd69f Merge branch 'upstream-kwsys' into update-kwsys 2013-01-08 08:42:58 -05:00
Brad King e33fa5b678 Merge branch 'upstream-kwsys' into update-kwsys 2012-12-19 08:09:36 -05:00
Brad King 4b8d3639ad Merge branch 'upstream-kwsys' into import-KWSys-subtree 2012-10-01 15:18:30 -04:00
Brad King 0fbaa63cb2 KWSys: Remove unused environ declaration from SystemTools
Commit "KWSys: Fix SystemTools environment memory handling" (2012-04-26)
added a _WIN32 case inside !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H to dllimport
the "environ" global.  Howver, KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H is true
on every Windows toolchain we support so the case is never reached.
Furthermore, even if it were reached the use of dllimport is incorrect
because the toolchain might not be compiling with a dynamic runtime
library.  Remove the unused incorrect line and supporting conditionals.
2012-05-23 08:32:57 -04: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 c544545c63 KWSys: Correctly handle empty environment variables
Fix a crash which occurs when SystemTools::GetPath attempts to process
an empty environment variable.

Author: Vladimir Panteleev <vladimir@thecybershadow.net>
2011-12-15 15:45:09 -05:00
Brad King 5d6cb1308d KWSys: Fix wrong spelling of __INTEL_COMPILER
Author: Hans Johnson <hans-johnson@uiowa.edu>
Change-Id: I31a29a8b53e5262b76530b8ea80a1a66cff7b3f7
2011-11-13 12:35:04 -05:00
Brad King 2f8f7ec56a KWSys: Remove trailing whitespace in SystemTools.cxx 2011-11-13 12:25:05 -05:00
Brad King 13d19468d0 KWSys: Address Intel compiler remarks
CommandLineArguments.cxx:
 remark #181: argument is incompatible with corresponding format
  string conversion

SystemInformation.cxx:
 remark #193: zero used for undefined preprocessing identifier "_WIN32"
 warning #177: variable "Regebx" was declared but never referenced

SystemTools.cxx(375):
 remark #444: destructor for base class "std::vector<char*>" is not virtual
  class kwsysDeletingCharVector : private kwsys_stl::vector<char*>

Author: Hans Johnson <hans-johnson@uiowa.edu>
Change-Id: Ibc899c3ba14990158ef7bbabace4b435b22495c3
2011-11-01 10:49:25 -04:00
David Cole 7dcbb66315 KWSys: Remove translation path for "/tmp_mnt/" (#10595)
In SystemTools::ClassInitialize, remove call to AddTranslationPath
that was originally put in place to "work around an SGI problem."
This code precluded using CMake effectively in valid directories
under "/tmp_mnt/"
2011-08-20 12:30:09 -04:00
Brad King 5f0eba49f2 KWSys: Avoid conversion warning in SystemTools::GetTime
Convert struct timeval members to double explicitly to avoid a GCC
warning with -Wconversion.
2011-08-04 08:30:05 -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
David Cole 6754b26bf0 KWSys: Fix WOW64 registry mode on Windows 2000 (#10759)
The previous commit did not compile with mingw gcc.
Use the Windows type FARPROC instead of void* for
the local variable.
2011-01-10 08:40:03 -05:00
David Cole 4b05a21302 Fix WOW64 registry mode on Windows 2000 (#10759)
CMake fails to find any registry paths on Windows 2000: according to regmon
it fails with an access denied error. I double checked all the access rights
and they are fine. After checking the access modes on MSDN I found that it
says KEY_WOW64_32KEY / KEY_WOW64_64KEY are not supported on Windows 2000.
CMake does not check if the current system supports Wow64 before applying
these flags.

This commit adds a check for IsWow64Process in kernel32.dll before adding
these flags.

Author: Axel Gembe <ago@bastart.eu.org>
Signed-off-by: Axel Gembe <ago@bastart.eu.org>
2011-01-07 07:40:07 -05:00
Brad King 75191fa312 KWSys: Avoid passing string literal as char*
Pass the lpClass argument of RegCreateKeyEx as a real char[] instead of
a string literal.  At least one platform declares the argument as char*
instead of "const char*".
2010-12-28 09:57:09 -05:00
Brad King 3a14b6e556 KWSys: Do not mangle UNC paths in ConvertToUnixOutputPath (#10206)
This method replaces '//' with '/' to make the paths look nicer.
Originally it correctly skipped a leading '//' in a UNC path as the
comment says.  However, commit "Removed extra variable initializations"
(2005-04-15) accidentally removed the "pos=1" initializer.  It was then
incorrectly restored by commit "Added missing variable initialization"
(2005-04-15) as just "pos=0".  Restore the proper initializer.

The test for this added by commit "better coverage" (2006-07-31)
included incorrect output for a sample UNC-like path.  Fix it.
2010-12-14 18:13:03 -05:00
Brad King 306427c079 KWSys: Remove realpath from SystemTools::GetPath (#10335)
Commit "merge in changes for beos support" (2006-12-04) added a realpath
call for every directory parsed out of a PATH-style environment
variable.  No reason was given in the commit message or comments.

The call incorrectly resolves symlinks in referenced paths.  Remove it.
If BeOS support really needs it then it can be restored for that
platform with a full explanation.
2010-12-08 18:04:10 -05:00
Brad King 735a8c26d7 KWSys: Use SplitPath in GetActualCaseForPath
Avoid using the old SplitString method in favor of the more robust
SplitPath method.
2010-08-27 10:50:02 -04:00
Brad King 4746365e03 KWSys: Avoid empty string dereference in SplitString 2010-08-27 10:10:02 -04:00
Brad King 0f5189d144 KWSys: Fix GetActualCaseForPath for UNC paths
See issue #11023.

Author: Clinton Stimpson <clinton@elemtech.com>
2010-08-16 10:00:02 -04:00
Brad King 0a21abd690 KWSys: Fix SplitPath for leading '\' on Windows
Windows paths may begin with a single backslash when the drive letter is
omitted.  Recognize this as a root path component.
2010-08-16 09:10:03 -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 c15ed3294c KWSys: Avoid stat in CopyFileAlways (#10790)
On Windows 7 the file size reported by 'stat' on a new file sometimes
reports zero even though the real size is correct.  This causes our
CopyFileAlways method to falsely detect copy failure.  Work around the
problem by trusting the state of ofstream after writing the file.
2010-06-03 12:46:11 -04:00