- Jul 15, 2015
-
-
Two new tests were added to testProcess: * Test 9 is constructed of the root test process, a child process, and a grandchild process. The grandchild ignores all Ctrl+C signals and then sleeps. The child runs the grandchild normally. The root process runs the child in a new process group, sends it a Ctrl+C signal, and then lets the process expire to prove that the child was blocked waiting for the uninterruptable grandchild to die. * Test 10 is constructed of the root test process, a child process, and a grandchild process. The grandchild sleeps and processes signals normally. The child runs the grandchild in a new process group. The root process runs the child in a new process group as well, sends it a Ctrl+C, and then verifies that: (1) the child does indeed terminate with an interrupt signal, (2) the child did not expire, proving that it retransmitted the signal to the sleeping grandchild before waiting for the grandchild to terminate. Change-Id: Iba5bee546a82eb61a41d4194341e9382a00279d4
-
kwsysProcess_SetOption now allows you to specify a new kwsysProcess_Option_CreateProcessGroup option, which creates the process in a new process group (Windows/UNIX) and a new session (UNIX). Child process groups receive signals separately from their parents. This allowed for the introduction of the new kwsysProcess_Interrupt function, which allows one to safely request the child process in its own group to terminate. The Ctrl+C handler also manually sends that signal to child process groups, since it's no longer automatic. Change-Id: Id0a420ad65f1b1c1d299ac0eb95fbb8b50a52409
-
The following applies to any KWSys console app on Windows or UNIX (e.g. cmake.exe): The default behavior of such an app when Ctrl+C is pressed is to call ExitProcess or _exit. If the user has a subprocess open (e.g. by way of cmake --build) when this happens, the subprocess will be orphaned because the kwsys-based program will immediately exit. This can lead to odd behavior such as the orphaned subprocess continuing to run and mix output with the operating system shell. We prevent this behavior on Windows by tracking all subprocesses and waiting for their termination when Ctrl+C is pressed before allowing the call to ExitProcess to proceed. On UNIX, we reap every single child process and then call _exit. Change-Id: Iebd2eedb1c06719e9797dd5b1309d473145476a8
-
Code for delaying/sleeping has been unified into one location. Change-Id: I234f3e1be667539e8126f7ed24aec95fe14284b3
-
Change-Id: I821de08dd10b5f1f4af6287a5d7dc6e03e2c1e78
-
- Jul 10, 2015
-
-
Brad King authored
Use a case-insensitive map key since paths of all case combinations should map to the same actual case. This may reduce the number of copies of each path differing only by case in the map. Change-Id: Ic5460fcf14fa263d45ef1909bf80a81c6f4791a4
-
- Jul 08, 2015
-
-
Brad King authored
The shell escaping APIs are very specific to CMake and are not used by other KWSys clients. They are moving to CMake proper, so drop them from KWSys. Change-Id: I422c76f6515d51a352e112828533d6e3fd1a5440
-
- Jul 07, 2015
-
-
Brad King authored
Use an algorithm that simply reverses CommandLineToArgvW to construct a string encoding command line arguments. Change-Id: I52a5d27679da3962eda36b8bb6a1fb714a735a1d
-
- Jul 02, 2015
-
-
Brad King authored
Change-Id: I5eb32dd2b8ca02800f15375dd4959c5c80d9ba7a
-
- Jun 15, 2015
-
-
Brad King authored
The latter is predefined by Windows toolchains and is more reliable. Change-Id: I598092af2965b4660b57d490caecdb678f5147ca
-
- Jun 03, 2015
-
-
Implement on platforms with getloadavg() available. Also implement on Windows using an approach like that described here: http://stackoverflow.com/questions/23143693/retrieving-cpu-load-percent-total-in-windows-with-c Co-Author: Betsy McPhail <betsy.mcphail@kitware.com> Co-Author: Brad King <brad.king@kitware.com> Change-Id: I5c50b964a05ece97e88f246df532ed6881bf2dce
-
- May 27, 2015
-
-
Brad King authored
Some use cases may have a race condition such that the file to be removed disappears before we remove it. Detect when removal fails due to the file already missing and tolerate it without failing. On Windows this requires using DeleteFileW instead of _wunlink because the latter does not seem to always update errno. Try to delete before checking permissions because getting permissions will fail if the file is missing. Change-Id: If1922a15d742daca6d252c594284800d60cc1fce
-
- May 18, 2015
-
-
Matt McCormick authored
When Android is compiled with "-static" in CMAKE_EXE_LINKER_FLAGS, only the shared version of libc has utimensat. By setting CMP0056 to NEW, CMAKE_EXE_LINKER_FLAGS is passed to the try_compile in KWSYS_PLATFORM_CXX_TEST so KWSYS_CXX_HAS_UTIMENSAT gets the correct result. Change-Id: Ia5ff7abaafb92e043927b57c5f2858259195235f
-
- May 12, 2015
-
-
Brad King authored
MIPS machines are biendian hence they can run both big endian kernels e.g. Debian mips architecture, and little endian kernels e.g. Debian mipsel architecture. Use predefined macros to distinguish them. Change-Id: I75fccd3cb1ef7915c8754ebbb64cb52a948b4ad8 Reported-by:
Mathieu Malaterre <malat@debian.org> Inspired-by:
Modestas Vainius <modax@debian.org>
-
- May 05, 2015
-
-
Brad King authored
When enabled, ignore all stderr pipe configuration options and just give the child a copy of stdout as its stderr. Change-Id: I87a64657cc701b706da78f7bfc56ad0071383372
-
Brad King authored
Consolidate logic to prepare stdin/stdout/stderr in the same way before starting any processes. This will simplify alternative approaches to select the child pipes. Change-Id: I36175a8cfc2578543103297420908a539ad71a3a
-
- May 04, 2015
-
-
Brad King authored
Suggested-by:
Gerhard Grimm <gerhard.grimm@detec.com> Change-Id: I22bf9a8e14c5c3862f6422ec2d8cc4da645a5a0d
-
- Apr 19, 2015
-
-
Brad King authored
Glob.hxx:58:5: warning: definition of implicit copy assignment operator for 'Message' is deprecated because it has a user-declared copy constructor [-Wdeprecated] Message(const Message& msg) : ^ Change-Id: Id6d28d9e5b4ed556556a5add10881f1bcd4525b7
-
- Apr 16, 2015
-
-
Brad King authored
Since we do not package the KWSys source tree directly and always merge snapshots of its content into other project subtrees, we should carry the .gitattributes file into the other projects to that the attributes apply in their source trees too. Change-Id: I039b151443486d24ff798fa0c677b62620cec0b7
-
- Apr 10, 2015
-
-
Brad King authored
Change-Id: Ic8f5dec4fbada46d68ed02b5916b61998966d85e
-
- Mar 18, 2015
-
-
Change-Id: I6b54e7adee6cf92f4b525c49a732efca2193185a
-
Change-Id: Iaa8fda477e06f32f8a1fd7305374d9c6d192a521
-
- Mar 17, 2015
-
-
Brad King authored
Change-Id: If0017ff59c6a3b14add76aba4aa782d1635895b8 Reported-by:
Sean McBride <sean@rogue-research.com>
-
- Mar 10, 2015
-
-
Brad King authored
Match the linkage of the data they reference. Suggested-by:
Mark Millard <markmi@dsl-only.net> Change-Id: I379cf9bb4519a87651ad05c1dfc2a6bfd43ec0ff
-
- Mar 03, 2015
-
-
Glob now supports listing of directories in recursive mode and disabling listing of directories in non recursive mode. In recursive mode when directory listing is enabled directory symlinks are also listed. For backward compatibility there is a separate flag for recursive and non-recursive globbing mode as this functionality was previously inconsistent. Change-Id: I6099c0c568a04caf7c9a36a5d476390371115790
-
Prevent cyclic recursion of type "a/b/c -> a" when glob recurse is used with follow symlinks so that each directory symbolic link is traversed only once and skipped on revisit. Change-Id: I6f52489198d692c3c0b0d94986db0e664d050342
-
- Feb 27, 2015
-
-
On some stream libraries failbit is not set when trying to read past EOF. Instead, always exit the copy loop when gcount() is zero. Change-Id: Ied2a6a366ade185426c34ef58795e66472dc71dc
-
- Feb 25, 2015
-
-
When globing non recursive with for example '/a/*/*' the result contained '//' instead of a single slash between directories. Change-Id: I6adb672cde6e327c8fda6e29ff7d3b8ae5c7cb6b
-
In RecurseDirectory and ProcessDirectory a "fullname" variable is computed but not used. Remove it altogether. Change-Id: I97493f7a34f1a600715c8301ccd6377c3422212f
-
- Feb 24, 2015
-
-
Allow the caller to specify a pointer to a string to receive the error message on failure. Change-Id: Ibe537812bd18cd9cbac7bf735546a276c259402d
-
- Jan 23, 2015
-
-
Brad King authored
In Directory::GetNumberOfFilesInDirectory add a missing check for NULL. Change-Id: I6946eec913e60f786a419264555ec800f9b34d38
-
- Jan 20, 2015
-
-
Brad King authored
The MS standard library basic_istream and basic_ostream destructors have an exception specification macro _NOEXCEPT. Use it when we define our basic_ifstream and basic_ofstream destructors to match their parent class. Change-Id: I35e944f50fbea8c5a0c2a1a9b9389f59b63ac455
-
- Jan 09, 2015
-
-
Clang 3.5.0 errors out on the implicit void* -> T* cast. Change-Id: Ie0b0dd25a32e1a5692900d9f1035a423a056c413
-
Using iostream and cxxabi.h together causes a compile failure .../CC-gcc/include/c++/4.8.2/cxxabi.h", line 131: Error: Only one of a set of overloaded functions can be extern "C". See https://community.oracle.com/thread/3644901 for details. This only happens if the iostream include is before the cxxabi include. The available solutions are: re-order the includes in SystemInformation.cxx, skip the test for KWSYS_CXX_HAS_CXXABI, or cause it to fail by adding the include. Do the latter for now. Change-Id: Ia1a6a6fca12eb9a42f4a4be5252f22fb6e74a318
-
The <fcntl.h> header needs to be included before <string> is included when using stlport. Otherwise: "SystemTools.cxx", line 1240: Error: UTIME_OMIT is not defined. "SystemTools.cxx", line 1240: Error: UTIME_NOW is not defined. "SystemTools.cxx", line 1241: Error: AT_FDCWD is not defined. Change-Id: I3441ae3a7007c53ad97dea42ec48fedca8cc010c
-
Change-Id: I08ee07db55b21ab886658d2ae50a82775180f037
-
- Jan 08, 2015
-
-
Change-Id: I20b5dbb5504e43744ba95a1c5b0901858ea29735
-
- Dec 23, 2014
-
-
Brad King authored
Ensure the Encode/Decode APIs can deal with any buffer that can fit in memory. Change-Id: I3ecc50d5b9419a36f95b0888c71e0309a8cb674a
-