瀏覽代碼

KWSys 2016-11-09 (18c65411)

Code extracted from:

    http://public.kitware.com/KWSys.git

at commit 18c654114de3aa65429542f95308720bc68f9231 (master).

Upstream Shortlog
-----------------

Brad King (14):
      37306a1c FStream: Quiet unused argument warning
      15e90a3c Sort includes to stabilize include order w.r.t. clang-format
      26509227 Copyright.txt: Add notice of copyright by contributors
      fc42d3f2 Add temporary script to filter license notices
      c41c1bc4 Simplify KWSys per-source license notices
      1d4c0b4a Remove temporary script that filtered license notices
      a4f5ef79 SystemInformation: Remove stray comment
      8649a886 kwsysPrivate: Protect KWSYS_HEADER macro from clang-format
      89b98af5 Configure clang-format for KWSys source tree
      547dacad Add a script to run clang-format on the entire source tree
      aa94be0c CONTRIBUTING: Add a section on coding style
      6604c4b6 Empty commit at end of history preceding clang-format style transition
      2b3e2b1c Tell Git to not export 'clang-format' infrastructure
      18c65411 FStream: Include Configure.hxx before other headers

Kitware Robot (1):
      6c973b46 Revise C++ coding style using clang-format
KWSys Upstream 9 年之前
父節點
當前提交
773b36e5d4
共有 73 個文件被更改,包括 6989 次插入8263 次删除
  1. 2 0
      .gitattributes
  2. 87 131
      Base64.c
  3. 35 47
      Base64.h.in
  4. 2 11
      CMakeLists.txt
  5. 13 0
      CONTRIBUTING.rst
  6. 3 11
      CTestConfig.cmake
  7. 369 417
      CommandLineArguments.cxx
  8. 62 71
      CommandLineArguments.hxx.in
  9. 79 88
      Configure.h.in
  10. 11 18
      Configure.hxx.in
  11. 320 309
      ConsoleBuf.hxx.in
  12. 12 5
      Copyright.txt
  13. 56 84
      Directory.cxx
  14. 7 16
      Directory.hxx.in
  15. 100 129
      DynamicLoader.cxx
  16. 17 26
      DynamicLoader.hxx.in
  17. 24 34
      Encoding.h.in
  18. 31 41
      Encoding.hxx.in
  19. 20 33
      EncodingC.c
  20. 44 66
      EncodingCXX.cxx
  21. 22 45
      FStream.cxx
  22. 208 220
      FStream.hxx.in
  23. 158 258
      Glob.cxx
  24. 27 37
      Glob.hxx.in
  25. 125 120
      IOStream.cxx
  26. 63 73
      IOStream.hxx.in
  27. 252 271
      MD5.c
  28. 27 37
      MD5.h.in
  29. 127 133
      Process.h.in
  30. 268 337
      ProcessUNIX.c
  31. 359 452
      ProcessWin32.c
  32. 585 614
      RegularExpression.cxx
  33. 65 83
      RegularExpression.hxx.in
  34. 270 316
      SharedForward.h.in
  35. 41 56
      String.c
  36. 13 23
      String.h.in
  37. 31 31
      String.hxx.in
  38. 80 141
      System.c
  39. 11 21
      System.h.in
  40. 343 392
      SystemInformation.cxx
  41. 24 37
      SystemInformation.hxx.in
  42. 262 350
      SystemTools.cxx
  43. 133 161
      SystemTools.hxx.in
  44. 140 175
      Terminal.c
  45. 101 90
      Terminal.h.in
  46. 53 36
      hash_fun.hxx.in
  47. 147 99
      hash_map.hxx.in
  48. 125 92
      hash_set.hxx.in
  49. 241 245
      hashtable.hxx.in
  50. 2 11
      kwsysHeaderDump.pl
  51. 3 11
      kwsysPlatformTests.cmake
  52. 24 28
      kwsysPlatformTestsC.c
  53. 81 66
      kwsysPlatformTestsCXX.cxx
  54. 6 13
      kwsysPrivate.h
  55. 111 90
      testCommandLineArguments.cxx
  56. 34 49
      testCommandLineArguments1.cxx
  57. 233 179
      testConsoleBuf.cxx
  58. 6 14
      testConsoleBuf.hxx
  59. 5 13
      testConsoleBufChild.cxx
  60. 39 50
      testDynamicLoader.cxx
  61. 3 12
      testDynload.c
  62. 11 20
      testEncode.c
  63. 51 79
      testEncoding.cxx
  64. 46 68
      testFStream.cxx
  65. 10 21
      testFail.c
  66. 13 24
      testHashSTL.cxx
  67. 64 89
      testIOS.cxx
  68. 205 249
      testProcess.c
  69. 9 18
      testSharedForward.c.in
  70. 27 40
      testSystemInformation.cxx
  71. 404 612
      testSystemTools.cxx
  72. 2 11
      testSystemTools.h.in
  73. 5 14
      testTerminal.c

+ 2 - 0
.gitattributes

@@ -3,6 +3,8 @@
 
 
 /GitSetup        export-ignore
 /GitSetup        export-ignore
 /SetupForDevelopment.sh  export-ignore  eol=lf
 /SetupForDevelopment.sh  export-ignore  eol=lf
+/clang-format.bash export-ignore eol=lf
+/.clang-format   export-ignore
 
 
 /CONTRIBUTING.rst conflict-marker-size=78
 /CONTRIBUTING.rst conflict-marker-size=78
 
 

+ 87 - 131
Base64.c

@@ -1,65 +1,43 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Base64.h)
 #include KWSYS_HEADER(Base64.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "Base64.h.in"
+#include "Base64.h.in"
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 static const unsigned char kwsysBase64EncodeTable[65] =
 static const unsigned char kwsysBase64EncodeTable[65] =
-"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-"abcdefghijklmnopqrstuvwxyz"
-"0123456789+/";
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+  "abcdefghijklmnopqrstuvwxyz"
+  "0123456789+/";
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
-static const unsigned char kwsysBase64DecodeTable[256] =
-{
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0x3E,0xFF,0xFF,0xFF,0x3F,
-  0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,
-  0x3C,0x3D,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,
-  0xFF,0x00,0x01,0x02,0x03,0x04,0x05,0x06,
-  0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,
-  0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
-  0x17,0x18,0x19,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,
-  0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
-  0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,
-  0x31,0x32,0x33,0xFF,0xFF,0xFF,0xFF,0xFF,
+static const unsigned char kwsysBase64DecodeTable[256] = {
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0xFF, 0xFF, 0xFF, 0x3F, 0x34, 0x35, 0x36, 0x37,
+  0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
+  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
+  0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
+  0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D,
+  0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
   /*------------------------------------*/
   /*------------------------------------*/
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
 };
 };
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
@@ -76,27 +54,30 @@ static unsigned char kwsysBase64DecodeChar(unsigned char c)
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Encode 3 bytes into a 4 byte string. */
 /* Encode 3 bytes into a 4 byte string. */
-void kwsysBase64_Encode3(const unsigned char *src, unsigned char *dest)
+void kwsysBase64_Encode3(const unsigned char* src, unsigned char* dest)
 {
 {
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
-  dest[1] = kwsysBase64EncodeChar(((src[0] << 4) & 0x30)|((src[1] >> 4) & 0x0F));
-  dest[2] = kwsysBase64EncodeChar(((src[1] << 2) & 0x3C)|((src[2] >> 6) & 0x03));
+  dest[1] =
+    kwsysBase64EncodeChar(((src[0] << 4) & 0x30) | ((src[1] >> 4) & 0x0F));
+  dest[2] =
+    kwsysBase64EncodeChar(((src[1] << 2) & 0x3C) | ((src[2] >> 6) & 0x03));
   dest[3] = kwsysBase64EncodeChar(src[2] & 0x3F);
   dest[3] = kwsysBase64EncodeChar(src[2] & 0x3F);
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Encode 2 bytes into a 4 byte string. */
 /* Encode 2 bytes into a 4 byte string. */
-void kwsysBase64_Encode2(const unsigned char *src, unsigned char *dest)
+void kwsysBase64_Encode2(const unsigned char* src, unsigned char* dest)
 {
 {
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
-  dest[1] = kwsysBase64EncodeChar(((src[0] << 4) & 0x30)|((src[1] >> 4) & 0x0F));
+  dest[1] =
+    kwsysBase64EncodeChar(((src[0] << 4) & 0x30) | ((src[1] >> 4) & 0x0F));
   dest[2] = kwsysBase64EncodeChar(((src[1] << 2) & 0x3C));
   dest[2] = kwsysBase64EncodeChar(((src[1] << 2) & 0x3C));
   dest[3] = '=';
   dest[3] = '=';
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Encode 1 bytes into a 4 byte string. */
 /* Encode 1 bytes into a 4 byte string. */
-void kwsysBase64_Encode1(const unsigned char *src, unsigned char *dest)
+void kwsysBase64_Encode1(const unsigned char* src, unsigned char* dest)
 {
 {
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
   dest[0] = kwsysBase64EncodeChar((src[0] >> 2) & 0x3F);
   dest[1] = kwsysBase64EncodeChar(((src[0] << 4) & 0x30));
   dest[1] = kwsysBase64EncodeChar(((src[0] << 4) & 0x30));
@@ -115,54 +96,48 @@ void kwsysBase64_Encode1(const unsigned char *src, unsigned char *dest)
    actually knowing how much data to expect (if the input is not a multiple of
    actually knowing how much data to expect (if the input is not a multiple of
    3 bytes then the extra padding needed to complete the encode 4 bytes will
    3 bytes then the extra padding needed to complete the encode 4 bytes will
    stop the decoding anyway).  */
    stop the decoding anyway).  */
-size_t kwsysBase64_Encode(const unsigned char *input,
-                          size_t length,
-                          unsigned char *output,
-                          int mark_end)
+size_t kwsysBase64_Encode(const unsigned char* input, size_t length,
+                          unsigned char* output, int mark_end)
 {
 {
-  const unsigned char *ptr = input;
-  const unsigned char *end = input + length;
-  unsigned char *optr = output;
+  const unsigned char* ptr = input;
+  const unsigned char* end = input + length;
+  unsigned char* optr = output;
 
 
   /* Encode complete triplet */
   /* Encode complete triplet */
 
 
-  while ((end - ptr) >= 3)
-    {
+  while ((end - ptr) >= 3) {
     kwsysBase64_Encode3(ptr, optr);
     kwsysBase64_Encode3(ptr, optr);
     ptr += 3;
     ptr += 3;
     optr += 4;
     optr += 4;
-    }
+  }
 
 
   /* Encodes a 2-byte ending into 3 bytes and 1 pad byte and writes. */
   /* Encodes a 2-byte ending into 3 bytes and 1 pad byte and writes. */
 
 
-  if (end - ptr == 2)
-    {
+  if (end - ptr == 2) {
     kwsysBase64_Encode2(ptr, optr);
     kwsysBase64_Encode2(ptr, optr);
     optr += 4;
     optr += 4;
-    }
+  }
 
 
   /* Encodes a 1-byte ending into 2 bytes and 2 pad bytes */
   /* Encodes a 1-byte ending into 2 bytes and 2 pad bytes */
-  
-  else if (end - ptr == 1)
-    {
+
+  else if (end - ptr == 1) {
     kwsysBase64_Encode1(ptr, optr);
     kwsysBase64_Encode1(ptr, optr);
     optr += 4;
     optr += 4;
-    }
+  }
 
 
   /* Do we need to mark the end */
   /* Do we need to mark the end */
 
 
-  else if (mark_end)
-    {
+  else if (mark_end) {
     optr[0] = optr[1] = optr[2] = optr[3] = '=';
     optr[0] = optr[1] = optr[2] = optr[3] = '=';
     optr += 4;
     optr += 4;
-    }
+  }
 
 
   return (size_t)(optr - output);
   return (size_t)(optr - output);
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Decode 4 bytes into a 3 byte string. */
 /* Decode 4 bytes into a 3 byte string. */
-int kwsysBase64_Decode3(const unsigned char *src, unsigned char *dest)
+int kwsysBase64_Decode3(const unsigned char* src, unsigned char* dest)
 {
 {
   unsigned char d0, d1, d2, d3;
   unsigned char d0, d1, d2, d3;
 
 
@@ -170,35 +145,32 @@ int kwsysBase64_Decode3(const unsigned char *src, unsigned char *dest)
   d1 = kwsysBase64DecodeChar(src[1]);
   d1 = kwsysBase64DecodeChar(src[1]);
   d2 = kwsysBase64DecodeChar(src[2]);
   d2 = kwsysBase64DecodeChar(src[2]);
   d3 = kwsysBase64DecodeChar(src[3]);
   d3 = kwsysBase64DecodeChar(src[3]);
-  
+
   /* Make sure all characters were valid */
   /* Make sure all characters were valid */
 
 
-  if (d0 == 0xFF || d1 == 0xFF || d2 == 0xFF || d3 == 0xFF)
-    { 
-    return 0; 
-    }
-  
+  if (d0 == 0xFF || d1 == 0xFF || d2 == 0xFF || d3 == 0xFF) {
+    return 0;
+  }
+
   /* Decode the 3 bytes */
   /* Decode the 3 bytes */
 
 
   dest[0] = (unsigned char)(((d0 << 2) & 0xFC) | ((d1 >> 4) & 0x03));
   dest[0] = (unsigned char)(((d0 << 2) & 0xFC) | ((d1 >> 4) & 0x03));
   dest[1] = (unsigned char)(((d1 << 4) & 0xF0) | ((d2 >> 2) & 0x0F));
   dest[1] = (unsigned char)(((d1 << 4) & 0xF0) | ((d2 >> 2) & 0x0F));
   dest[2] = (unsigned char)(((d2 << 6) & 0xC0) | ((d3 >> 0) & 0x3F));
   dest[2] = (unsigned char)(((d2 << 6) & 0xC0) | ((d3 >> 0) & 0x3F));
-  
+
   /* Return the number of bytes actually decoded */
   /* Return the number of bytes actually decoded */
 
 
-  if (src[2] == '=') 
-    { 
-    return 1; 
-    }
-  if (src[3] == '=') 
-    { 
-    return 2; 
-    }
+  if (src[2] == '=') {
+    return 1;
+  }
+  if (src[3] == '=') {
+    return 2;
+  }
   return 3;
   return 3;
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
-/* Decode bytes from the input buffer and store the decoded stream 
+/* Decode bytes from the input buffer and store the decoded stream
    into the output buffer until 'length' bytes have been decoded.  Return the
    into the output buffer until 'length' bytes have been decoded.  Return the
    real length of the decoded stream (which should be equal to 'length'). Note
    real length of the decoded stream (which should be equal to 'length'). Note
    that the output buffer must be allocated by the caller.  If
    that the output buffer must be allocated by the caller.  If
@@ -207,73 +179,57 @@ int kwsysBase64_Decode3(const unsigned char *src, unsigned char *dest)
    'length' parameter is ignored. This enables the caller to decode a stream
    'length' parameter is ignored. This enables the caller to decode a stream
    without actually knowing how much decoded data to expect (of course, the
    without actually knowing how much decoded data to expect (of course, the
    buffer must be large enough). */
    buffer must be large enough). */
-size_t kwsysBase64_Decode(const unsigned char *input,
-                          size_t length,
-                          unsigned char *output,
-                          size_t max_input_length)
+size_t kwsysBase64_Decode(const unsigned char* input, size_t length,
+                          unsigned char* output, size_t max_input_length)
 {
 {
-  const unsigned char *ptr = input;
-  unsigned char *optr = output;
+  const unsigned char* ptr = input;
+  unsigned char* optr = output;
 
 
   /* Decode complete triplet */
   /* Decode complete triplet */
 
 
-  if (max_input_length)
-    {
-    const unsigned char *end = input + max_input_length;
-    while (ptr < end)
-      {
+  if (max_input_length) {
+    const unsigned char* end = input + max_input_length;
+    while (ptr < end) {
       int len = kwsysBase64_Decode3(ptr, optr);
       int len = kwsysBase64_Decode3(ptr, optr);
       optr += len;
       optr += len;
-      if(len < 3)
-        {
+      if (len < 3) {
         return (size_t)(optr - output);
         return (size_t)(optr - output);
-        }
-      ptr += 4;
       }
       }
-    } 
-  else 
-    {
-    unsigned char *oend = output + length;
-    while ((oend - optr) >= 3)
-      {
+      ptr += 4;
+    }
+  } else {
+    unsigned char* oend = output + length;
+    while ((oend - optr) >= 3) {
       int len = kwsysBase64_Decode3(ptr, optr);
       int len = kwsysBase64_Decode3(ptr, optr);
       optr += len;
       optr += len;
-      if(len < 3)
-        {
+      if (len < 3) {
         return (size_t)(optr - output);
         return (size_t)(optr - output);
-        }
-      ptr += 4;
       }
       }
+      ptr += 4;
+    }
 
 
     /* Decode the last triplet */
     /* Decode the last triplet */
-  
-    if (oend - optr == 2)
-      {
+
+    if (oend - optr == 2) {
       unsigned char temp[3];
       unsigned char temp[3];
       int len = kwsysBase64_Decode3(ptr, temp);
       int len = kwsysBase64_Decode3(ptr, temp);
-      if(len >= 2)
-        {
+      if (len >= 2) {
         optr[0] = temp[0];
         optr[0] = temp[0];
         optr[1] = temp[1];
         optr[1] = temp[1];
         optr += 2;
         optr += 2;
-        }
-      else if(len > 0)
-        {
+      } else if (len > 0) {
         optr[0] = temp[0];
         optr[0] = temp[0];
         optr += 1;
         optr += 1;
-        }
       }
       }
-    else if (oend - optr == 1)
-      {
+    } else if (oend - optr == 1) {
       unsigned char temp[3];
       unsigned char temp[3];
       int len = kwsysBase64_Decode3(ptr, temp);
       int len = kwsysBase64_Decode3(ptr, temp);
-      if(len > 0)
-        {
+      if (len > 0) {
         optr[0] = temp[0];
         optr[0] = temp[0];
         optr += 1;
         optr += 1;
-        }
       }
       }
     }
     }
+  }
 
 
   return (size_t)(optr - output);
   return (size_t)(optr - output);
 }
 }

+ 35 - 47
Base64.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Base64_h
 #ifndef @KWSYS_NAMESPACE@_Base64_h
 #define @KWSYS_NAMESPACE@_Base64_h
 #define @KWSYS_NAMESPACE@_Base64_h
 
 
@@ -21,41 +12,40 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysBase64          kwsys_ns(Base64)
-# define kwsysBase64_Decode   kwsys_ns(Base64_Decode)
-# define kwsysBase64_Decode3  kwsys_ns(Base64_Decode3)
-# define kwsysBase64_Encode   kwsys_ns(Base64_Encode)
-# define kwsysBase64_Encode1  kwsys_ns(Base64_Encode1)
-# define kwsysBase64_Encode2  kwsys_ns(Base64_Encode2)
-# define kwsysBase64_Encode3  kwsys_ns(Base64_Encode3)
+#define kwsysBase64 kwsys_ns(Base64)
+#define kwsysBase64_Decode kwsys_ns(Base64_Decode)
+#define kwsysBase64_Decode3 kwsys_ns(Base64_Decode3)
+#define kwsysBase64_Encode kwsys_ns(Base64_Encode)
+#define kwsysBase64_Encode1 kwsys_ns(Base64_Encode1)
+#define kwsysBase64_Encode2 kwsys_ns(Base64_Encode2)
+#define kwsysBase64_Encode3 kwsys_ns(Base64_Encode3)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
  * Encode 3 bytes into a 4 byte string.
  * Encode 3 bytes into a 4 byte string.
  */
  */
-kwsysEXPORT void kwsysBase64_Encode3(const unsigned char *src,
-                                     unsigned char *dest);
+kwsysEXPORT void kwsysBase64_Encode3(const unsigned char* src,
+                                     unsigned char* dest);
 
 
 /**
 /**
  * Encode 2 bytes into a 4 byte string.
  * Encode 2 bytes into a 4 byte string.
  */
  */
-kwsysEXPORT void kwsysBase64_Encode2(const unsigned char *src,
-                                     unsigned char *dest);
+kwsysEXPORT void kwsysBase64_Encode2(const unsigned char* src,
+                                     unsigned char* dest);
 
 
 /**
 /**
  * Encode 1 bytes into a 4 byte string.
  * Encode 1 bytes into a 4 byte string.
  */
  */
-kwsysEXPORT void kwsysBase64_Encode1(const unsigned char *src,
-                                     unsigned char *dest);
+kwsysEXPORT void kwsysBase64_Encode1(const unsigned char* src,
+                                     unsigned char* dest);
 
 
 /**
 /**
  * Encode 'length' bytes from the input buffer and store the encoded
  * Encode 'length' bytes from the input buffer and store the encoded
@@ -70,17 +60,16 @@ kwsysEXPORT void kwsysBase64_Encode1(const unsigned char *src,
  * the extra padding needed to complete the encode 4 bytes will stop
  * the extra padding needed to complete the encode 4 bytes will stop
  * the decoding anyway).
  * the decoding anyway).
  */
  */
-kwsysEXPORT size_t kwsysBase64_Encode(const unsigned char *input,
-                                      size_t length,
-                                      unsigned char *output,
+kwsysEXPORT size_t kwsysBase64_Encode(const unsigned char* input,
+                                      size_t length, unsigned char* output,
                                       int mark_end);
                                       int mark_end);
 
 
 /**
 /**
  * Decode 4 bytes into a 3 byte string.  Returns the number of bytes
  * Decode 4 bytes into a 3 byte string.  Returns the number of bytes
  * actually decoded.
  * actually decoded.
  */
  */
-kwsysEXPORT int kwsysBase64_Decode3(const unsigned char *src,
-                                    unsigned char *dest);
+kwsysEXPORT int kwsysBase64_Decode3(const unsigned char* src,
+                                    unsigned char* dest);
 
 
 /**
 /**
  * Decode bytes from the input buffer and store the decoded stream
  * Decode bytes from the input buffer and store the decoded stream
@@ -94,9 +83,8 @@ kwsysEXPORT int kwsysBase64_Decode3(const unsigned char *src,
  * much decoded data to expect (of course, the buffer must be large
  * much decoded data to expect (of course, the buffer must be large
  * enough).
  * enough).
  */
  */
-kwsysEXPORT size_t kwsysBase64_Decode(const unsigned char *input,
-                                      size_t length,
-                                      unsigned char *output,
+kwsysEXPORT size_t kwsysBase64_Decode(const unsigned char* input,
+                                      size_t length, unsigned char* output,
                                       size_t max_input_length);
                                       size_t max_input_length);
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
@@ -106,17 +94,17 @@ kwsysEXPORT size_t kwsysBase64_Decode(const unsigned char *input,
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysBase64
-#  undef kwsysBase64_Decode
-#  undef kwsysBase64_Decode3
-#  undef kwsysBase64_Encode
-#  undef kwsysBase64_Encode1
-#  undef kwsysBase64_Encode2
-#  undef kwsysBase64_Encode3
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysBase64
+#undef kwsysBase64_Decode
+#undef kwsysBase64_Decode3
+#undef kwsysBase64_Encode
+#undef kwsysBase64_Encode1
+#undef kwsysBase64_Encode2
+#undef kwsysBase64_Encode3
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 2 - 11
CMakeLists.txt

@@ -1,14 +1,5 @@
-#=============================================================================
-# KWSys - Kitware System Library
-# Copyright 2000-2011 Kitware, Inc., Insight Software Consortium
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing#kwsys for details.
 
 
 # The Kitware System Library is intended to be included in other
 # The Kitware System Library is intended to be included in other
 # projects.  It is completely configurable in that the library's
 # projects.  It is completely configurable in that the library's

+ 13 - 0
CONTRIBUTING.rst

@@ -24,6 +24,19 @@ KWSys has no independent issue tracker.  After encountering an issue
 Otherwise please report the issue to the tracker for the project that
 Otherwise please report the issue to the tracker for the project that
 hosts the copy of KWSys in which the problem was found.
 hosts the copy of KWSys in which the problem was found.
 
 
+Code Style
+==========
+
+We use `clang-format`_ to define our style for C++ code in the KWSys source
+tree.  See the `.clang-format`_ configuration file for our style settings.
+Use ``clang-format`` version 3.8 or higher to format source files.
+See also the `clang-format.bash`_ script.
+
+.. _`clang-format`: http://clang.llvm.org/docs/ClangFormat.html
+.. _`.clang-format`: .clang-format
+.. _`clang-format.bash`: clang-format.bash
+
+
 License
 License
 =======
 =======
 
 

+ 3 - 11
CTestConfig.cmake

@@ -1,14 +1,6 @@
-#=============================================================================
-# KWSys - Kitware System Library
-# Copyright 2000-2012 Kitware, Inc., Insight Software Consortium
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing#kwsys for details.
+
 set(CTEST_PROJECT_NAME "KWSys")
 set(CTEST_PROJECT_NAME "KWSys")
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_METHOD "http")

+ 369 - 417
CommandLineArguments.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 
 
@@ -18,38 +9,37 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "CommandLineArguments.hxx.in"
-# include "Configure.hxx.in"
-# include "String.hxx.in"
+#include "CommandLineArguments.hxx.in"
+#include "Configure.hxx.in"
+#include "String.hxx.in"
 #endif
 #endif
 
 
-#include <vector>
+#include <iostream>
 #include <map>
 #include <map>
 #include <set>
 #include <set>
 #include <sstream>
 #include <sstream>
-#include <iostream>
+#include <vector>
 
 
 #include <stdio.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <string.h>
 #include <string.h>
 
 
 #ifdef _MSC_VER
 #ifdef _MSC_VER
-# pragma warning (disable: 4786)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #if defined(__sgi) && !defined(__GNUC__)
 #if defined(__sgi) && !defined(__GNUC__)
-# pragma set woff 1375 /* base class destructor not virtual */
+#pragma set woff 1375 /* base class destructor not virtual */
 #endif
 #endif
 
 
 #if 0
 #if 0
-#  define CommandLineArguments_DEBUG(x) \
+#define CommandLineArguments_DEBUG(x)                                         \
   std::cout << __LINE__ << " CLA: " << x << std::endl
   std::cout << __LINE__ << " CLA: " << x << std::endl
 #else
 #else
-#  define CommandLineArguments_DEBUG(x)
+#define CommandLineArguments_DEBUG(x)
 #endif
 #endif
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 //============================================================================
 //============================================================================
@@ -63,24 +53,27 @@ struct CommandLineArgumentsCallbackStructure
   int VariableType;
   int VariableType;
   const char* Help;
   const char* Help;
 };
 };
- 
-class CommandLineArgumentsVectorOfStrings : 
-  public std::vector<kwsys::String> {};
-class CommandLineArgumentsSetOfStrings :
-  public std::set<kwsys::String> {};
-class CommandLineArgumentsMapOfStrucs : 
-  public std::map<kwsys::String,
-    CommandLineArgumentsCallbackStructure> {};
+
+class CommandLineArgumentsVectorOfStrings : public std::vector<kwsys::String>
+{
+};
+class CommandLineArgumentsSetOfStrings : public std::set<kwsys::String>
+{
+};
+class CommandLineArgumentsMapOfStrucs
+  : public std::map<kwsys::String, CommandLineArgumentsCallbackStructure>
+{
+};
 
 
 class CommandLineArgumentsInternal
 class CommandLineArgumentsInternal
 {
 {
 public:
 public:
   CommandLineArgumentsInternal()
   CommandLineArgumentsInternal()
-    {
+  {
     this->UnknownArgumentCallback = 0;
     this->UnknownArgumentCallback = 0;
     this->ClientData = 0;
     this->ClientData = 0;
     this->LastArgument = 0;
     this->LastArgument = 0;
-    }
+  }
 
 
   typedef CommandLineArgumentsVectorOfStrings VectorOfStrings;
   typedef CommandLineArgumentsVectorOfStrings VectorOfStrings;
   typedef CommandLineArgumentsMapOfStrucs CallbacksMap;
   typedef CommandLineArgumentsMapOfStrucs CallbacksMap;
@@ -92,7 +85,7 @@ public:
   CallbacksMap Callbacks;
   CallbacksMap Callbacks;
 
 
   CommandLineArguments::ErrorCallbackType UnknownArgumentCallback;
   CommandLineArguments::ErrorCallbackType UnknownArgumentCallback;
-  void*             ClientData;
+  void* ClientData;
 
 
   VectorOfStrings::size_type LastArgument;
   VectorOfStrings::size_type LastArgument;
 
 
@@ -123,10 +116,9 @@ void CommandLineArguments::Initialize(int argc, const char* const argv[])
 
 
   this->Initialize();
   this->Initialize();
   this->Internals->Argv0 = argv[0];
   this->Internals->Argv0 = argv[0];
-  for ( cc = 1; cc < argc; cc ++ )
-    {
+  for (cc = 1; cc < argc; cc++) {
     this->ProcessArgument(argv[cc]);
     this->ProcessArgument(argv[cc]);
-    }
+  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -150,32 +142,25 @@ void CommandLineArguments::ProcessArgument(const char* arg)
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 bool CommandLineArguments::GetMatchedArguments(
 bool CommandLineArguments::GetMatchedArguments(
-  std::vector<std::string>* matches,
-  const std::string& arg)
+  std::vector<std::string>* matches, const std::string& arg)
 {
 {
   matches->clear();
   matches->clear();
   CommandLineArguments::Internal::CallbacksMap::iterator it;
   CommandLineArguments::Internal::CallbacksMap::iterator it;
 
 
   // Does the argument match to any we know about?
   // Does the argument match to any we know about?
-  for ( it = this->Internals->Callbacks.begin();
-    it != this->Internals->Callbacks.end();
-    it ++ )
-    {
+  for (it = this->Internals->Callbacks.begin();
+       it != this->Internals->Callbacks.end(); it++) {
     const CommandLineArguments::Internal::String& parg = it->first;
     const CommandLineArguments::Internal::String& parg = it->first;
-    CommandLineArgumentsCallbackStructure *cs = &it->second;
+    CommandLineArgumentsCallbackStructure* cs = &it->second;
     if (cs->ArgumentType == CommandLineArguments::NO_ARGUMENT ||
     if (cs->ArgumentType == CommandLineArguments::NO_ARGUMENT ||
-      cs->ArgumentType == CommandLineArguments::SPACE_ARGUMENT) 
-      {
-      if ( arg == parg )
-        {
+        cs->ArgumentType == CommandLineArguments::SPACE_ARGUMENT) {
+      if (arg == parg) {
         matches->push_back(parg);
         matches->push_back(parg);
-        }
       }
       }
-    else if ( arg.find( parg ) == 0 )
-      {
+    } else if (arg.find(parg) == 0) {
       matches->push_back(parg);
       matches->push_back(parg);
-      }
     }
     }
+  }
   return !matches->empty();
   return !matches->empty();
 }
 }
 
 
@@ -184,163 +169,143 @@ int CommandLineArguments::Parse()
 {
 {
   std::vector<std::string>::size_type cc;
   std::vector<std::string>::size_type cc;
   std::vector<std::string> matches;
   std::vector<std::string> matches;
-  if ( this->StoreUnusedArgumentsFlag )
-    {
+  if (this->StoreUnusedArgumentsFlag) {
     this->Internals->UnusedArguments.clear();
     this->Internals->UnusedArguments.clear();
-    }
-  for ( cc = 0; cc < this->Internals->Argv.size(); cc ++ )
-    {
+  }
+  for (cc = 0; cc < this->Internals->Argv.size(); cc++) {
     const std::string& arg = this->Internals->Argv[cc];
     const std::string& arg = this->Internals->Argv[cc];
     CommandLineArguments_DEBUG("Process argument: " << arg);
     CommandLineArguments_DEBUG("Process argument: " << arg);
     this->Internals->LastArgument = cc;
     this->Internals->LastArgument = cc;
-    if ( this->GetMatchedArguments(&matches, arg) )
-      {
+    if (this->GetMatchedArguments(&matches, arg)) {
       // Ok, we found one or more arguments that match what user specified.
       // Ok, we found one or more arguments that match what user specified.
       // Let's find the longest one.
       // Let's find the longest one.
       CommandLineArguments::Internal::VectorOfStrings::size_type kk;
       CommandLineArguments::Internal::VectorOfStrings::size_type kk;
       CommandLineArguments::Internal::VectorOfStrings::size_type maxidx = 0;
       CommandLineArguments::Internal::VectorOfStrings::size_type maxidx = 0;
       CommandLineArguments::Internal::String::size_type maxlen = 0;
       CommandLineArguments::Internal::String::size_type maxlen = 0;
-      for ( kk = 0; kk < matches.size(); kk ++ )
-        {
-        if ( matches[kk].size() > maxlen )
-          {
+      for (kk = 0; kk < matches.size(); kk++) {
+        if (matches[kk].size() > maxlen) {
           maxlen = matches[kk].size();
           maxlen = matches[kk].size();
           maxidx = kk;
           maxidx = kk;
-          }
         }
         }
+      }
       // So, the longest one is probably the right one. Now see if it has any
       // So, the longest one is probably the right one. Now see if it has any
       // additional value
       // additional value
-      CommandLineArgumentsCallbackStructure *cs 
-        = &this->Internals->Callbacks[matches[maxidx]];
+      CommandLineArgumentsCallbackStructure* cs =
+        &this->Internals->Callbacks[matches[maxidx]];
       const std::string& sarg = matches[maxidx];
       const std::string& sarg = matches[maxidx];
-      if ( cs->Argument != sarg )
-        {
+      if (cs->Argument != sarg) {
         abort();
         abort();
-        }
-      switch ( cs->ArgumentType )
-        {
-      case NO_ARGUMENT:
-        // No value
-        if ( !this->PopulateVariable(cs, 0) )
-          {
-          return 0;
+      }
+      switch (cs->ArgumentType) {
+        case NO_ARGUMENT:
+          // No value
+          if (!this->PopulateVariable(cs, 0)) {
+            return 0;
           }
           }
-        break;
-      case SPACE_ARGUMENT:
-        if ( cc == this->Internals->Argv.size()-1 )
-          {
-          this->Internals->LastArgument --;
-          return 0;
+          break;
+        case SPACE_ARGUMENT:
+          if (cc == this->Internals->Argv.size() - 1) {
+            this->Internals->LastArgument--;
+            return 0;
           }
           }
-        CommandLineArguments_DEBUG("This is a space argument: " << arg
-          << " value: " << this->Internals->Argv[cc+1]);
-        // Value is the next argument
-        if ( !this->PopulateVariable(cs, this->Internals->Argv[cc+1].c_str()) )
-          {
-          return 0;
+          CommandLineArguments_DEBUG("This is a space argument: "
+                                     << arg << " value: "
+                                     << this->Internals->Argv[cc + 1]);
+          // Value is the next argument
+          if (!this->PopulateVariable(cs,
+                                      this->Internals->Argv[cc + 1].c_str())) {
+            return 0;
           }
           }
-        cc ++;
-        break;
-      case EQUAL_ARGUMENT:
-        if ( arg.size() == sarg.size() || arg.at(sarg.size()) != '=' )
-          {
-          this->Internals->LastArgument --;
-          return 0;
+          cc++;
+          break;
+        case EQUAL_ARGUMENT:
+          if (arg.size() == sarg.size() || arg.at(sarg.size()) != '=') {
+            this->Internals->LastArgument--;
+            return 0;
           }
           }
-        // Value is everythng followed the '=' sign
-        if ( !this->PopulateVariable(cs, arg.c_str() + sarg.size() + 1) )
-          {
-          return 0;
+          // Value is everythng followed the '=' sign
+          if (!this->PopulateVariable(cs, arg.c_str() + sarg.size() + 1)) {
+            return 0;
           }
           }
-        break;
-      case CONCAT_ARGUMENT:
-        // Value is whatever follows the argument
-        if ( !this->PopulateVariable(cs, arg.c_str() + sarg.size()) )
-          {
-          return 0;
+          break;
+        case CONCAT_ARGUMENT:
+          // Value is whatever follows the argument
+          if (!this->PopulateVariable(cs, arg.c_str() + sarg.size())) {
+            return 0;
           }
           }
-        break;
-      case MULTI_ARGUMENT:
-        // Suck in all the rest of the arguments
-        CommandLineArguments_DEBUG("This is a multi argument: " << arg);
-        for (cc++; cc < this->Internals->Argv.size(); ++ cc )
-          {
-          const std::string& marg = this->Internals->Argv[cc];
-          CommandLineArguments_DEBUG(" check multi argument value: " << marg);
-          if ( this->GetMatchedArguments(&matches, marg) )
-            {
-            CommandLineArguments_DEBUG("End of multi argument " << arg << " with value: " << marg);
-            break;
+          break;
+        case MULTI_ARGUMENT:
+          // Suck in all the rest of the arguments
+          CommandLineArguments_DEBUG("This is a multi argument: " << arg);
+          for (cc++; cc < this->Internals->Argv.size(); ++cc) {
+            const std::string& marg = this->Internals->Argv[cc];
+            CommandLineArguments_DEBUG(
+              " check multi argument value: " << marg);
+            if (this->GetMatchedArguments(&matches, marg)) {
+              CommandLineArguments_DEBUG("End of multi argument "
+                                         << arg << " with value: " << marg);
+              break;
             }
             }
-          CommandLineArguments_DEBUG(" populate multi argument value: " << marg);
-          if ( !this->PopulateVariable(cs, marg.c_str()) )
-            {
-            return 0;
+            CommandLineArguments_DEBUG(
+              " populate multi argument value: " << marg);
+            if (!this->PopulateVariable(cs, marg.c_str())) {
+              return 0;
             }
             }
           }
           }
-        if ( cc != this->Internals->Argv.size() )
-          {
-          CommandLineArguments_DEBUG("Again End of multi argument " << arg);
-          cc--;
-          continue;
+          if (cc != this->Internals->Argv.size()) {
+            CommandLineArguments_DEBUG("Again End of multi argument " << arg);
+            cc--;
+            continue;
           }
           }
-        break;
-      default:
-        std::cerr << "Got unknown argument type: \"" << cs->ArgumentType << "\"" << std::endl;
-        this->Internals->LastArgument --;
-        return 0;
-        }
+          break;
+        default:
+          std::cerr << "Got unknown argument type: \"" << cs->ArgumentType
+                    << "\"" << std::endl;
+          this->Internals->LastArgument--;
+          return 0;
       }
       }
-    else
-      {
+    } else {
       // Handle unknown arguments
       // Handle unknown arguments
-      if ( this->Internals->UnknownArgumentCallback )
-        {
-        if ( !this->Internals->UnknownArgumentCallback(arg.c_str(), 
-            this->Internals->ClientData) )
-          {
-          this->Internals->LastArgument --;
+      if (this->Internals->UnknownArgumentCallback) {
+        if (!this->Internals->UnknownArgumentCallback(
+              arg.c_str(), this->Internals->ClientData)) {
+          this->Internals->LastArgument--;
           return 0;
           return 0;
-          }
-        return 1;
         }
         }
-      else if ( this->StoreUnusedArgumentsFlag )
-        {
+        return 1;
+      } else if (this->StoreUnusedArgumentsFlag) {
         CommandLineArguments_DEBUG("Store unused argument " << arg);
         CommandLineArguments_DEBUG("Store unused argument " << arg);
         this->Internals->UnusedArguments.push_back(arg);
         this->Internals->UnusedArguments.push_back(arg);
-        }
-      else
-        {
+      } else {
         std::cerr << "Got unknown argument: \"" << arg << "\"" << std::endl;
         std::cerr << "Got unknown argument: \"" << arg << "\"" << std::endl;
-        this->Internals->LastArgument --;
+        this->Internals->LastArgument--;
         return 0;
         return 0;
-        }
       }
       }
     }
     }
+  }
   return 1;
   return 1;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void CommandLineArguments::GetRemainingArguments(int* argc, char*** argv)
 void CommandLineArguments::GetRemainingArguments(int* argc, char*** argv)
 {
 {
-  CommandLineArguments::Internal::VectorOfStrings::size_type size 
-    = this->Internals->Argv.size() - this->Internals->LastArgument + 1;
+  CommandLineArguments::Internal::VectorOfStrings::size_type size =
+    this->Internals->Argv.size() - this->Internals->LastArgument + 1;
   CommandLineArguments::Internal::VectorOfStrings::size_type cc;
   CommandLineArguments::Internal::VectorOfStrings::size_type cc;
 
 
   // Copy Argv0 as the first argument
   // Copy Argv0 as the first argument
-  char** args = new char*[ size ];
-  args[0] = new char[ this->Internals->Argv0.size() + 1 ];
+  char** args = new char*[size];
+  args[0] = new char[this->Internals->Argv0.size() + 1];
   strcpy(args[0], this->Internals->Argv0.c_str());
   strcpy(args[0], this->Internals->Argv0.c_str());
   int cnt = 1;
   int cnt = 1;
 
 
   // Copy everything after the LastArgument, since that was not parsed.
   // Copy everything after the LastArgument, since that was not parsed.
-  for ( cc = this->Internals->LastArgument+1; 
-    cc < this->Internals->Argv.size(); cc ++ )
-    {
-    args[cnt] = new char[ this->Internals->Argv[cc].size() + 1];
+  for (cc = this->Internals->LastArgument + 1;
+       cc < this->Internals->Argv.size(); cc++) {
+    args[cnt] = new char[this->Internals->Argv[cc].size() + 1];
     strcpy(args[cnt], this->Internals->Argv[cc].c_str());
     strcpy(args[cnt], this->Internals->Argv[cc].c_str());
-    cnt ++;
-    }
+    cnt++;
+  }
   *argc = cnt;
   *argc = cnt;
   *argv = args;
   *argv = args;
 }
 }
@@ -348,25 +313,23 @@ void CommandLineArguments::GetRemainingArguments(int* argc, char*** argv)
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void CommandLineArguments::GetUnusedArguments(int* argc, char*** argv)
 void CommandLineArguments::GetUnusedArguments(int* argc, char*** argv)
 {
 {
-  CommandLineArguments::Internal::VectorOfStrings::size_type size 
-    = this->Internals->UnusedArguments.size() + 1;
+  CommandLineArguments::Internal::VectorOfStrings::size_type size =
+    this->Internals->UnusedArguments.size() + 1;
   CommandLineArguments::Internal::VectorOfStrings::size_type cc;
   CommandLineArguments::Internal::VectorOfStrings::size_type cc;
 
 
   // Copy Argv0 as the first argument
   // Copy Argv0 as the first argument
-  char** args = new char*[ size ];
-  args[0] = new char[ this->Internals->Argv0.size() + 1 ];
+  char** args = new char*[size];
+  args[0] = new char[this->Internals->Argv0.size() + 1];
   strcpy(args[0], this->Internals->Argv0.c_str());
   strcpy(args[0], this->Internals->Argv0.c_str());
   int cnt = 1;
   int cnt = 1;
 
 
   // Copy everything after the LastArgument, since that was not parsed.
   // Copy everything after the LastArgument, since that was not parsed.
-  for ( cc = 0;
-    cc < this->Internals->UnusedArguments.size(); cc ++ )
-    {
-    kwsys::String &str = this->Internals->UnusedArguments[cc];
-    args[cnt] = new char[ str.size() + 1];
+  for (cc = 0; cc < this->Internals->UnusedArguments.size(); cc++) {
+    kwsys::String& str = this->Internals->UnusedArguments[cc];
+    args[cnt] = new char[str.size() + 1];
     strcpy(args[cnt], str.c_str());
     strcpy(args[cnt], str.c_str());
-    cnt ++;
-    }
+    cnt++;
+  }
   *argc = cnt;
   *argc = cnt;
   *argv = args;
   *argv = args;
 }
 }
@@ -375,84 +338,95 @@ void CommandLineArguments::GetUnusedArguments(int* argc, char*** argv)
 void CommandLineArguments::DeleteRemainingArguments(int argc, char*** argv)
 void CommandLineArguments::DeleteRemainingArguments(int argc, char*** argv)
 {
 {
   int cc;
   int cc;
-  for ( cc = 0; cc < argc; ++ cc )
-    {
-    delete [] (*argv)[cc];
-    }
-  delete [] *argv;
+  for (cc = 0; cc < argc; ++cc) {
+    delete[](*argv)[cc];
+  }
+  delete[] * argv;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::AddCallback(const char* argument, ArgumentTypeEnum type, 
-  CallbackType callback, void* call_data, const char* help)
+void CommandLineArguments::AddCallback(const char* argument,
+                                       ArgumentTypeEnum type,
+                                       CallbackType callback, void* call_data,
+                                       const char* help)
 {
 {
   CommandLineArgumentsCallbackStructure s;
   CommandLineArgumentsCallbackStructure s;
-  s.Argument     = argument;
+  s.Argument = argument;
   s.ArgumentType = type;
   s.ArgumentType = type;
-  s.Callback     = callback;
-  s.CallData     = call_data;
+  s.Callback = callback;
+  s.CallData = call_data;
   s.VariableType = CommandLineArguments::NO_VARIABLE_TYPE;
   s.VariableType = CommandLineArguments::NO_VARIABLE_TYPE;
-  s.Variable     = 0;
-  s.Help         = help;
+  s.Variable = 0;
+  s.Help = help;
 
 
   this->Internals->Callbacks[argument] = s;
   this->Internals->Callbacks[argument] = s;
   this->GenerateHelp();
   this->GenerateHelp();
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::AddArgument(const char* argument, ArgumentTypeEnum type,
-  VariableTypeEnum vtype, void* variable, const char* help)
+void CommandLineArguments::AddArgument(const char* argument,
+                                       ArgumentTypeEnum type,
+                                       VariableTypeEnum vtype, void* variable,
+                                       const char* help)
 {
 {
   CommandLineArgumentsCallbackStructure s;
   CommandLineArgumentsCallbackStructure s;
-  s.Argument     = argument;
+  s.Argument = argument;
   s.ArgumentType = type;
   s.ArgumentType = type;
-  s.Callback     = 0;
-  s.CallData     = 0;
+  s.Callback = 0;
+  s.CallData = 0;
   s.VariableType = vtype;
   s.VariableType = vtype;
-  s.Variable     = variable;
-  s.Help         = help;
+  s.Variable = variable;
+  s.Help = help;
 
 
   this->Internals->Callbacks[argument] = s;
   this->Internals->Callbacks[argument] = s;
   this->GenerateHelp();
   this->GenerateHelp();
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-#define CommandLineArgumentsAddArgumentMacro(type, ctype) \
-  void CommandLineArguments::AddArgument(const char* argument, ArgumentTypeEnum type, \
-    ctype* variable, const char* help) \
-  { \
-    this->AddArgument(argument, type, CommandLineArguments::type##_TYPE, variable, help); \
+#define CommandLineArgumentsAddArgumentMacro(type, ctype)                     \
+  void CommandLineArguments::AddArgument(const char* argument,                \
+                                         ArgumentTypeEnum type,               \
+                                         ctype* variable, const char* help)   \
+  {                                                                           \
+    this->AddArgument(argument, type, CommandLineArguments::type##_TYPE,      \
+                      variable, help);                                        \
   }
   }
 
 
-CommandLineArgumentsAddArgumentMacro(BOOL,       bool)
-CommandLineArgumentsAddArgumentMacro(INT,        int)
-CommandLineArgumentsAddArgumentMacro(DOUBLE,     double)
-CommandLineArgumentsAddArgumentMacro(STRING,     char*)
-CommandLineArgumentsAddArgumentMacro(STL_STRING, std::string)
-
-CommandLineArgumentsAddArgumentMacro(VECTOR_BOOL,       std::vector<bool>)
-CommandLineArgumentsAddArgumentMacro(VECTOR_INT,        std::vector<int>)
-CommandLineArgumentsAddArgumentMacro(VECTOR_DOUBLE,     std::vector<double>)
-CommandLineArgumentsAddArgumentMacro(VECTOR_STRING,     std::vector<char*>)
-CommandLineArgumentsAddArgumentMacro(VECTOR_STL_STRING, std::vector<std::string>)
-
-//----------------------------------------------------------------------------
-#define CommandLineArgumentsAddBooleanArgumentMacro(type, ctype) \
-  void CommandLineArguments::AddBooleanArgument(const char* argument, \
-    ctype* variable, const char* help) \
-  { \
-    this->AddArgument(argument, CommandLineArguments::NO_ARGUMENT, \
-      CommandLineArguments::type##_TYPE, variable, help); \
+CommandLineArgumentsAddArgumentMacro(BOOL, bool)
+  CommandLineArgumentsAddArgumentMacro(INT, int)
+    CommandLineArgumentsAddArgumentMacro(DOUBLE, double)
+      CommandLineArgumentsAddArgumentMacro(STRING, char*)
+        CommandLineArgumentsAddArgumentMacro(STL_STRING, std::string)
+
+          CommandLineArgumentsAddArgumentMacro(VECTOR_BOOL, std::vector<bool>)
+            CommandLineArgumentsAddArgumentMacro(VECTOR_INT, std::vector<int>)
+              CommandLineArgumentsAddArgumentMacro(VECTOR_DOUBLE,
+                                                   std::vector<double>)
+                CommandLineArgumentsAddArgumentMacro(VECTOR_STRING,
+                                                     std::vector<char*>)
+                  CommandLineArgumentsAddArgumentMacro(
+                    VECTOR_STL_STRING, std::vector<std::string>)
+
+//----------------------------------------------------------------------------
+#define CommandLineArgumentsAddBooleanArgumentMacro(type, ctype)              \
+  void CommandLineArguments::AddBooleanArgument(                              \
+    const char* argument, ctype* variable, const char* help)                  \
+  {                                                                           \
+    this->AddArgument(argument, CommandLineArguments::NO_ARGUMENT,            \
+                      CommandLineArguments::type##_TYPE, variable, help);     \
   }
   }
 
 
-CommandLineArgumentsAddBooleanArgumentMacro(BOOL,       bool)
-CommandLineArgumentsAddBooleanArgumentMacro(INT,        int)
-CommandLineArgumentsAddBooleanArgumentMacro(DOUBLE,     double)
-CommandLineArgumentsAddBooleanArgumentMacro(STRING,     char*)
-CommandLineArgumentsAddBooleanArgumentMacro(STL_STRING, std::string)
+                    CommandLineArgumentsAddBooleanArgumentMacro(BOOL, bool)
+                      CommandLineArgumentsAddBooleanArgumentMacro(INT, int)
+                        CommandLineArgumentsAddBooleanArgumentMacro(DOUBLE,
+                                                                    double)
+                          CommandLineArgumentsAddBooleanArgumentMacro(STRING,
+                                                                      char*)
+                            CommandLineArgumentsAddBooleanArgumentMacro(
+                              STL_STRING, std::string)
 
 
-//----------------------------------------------------------------------------
-void CommandLineArguments::SetClientData(void* client_data)
+  //----------------------------------------------------------------------------
+  void CommandLineArguments::SetClientData(void* client_data)
 {
 {
   this->Internals->ClientData = client_data;
   this->Internals->ClientData = client_data;
 }
 }
@@ -467,36 +441,32 @@ void CommandLineArguments::SetUnknownArgumentCallback(
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* CommandLineArguments::GetHelp(const char* arg)
 const char* CommandLineArguments::GetHelp(const char* arg)
 {
 {
-  CommandLineArguments::Internal::CallbacksMap::iterator it 
-    = this->Internals->Callbacks.find(arg);
-  if ( it == this->Internals->Callbacks.end() )
-    {
+  CommandLineArguments::Internal::CallbacksMap::iterator it =
+    this->Internals->Callbacks.find(arg);
+  if (it == this->Internals->Callbacks.end()) {
     return 0;
     return 0;
-    }
+  }
 
 
   // Since several arguments may point to the same argument, find the one this
   // Since several arguments may point to the same argument, find the one this
   // one point to if this one is pointing to another argument.
   // one point to if this one is pointing to another argument.
-  CommandLineArgumentsCallbackStructure *cs = &(it->second);
-  for(;;)
-    {
-    CommandLineArguments::Internal::CallbacksMap::iterator hit 
-      = this->Internals->Callbacks.find(cs->Help);
-    if ( hit == this->Internals->Callbacks.end() )
-      {
+  CommandLineArgumentsCallbackStructure* cs = &(it->second);
+  for (;;) {
+    CommandLineArguments::Internal::CallbacksMap::iterator hit =
+      this->Internals->Callbacks.find(cs->Help);
+    if (hit == this->Internals->Callbacks.end()) {
       break;
       break;
-      }
-    cs = &(hit->second);
     }
     }
+    cs = &(hit->second);
+  }
   return cs->Help;
   return cs->Help;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void CommandLineArguments::SetLineLength(unsigned int ll)
 void CommandLineArguments::SetLineLength(unsigned int ll)
 {
 {
-  if ( ll < 9 || ll > 1000 )
-    {
+  if (ll < 9 || ll > 1000) {
     return;
     return;
-    }
+  }
   this->LineLength = ll;
   this->LineLength = ll;
   this->GenerateHelp();
   this->GenerateHelp();
 }
 }
@@ -517,76 +487,68 @@ unsigned int CommandLineArguments::GetLastArgument()
 void CommandLineArguments::GenerateHelp()
 void CommandLineArguments::GenerateHelp()
 {
 {
   std::ostringstream str;
   std::ostringstream str;
-  
+
   // Collapse all arguments into the map of vectors of all arguments that do
   // Collapse all arguments into the map of vectors of all arguments that do
   // the same thing.
   // the same thing.
   CommandLineArguments::Internal::CallbacksMap::iterator it;
   CommandLineArguments::Internal::CallbacksMap::iterator it;
   typedef std::map<CommandLineArguments::Internal::String,
   typedef std::map<CommandLineArguments::Internal::String,
-     CommandLineArguments::Internal::SetOfStrings > MapArgs;
+                   CommandLineArguments::Internal::SetOfStrings>
+    MapArgs;
   MapArgs mp;
   MapArgs mp;
   MapArgs::iterator mpit, smpit;
   MapArgs::iterator mpit, smpit;
-  for ( it = this->Internals->Callbacks.begin();
-    it != this->Internals->Callbacks.end();
-    it ++ )
-    {
-    CommandLineArgumentsCallbackStructure *cs = &(it->second);
+  for (it = this->Internals->Callbacks.begin();
+       it != this->Internals->Callbacks.end(); it++) {
+    CommandLineArgumentsCallbackStructure* cs = &(it->second);
     mpit = mp.find(cs->Help);
     mpit = mp.find(cs->Help);
-    if ( mpit != mp.end() )
-      {
+    if (mpit != mp.end()) {
       mpit->second.insert(it->first);
       mpit->second.insert(it->first);
       mp[it->first].insert(it->first);
       mp[it->first].insert(it->first);
-      }
-    else
-      {
+    } else {
       mp[it->first].insert(it->first);
       mp[it->first].insert(it->first);
-      }
     }
     }
-  for ( it = this->Internals->Callbacks.begin();
-    it != this->Internals->Callbacks.end();
-    it ++ )
-    {
-    CommandLineArgumentsCallbackStructure *cs = &(it->second);
+  }
+  for (it = this->Internals->Callbacks.begin();
+       it != this->Internals->Callbacks.end(); it++) {
+    CommandLineArgumentsCallbackStructure* cs = &(it->second);
     mpit = mp.find(cs->Help);
     mpit = mp.find(cs->Help);
-    if ( mpit != mp.end() )
-      {
+    if (mpit != mp.end()) {
       mpit->second.insert(it->first);
       mpit->second.insert(it->first);
       smpit = mp.find(it->first);
       smpit = mp.find(it->first);
       CommandLineArguments::Internal::SetOfStrings::iterator sit;
       CommandLineArguments::Internal::SetOfStrings::iterator sit;
-      for ( sit = smpit->second.begin(); sit != smpit->second.end(); sit++ )
-        {
+      for (sit = smpit->second.begin(); sit != smpit->second.end(); sit++) {
         mpit->second.insert(*sit);
         mpit->second.insert(*sit);
-        }
-      mp.erase(smpit);
       }
       }
-    else
-      {
+      mp.erase(smpit);
+    } else {
       mp[it->first].insert(it->first);
       mp[it->first].insert(it->first);
-      }
     }
     }
- 
+  }
+
   // Find the length of the longest string
   // Find the length of the longest string
   CommandLineArguments::Internal::String::size_type maxlen = 0;
   CommandLineArguments::Internal::String::size_type maxlen = 0;
-  for ( mpit = mp.begin();
-    mpit != mp.end();
-    mpit ++ )
-    {
+  for (mpit = mp.begin(); mpit != mp.end(); mpit++) {
     CommandLineArguments::Internal::SetOfStrings::iterator sit;
     CommandLineArguments::Internal::SetOfStrings::iterator sit;
-    for ( sit = mpit->second.begin(); sit != mpit->second.end(); sit++ )
-      {
+    for (sit = mpit->second.begin(); sit != mpit->second.end(); sit++) {
       CommandLineArguments::Internal::String::size_type clen = sit->size();
       CommandLineArguments::Internal::String::size_type clen = sit->size();
-      switch ( this->Internals->Callbacks[*sit].ArgumentType )
-        {
-        case CommandLineArguments::NO_ARGUMENT:     clen += 0; break;
-        case CommandLineArguments::CONCAT_ARGUMENT: clen += 3; break;
-        case CommandLineArguments::SPACE_ARGUMENT:  clen += 4; break;
-        case CommandLineArguments::EQUAL_ARGUMENT:  clen += 4; break;
-        }
-      if ( clen > maxlen )
-        {
+      switch (this->Internals->Callbacks[*sit].ArgumentType) {
+        case CommandLineArguments::NO_ARGUMENT:
+          clen += 0;
+          break;
+        case CommandLineArguments::CONCAT_ARGUMENT:
+          clen += 3;
+          break;
+        case CommandLineArguments::SPACE_ARGUMENT:
+          clen += 4;
+          break;
+        case CommandLineArguments::EQUAL_ARGUMENT:
+          clen += 4;
+          break;
+      }
+      if (clen > maxlen) {
         maxlen = clen;
         maxlen = clen;
-        }
       }
       }
     }
     }
+  }
 
 
   // Create format for that string
   // Create format for that string
   char format[80];
   char format[80];
@@ -595,74 +557,69 @@ void CommandLineArguments::GenerateHelp()
   maxlen += 4; // For the space before and after the option
   maxlen += 4; // For the space before and after the option
 
 
   // Print help for each option
   // Print help for each option
-  for ( mpit = mp.begin();
-    mpit != mp.end();
-    mpit ++ )
-    {
+  for (mpit = mp.begin(); mpit != mp.end(); mpit++) {
     CommandLineArguments::Internal::SetOfStrings::iterator sit;
     CommandLineArguments::Internal::SetOfStrings::iterator sit;
-    for ( sit = mpit->second.begin(); sit != mpit->second.end(); sit++ )
-      {
+    for (sit = mpit->second.begin(); sit != mpit->second.end(); sit++) {
       str << std::endl;
       str << std::endl;
       char argument[100];
       char argument[100];
       sprintf(argument, "%s", sit->c_str());
       sprintf(argument, "%s", sit->c_str());
-      switch ( this->Internals->Callbacks[*sit].ArgumentType )
-        {
-        case CommandLineArguments::NO_ARGUMENT: break;
-        case CommandLineArguments::CONCAT_ARGUMENT: strcat(argument, "opt"); break;
-        case CommandLineArguments::SPACE_ARGUMENT:  strcat(argument, " opt"); break;
-        case CommandLineArguments::EQUAL_ARGUMENT:  strcat(argument, "=opt"); break;
-        case CommandLineArguments::MULTI_ARGUMENT:  strcat(argument, " opt opt ..."); break;
-        }
+      switch (this->Internals->Callbacks[*sit].ArgumentType) {
+        case CommandLineArguments::NO_ARGUMENT:
+          break;
+        case CommandLineArguments::CONCAT_ARGUMENT:
+          strcat(argument, "opt");
+          break;
+        case CommandLineArguments::SPACE_ARGUMENT:
+          strcat(argument, " opt");
+          break;
+        case CommandLineArguments::EQUAL_ARGUMENT:
+          strcat(argument, "=opt");
+          break;
+        case CommandLineArguments::MULTI_ARGUMENT:
+          strcat(argument, " opt opt ...");
+          break;
+      }
       char buffer[80];
       char buffer[80];
       sprintf(buffer, format, argument);
       sprintf(buffer, format, argument);
       str << buffer;
       str << buffer;
-      }
+    }
     const char* ptr = this->Internals->Callbacks[mpit->first].Help;
     const char* ptr = this->Internals->Callbacks[mpit->first].Help;
     size_t len = strlen(ptr);
     size_t len = strlen(ptr);
     int cnt = 0;
     int cnt = 0;
-    while ( len > 0)
-      {
+    while (len > 0) {
       // If argument with help is longer than line length, split it on previous
       // If argument with help is longer than line length, split it on previous
       // space (or tab) and continue on the next line
       // space (or tab) and continue on the next line
       CommandLineArguments::Internal::String::size_type cc;
       CommandLineArguments::Internal::String::size_type cc;
-      for ( cc = 0; ptr[cc]; cc ++ )
-        {
-        if ( *ptr == ' ' || *ptr == '\t' )
-          {
-          ptr ++;
-          len --;
-          }
+      for (cc = 0; ptr[cc]; cc++) {
+        if (*ptr == ' ' || *ptr == '\t') {
+          ptr++;
+          len--;
         }
         }
-      if ( cnt > 0 )
-        {
-        for ( cc = 0; cc < maxlen; cc ++ )
-          {
+      }
+      if (cnt > 0) {
+        for (cc = 0; cc < maxlen; cc++) {
           str << " ";
           str << " ";
-          }
         }
         }
+      }
       CommandLineArguments::Internal::String::size_type skip = len;
       CommandLineArguments::Internal::String::size_type skip = len;
-      if ( skip > this->LineLength - maxlen )
-        {
+      if (skip > this->LineLength - maxlen) {
         skip = this->LineLength - maxlen;
         skip = this->LineLength - maxlen;
-        for ( cc = skip-1; cc > 0; cc -- )
-          {
-          if ( ptr[cc] == ' ' || ptr[cc] == '\t' )
-            {
+        for (cc = skip - 1; cc > 0; cc--) {
+          if (ptr[cc] == ' ' || ptr[cc] == '\t') {
             break;
             break;
-            }
           }
           }
-        if ( cc != 0 )
-          {
+        }
+        if (cc != 0) {
           skip = cc;
           skip = cc;
-          }
         }
         }
+      }
       str.write(ptr, static_cast<std::streamsize>(skip));
       str.write(ptr, static_cast<std::streamsize>(skip));
       str << std::endl;
       str << std::endl;
       ptr += skip;
       ptr += skip;
       len -= skip;
       len -= skip;
-      cnt ++;
-      }
+      cnt++;
     }
     }
+  }
   /*
   /*
   // This can help debugging help string
   // This can help debugging help string
   str << endl;
   str << endl;
@@ -677,181 +634,176 @@ void CommandLineArguments::GenerateHelp()
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  bool* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(bool* variable,
+                                            const std::string& value)
 {
 {
-  if ( value == "1" || value == "ON" || value == "on" || value == "On" ||
-    value == "TRUE" || value == "true" || value == "True" ||
-    value == "yes" || value == "Yes" || value == "YES" )
-    {
+  if (value == "1" || value == "ON" || value == "on" || value == "On" ||
+      value == "TRUE" || value == "true" || value == "True" ||
+      value == "yes" || value == "Yes" || value == "YES") {
     *variable = true;
     *variable = true;
-    }
-  else
-    {
+  } else {
     *variable = false;
     *variable = false;
-    }
+  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  int* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(int* variable,
+                                            const std::string& value)
 {
 {
   char* res = 0;
   char* res = 0;
   *variable = static_cast<int>(strtol(value.c_str(), &res, 10));
   *variable = static_cast<int>(strtol(value.c_str(), &res, 10));
-  //if ( res && *res )
+  // if ( res && *res )
   //  {
   //  {
   //  Can handle non-int
   //  Can handle non-int
   //  }
   //  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  double* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(double* variable,
+                                            const std::string& value)
 {
 {
   char* res = 0;
   char* res = 0;
   *variable = strtod(value.c_str(), &res);
   *variable = strtod(value.c_str(), &res);
-  //if ( res && *res )
+  // if ( res && *res )
   //  {
   //  {
   //  Can handle non-double
   //  Can handle non-double
   //  }
   //  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  char** variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(char** variable,
+                                            const std::string& value)
 {
 {
-  if ( *variable )
-    {
-    delete [] *variable;
+  if (*variable) {
+    delete[] * variable;
     *variable = 0;
     *variable = 0;
-    }
-  *variable = new char[ value.size() + 1 ];
+  }
+  *variable = new char[value.size() + 1];
   strcpy(*variable, value.c_str());
   strcpy(*variable, value.c_str());
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::string* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(std::string* variable,
+                                            const std::string& value)
 {
 {
   *variable = value;
   *variable = value;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::vector<bool>* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(std::vector<bool>* variable,
+                                            const std::string& value)
 {
 {
   bool val = false;
   bool val = false;
-  if ( value == "1" || value == "ON" || value == "on" || value == "On" ||
-    value == "TRUE" || value == "true" || value == "True" ||
-    value == "yes" || value == "Yes" || value == "YES" )
-    {
+  if (value == "1" || value == "ON" || value == "on" || value == "On" ||
+      value == "TRUE" || value == "true" || value == "True" ||
+      value == "yes" || value == "Yes" || value == "YES") {
     val = true;
     val = true;
-    }
+  }
   variable->push_back(val);
   variable->push_back(val);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::vector<int>* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(std::vector<int>* variable,
+                                            const std::string& value)
 {
 {
   char* res = 0;
   char* res = 0;
   variable->push_back(static_cast<int>(strtol(value.c_str(), &res, 10)));
   variable->push_back(static_cast<int>(strtol(value.c_str(), &res, 10)));
-  //if ( res && *res )
+  // if ( res && *res )
   //  {
   //  {
   //  Can handle non-int
   //  Can handle non-int
   //  }
   //  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::vector<double>* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(std::vector<double>* variable,
+                                            const std::string& value)
 {
 {
   char* res = 0;
   char* res = 0;
   variable->push_back(strtod(value.c_str(), &res));
   variable->push_back(strtod(value.c_str(), &res));
-  //if ( res && *res )
+  // if ( res && *res )
   //  {
   //  {
   //  Can handle non-int
   //  Can handle non-int
   //  }
   //  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::vector<char*>* variable, const std::string& value)
+void CommandLineArguments::PopulateVariable(std::vector<char*>* variable,
+                                            const std::string& value)
 {
 {
-  char* var = new char[ value.size() + 1 ];
+  char* var = new char[value.size() + 1];
   strcpy(var, value.c_str());
   strcpy(var, value.c_str());
   variable->push_back(var);
   variable->push_back(var);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void CommandLineArguments::PopulateVariable(
-  std::vector<std::string>* variable,
-  const std::string& value)
+void CommandLineArguments::PopulateVariable(std::vector<std::string>* variable,
+                                            const std::string& value)
 {
 {
   variable->push_back(value);
   variable->push_back(value);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-bool CommandLineArguments::PopulateVariable(CommandLineArgumentsCallbackStructure* cs,
-  const char* value)
+bool CommandLineArguments::PopulateVariable(
+  CommandLineArgumentsCallbackStructure* cs, const char* value)
 {
 {
   // Call the callback
   // Call the callback
-  if ( cs->Callback )
-    {
-    if ( !cs->Callback(cs->Argument, value, cs->CallData) )
-      {
-      this->Internals->LastArgument --;
+  if (cs->Callback) {
+    if (!cs->Callback(cs->Argument, value, cs->CallData)) {
+      this->Internals->LastArgument--;
       return 0;
       return 0;
-      }
     }
     }
-  CommandLineArguments_DEBUG("Set argument: " << cs->Argument << " to " << value);
-  if ( cs->Variable )
-    {
+  }
+  CommandLineArguments_DEBUG("Set argument: " << cs->Argument << " to "
+                                              << value);
+  if (cs->Variable) {
     std::string var = "1";
     std::string var = "1";
-    if ( value )
-      {
+    if (value) {
       var = value;
       var = value;
-      }
-    switch ( cs->VariableType )
-      {
-    case CommandLineArguments::INT_TYPE:
-      this->PopulateVariable(static_cast<int*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::DOUBLE_TYPE:
-      this->PopulateVariable(static_cast<double*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::STRING_TYPE:
-      this->PopulateVariable(static_cast<char**>(cs->Variable), var);
-      break;
-    case CommandLineArguments::STL_STRING_TYPE:
-      this->PopulateVariable(static_cast<std::string*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::BOOL_TYPE:
-      this->PopulateVariable(static_cast<bool*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::VECTOR_BOOL_TYPE:
-      this->PopulateVariable(static_cast<std::vector<bool>*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::VECTOR_INT_TYPE:
-      this->PopulateVariable(static_cast<std::vector<int>*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::VECTOR_DOUBLE_TYPE:
-      this->PopulateVariable(static_cast<std::vector<double>*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::VECTOR_STRING_TYPE:
-      this->PopulateVariable(static_cast<std::vector<char*>*>(cs->Variable), var);
-      break;
-    case CommandLineArguments::VECTOR_STL_STRING_TYPE:
-      this->PopulateVariable(static_cast<std::vector<std::string>*>(cs->Variable), var);
-      break;
-    default:
-      std::cerr << "Got unknown variable type: \"" << cs->VariableType << "\"" << std::endl;
-      this->Internals->LastArgument --;
-      return 0;
-      }
     }
     }
+    switch (cs->VariableType) {
+      case CommandLineArguments::INT_TYPE:
+        this->PopulateVariable(static_cast<int*>(cs->Variable), var);
+        break;
+      case CommandLineArguments::DOUBLE_TYPE:
+        this->PopulateVariable(static_cast<double*>(cs->Variable), var);
+        break;
+      case CommandLineArguments::STRING_TYPE:
+        this->PopulateVariable(static_cast<char**>(cs->Variable), var);
+        break;
+      case CommandLineArguments::STL_STRING_TYPE:
+        this->PopulateVariable(static_cast<std::string*>(cs->Variable), var);
+        break;
+      case CommandLineArguments::BOOL_TYPE:
+        this->PopulateVariable(static_cast<bool*>(cs->Variable), var);
+        break;
+      case CommandLineArguments::VECTOR_BOOL_TYPE:
+        this->PopulateVariable(static_cast<std::vector<bool>*>(cs->Variable),
+                               var);
+        break;
+      case CommandLineArguments::VECTOR_INT_TYPE:
+        this->PopulateVariable(static_cast<std::vector<int>*>(cs->Variable),
+                               var);
+        break;
+      case CommandLineArguments::VECTOR_DOUBLE_TYPE:
+        this->PopulateVariable(static_cast<std::vector<double>*>(cs->Variable),
+                               var);
+        break;
+      case CommandLineArguments::VECTOR_STRING_TYPE:
+        this->PopulateVariable(static_cast<std::vector<char*>*>(cs->Variable),
+                               var);
+        break;
+      case CommandLineArguments::VECTOR_STL_STRING_TYPE:
+        this->PopulateVariable(
+          static_cast<std::vector<std::string>*>(cs->Variable), var);
+        break;
+      default:
+        std::cerr << "Got unknown variable type: \"" << cs->VariableType
+                  << "\"" << std::endl;
+        this->Internals->LastArgument--;
+        return 0;
+    }
+  }
   return 1;
   return 1;
 }
 }
 
 
-
 } // namespace KWSYS_NAMESPACE
 } // namespace KWSYS_NAMESPACE

+ 62 - 71
CommandLineArguments.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_CommandLineArguments_hxx
 #ifndef @KWSYS_NAMESPACE@_CommandLineArguments_hxx
 #define @KWSYS_NAMESPACE@_CommandLineArguments_hxx
 #define @KWSYS_NAMESPACE@_CommandLineArguments_hxx
 
 
@@ -18,8 +9,7 @@
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 class CommandLineArgumentsInternal;
 class CommandLineArgumentsInternal;
 struct CommandLineArgumentsCallbackStructure;
 struct CommandLineArgumentsCallbackStructure;
@@ -41,28 +31,29 @@ struct CommandLineArgumentsCallbackStructure;
  * the argument is specified, the variable is set to the specified value casted
  * the argument is specified, the variable is set to the specified value casted
  * to the appropriate type. For boolean (NO_ARGUMENT), the value is "1".
  * to the appropriate type. For boolean (NO_ARGUMENT), the value is "1".
  *
  *
- * Both interfaces can be used at the same time. 
+ * Both interfaces can be used at the same time.
  *
  *
  * Possible argument types are:
  * Possible argument types are:
  *   NO_ARGUMENT     - The argument takes no value             : --A
  *   NO_ARGUMENT     - The argument takes no value             : --A
  *   CONCAT_ARGUMENT - The argument takes value after no space : --Aval
  *   CONCAT_ARGUMENT - The argument takes value after no space : --Aval
- *   SPACE_ARGUMENT  - The argument takes value after space    : --A val 
+ *   SPACE_ARGUMENT  - The argument takes value after space    : --A val
  *   EQUAL_ARGUMENT  - The argument takes value after equal    : --A=val
  *   EQUAL_ARGUMENT  - The argument takes value after equal    : --A=val
- *   MULTI_ARGUMENT  - The argument takes values after space   : --A val1 val2 val3 ...
+ *   MULTI_ARGUMENT  - The argument takes values after space   : --A val1 val2
+ * val3 ...
  *
  *
  * Example use:
  * Example use:
  *
  *
  * kwsys::CommandLineArguments arg;
  * kwsys::CommandLineArguments arg;
  * arg.Initialize(argc, argv);
  * arg.Initialize(argc, argv);
  * typedef kwsys::CommandLineArguments argT;
  * typedef kwsys::CommandLineArguments argT;
- * arg.AddArgument("--something", argT::EQUAL_ARGUMENT, &some_variable, 
+ * arg.AddArgument("--something", argT::EQUAL_ARGUMENT, &some_variable,
  *                 "This is help string for --something");
  *                 "This is help string for --something");
  * if ( !arg.Parse() )
  * if ( !arg.Parse() )
  *   {
  *   {
  *   std::cerr << "Problem parsing arguments" << std::endl;
  *   std::cerr << "Problem parsing arguments" << std::endl;
  *   res = 1;
  *   res = 1;
  *   }
  *   }
- * 
+ *
  */
  */
 
 
 class @KWSYS_NAMESPACE@_EXPORT CommandLineArguments
 class @KWSYS_NAMESPACE@_EXPORT CommandLineArguments
@@ -74,7 +65,8 @@ public:
   /**
   /**
    * Various argument types.
    * Various argument types.
    */
    */
-  enum ArgumentTypeEnum { 
+  enum ArgumentTypeEnum
+  {
     NO_ARGUMENT,
     NO_ARGUMENT,
     CONCAT_ARGUMENT,
     CONCAT_ARGUMENT,
     SPACE_ARGUMENT,
     SPACE_ARGUMENT,
@@ -86,27 +78,28 @@ public:
    * Various variable types. When using the variable interface, this specifies
    * Various variable types. When using the variable interface, this specifies
    * what type the variable is.
    * what type the variable is.
    */
    */
-  enum VariableTypeEnum {
-    NO_VARIABLE_TYPE = 0, // The variable is not specified
-    INT_TYPE,             // The variable is integer (int)
-    BOOL_TYPE,            // The variable is boolean (bool)
-    DOUBLE_TYPE,          // The variable is float (double)
-    STRING_TYPE,          // The variable is string (char*)
-    STL_STRING_TYPE,      // The variable is string (char*)
-    VECTOR_INT_TYPE,             // The variable is integer (int)
-    VECTOR_BOOL_TYPE,            // The variable is boolean (bool)
-    VECTOR_DOUBLE_TYPE,          // The variable is float (double)
-    VECTOR_STRING_TYPE,          // The variable is string (char*)
-    VECTOR_STL_STRING_TYPE,      // The variable is string (char*)
+  enum VariableTypeEnum
+  {
+    NO_VARIABLE_TYPE = 0,   // The variable is not specified
+    INT_TYPE,               // The variable is integer (int)
+    BOOL_TYPE,              // The variable is boolean (bool)
+    DOUBLE_TYPE,            // The variable is float (double)
+    STRING_TYPE,            // The variable is string (char*)
+    STL_STRING_TYPE,        // The variable is string (char*)
+    VECTOR_INT_TYPE,        // The variable is integer (int)
+    VECTOR_BOOL_TYPE,       // The variable is boolean (bool)
+    VECTOR_DOUBLE_TYPE,     // The variable is float (double)
+    VECTOR_STRING_TYPE,     // The variable is string (char*)
+    VECTOR_STL_STRING_TYPE, // The variable is string (char*)
     LAST_VARIABLE_TYPE
     LAST_VARIABLE_TYPE
   };
   };
 
 
   /**
   /**
    * Prototypes for callbacks for callback interface.
    * Prototypes for callbacks for callback interface.
    */
    */
-  typedef int(*CallbackType)(const char* argument, const char* value, 
-    void* call_data);
-  typedef int(*ErrorCallbackType)(const char* argument, void* client_data);
+  typedef int (*CallbackType)(const char* argument, const char* value,
+                              void* call_data);
+  typedef int (*ErrorCallbackType)(const char* argument, void* client_data);
 
 
   /**
   /**
    * Initialize internal data structures. This should be called before parsing.
    * Initialize internal data structures. This should be called before parsing.
@@ -133,24 +126,24 @@ public:
    * argument help specifies the help string used with this option. The
    * argument help specifies the help string used with this option. The
    * callback and call_data can be skipped.
    * callback and call_data can be skipped.
    */
    */
-  void AddCallback(const char* argument, ArgumentTypeEnum type, 
-    CallbackType callback, void* call_data, const char* help);
+  void AddCallback(const char* argument, ArgumentTypeEnum type,
+                   CallbackType callback, void* call_data, const char* help);
 
 
   /**
   /**
    * Add handler for argument which is going to set the variable to the
    * Add handler for argument which is going to set the variable to the
    * specified value. If the argument is specified, the option is casted to the
    * specified value. If the argument is specified, the option is casted to the
    * appropriate type.
    * appropriate type.
    */
    */
+  void AddArgument(const char* argument, ArgumentTypeEnum type, bool* variable,
+                   const char* help);
+  void AddArgument(const char* argument, ArgumentTypeEnum type, int* variable,
+                   const char* help);
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    bool* variable, const char* help);
+                   double* variable, const char* help);
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    int* variable, const char* help);
-  void AddArgument(const char* argument, ArgumentTypeEnum type, 
-    double* variable, const char* help);
-  void AddArgument(const char* argument, ArgumentTypeEnum type, 
-    char** variable, const char* help);
+                   char** variable, const char* help);
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    std::string* variable, const char* help);
+                   std::string* variable, const char* help);
 
 
   /**
   /**
    * Add handler for argument which is going to set the variable to the
    * Add handler for argument which is going to set the variable to the
@@ -158,31 +151,31 @@ public:
    * appropriate type. This will handle the multi argument values.
    * appropriate type. This will handle the multi argument values.
    */
    */
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    std::vector<bool>* variable, const char* help);
+                   std::vector<bool>* variable, const char* help);
+  void AddArgument(const char* argument, ArgumentTypeEnum type,
+                   std::vector<int>* variable, const char* help);
+  void AddArgument(const char* argument, ArgumentTypeEnum type,
+                   std::vector<double>* variable, const char* help);
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    std::vector<int>* variable, const char* help);
-  void AddArgument(const char* argument, ArgumentTypeEnum type, 
-    std::vector<double>* variable, const char* help);
-  void AddArgument(const char* argument, ArgumentTypeEnum type, 
-    std::vector<char*>* variable, const char* help);
+                   std::vector<char*>* variable, const char* help);
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    std::vector<std::string>* variable, const char* help);
+                   std::vector<std::string>* variable, const char* help);
 
 
   /**
   /**
    * Add handler for boolean argument. The argument does not take any option
    * Add handler for boolean argument. The argument does not take any option
    * and if it is specified, the value of the variable is true/1, otherwise it
    * and if it is specified, the value of the variable is true/1, otherwise it
    * is false/0.
    * is false/0.
    */
    */
-  void AddBooleanArgument(const char* argument,
-    bool* variable, const char* help);
-  void AddBooleanArgument(const char* argument,
-    int* variable, const char* help);
-  void AddBooleanArgument(const char* argument,
-    double* variable, const char* help);
-  void AddBooleanArgument(const char* argument,
-    char** variable, const char* help);
-  void AddBooleanArgument(const char* argument,
-    std::string* variable, const char* help);
+  void AddBooleanArgument(const char* argument, bool* variable,
+                          const char* help);
+  void AddBooleanArgument(const char* argument, int* variable,
+                          const char* help);
+  void AddBooleanArgument(const char* argument, double* variable,
+                          const char* help);
+  void AddBooleanArgument(const char* argument, char** variable,
+                          const char* help);
+  void AddBooleanArgument(const char* argument, std::string* variable,
+                          const char* help);
 
 
   /**
   /**
    * Set the callbacks for error handling.
    * Set the callbacks for error handling.
@@ -236,14 +229,14 @@ protected:
 
 
   //! This is internal method that registers variable with argument
   //! This is internal method that registers variable with argument
   void AddArgument(const char* argument, ArgumentTypeEnum type,
   void AddArgument(const char* argument, ArgumentTypeEnum type,
-    VariableTypeEnum vtype, void* variable, const char* help);
+                   VariableTypeEnum vtype, void* variable, const char* help);
 
 
   bool GetMatchedArguments(std::vector<std::string>* matches,
   bool GetMatchedArguments(std::vector<std::string>* matches,
-    const std::string& arg);
+                           const std::string& arg);
 
 
   //! Populate individual variables
   //! Populate individual variables
   bool PopulateVariable(CommandLineArgumentsCallbackStructure* cs,
   bool PopulateVariable(CommandLineArgumentsCallbackStructure* cs,
-    const char* value);
+                        const char* value);
 
 
   //! Populate individual variables of type ...
   //! Populate individual variables of type ...
   void PopulateVariable(bool* variable, const std::string& value);
   void PopulateVariable(bool* variable, const std::string& value);
@@ -253,9 +246,12 @@ protected:
   void PopulateVariable(std::string* variable, const std::string& value);
   void PopulateVariable(std::string* variable, const std::string& value);
   void PopulateVariable(std::vector<bool>* variable, const std::string& value);
   void PopulateVariable(std::vector<bool>* variable, const std::string& value);
   void PopulateVariable(std::vector<int>* variable, const std::string& value);
   void PopulateVariable(std::vector<int>* variable, const std::string& value);
-  void PopulateVariable(std::vector<double>* variable, const std::string& value);
-  void PopulateVariable(std::vector<char*>* variable, const std::string& value);
-  void PopulateVariable(std::vector<std::string>* variable, const std::string& value);
+  void PopulateVariable(std::vector<double>* variable,
+                        const std::string& value);
+  void PopulateVariable(std::vector<char*>* variable,
+                        const std::string& value);
+  void PopulateVariable(std::vector<std::string>* variable,
+                        const std::string& value);
 
 
   typedef CommandLineArgumentsInternal Internal;
   typedef CommandLineArgumentsInternal Internal;
   Internal* Internals;
   Internal* Internals;
@@ -269,8 +265,3 @@ protected:
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@
 
 
 #endif
 #endif
-
-
-
-
-

+ 79 - 88
Configure.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Configure_h
 #ifndef @KWSYS_NAMESPACE@_Configure_h
 #define @KWSYS_NAMESPACE@_Configure_h
 #define @KWSYS_NAMESPACE@_Configure_h
 
 
@@ -16,22 +7,22 @@
    namespace.  When not building a kwsys source file these macros are
    namespace.  When not building a kwsys source file these macros are
    temporarily defined inside the headers that use them.  */
    temporarily defined inside the headers that use them.  */
 #if defined(KWSYS_NAMESPACE)
 #if defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 
 
 /* Disable some warnings inside kwsys source files.  */
 /* Disable some warnings inside kwsys source files.  */
 #if defined(KWSYS_NAMESPACE)
 #if defined(KWSYS_NAMESPACE)
-# if defined(__BORLANDC__)
-#  pragma warn -8027 /* function not inlined.  */
-# endif
-# if defined(__INTEL_COMPILER)
-#  pragma warning (disable: 1572) /* floating-point equality test */
-# endif
-# if defined(__sgi) && !defined(__GNUC__)
-#  pragma set woff 3970 /* pointer to int conversion */
-#  pragma set woff 3968 /* 64 bit conversion */
-# endif
+#if defined(__BORLANDC__)
+#pragma warn - 8027 /* function not inlined.  */
+#endif
+#if defined(__INTEL_COMPILER)
+#pragma warning(disable : 1572) /* floating-point equality test */
+#endif
+#if defined(__sgi) && !defined(__GNUC__)
+#pragma set woff 3970 /* pointer to int conversion */
+#pragma set woff 3968 /* 64 bit conversion */
+#endif
 #endif
 #endif
 
 
 /* Whether kwsys namespace is "kwsys".  */
 /* Whether kwsys namespace is "kwsys".  */
@@ -42,84 +33,84 @@
 
 
 /* Whether Large File Support is available.  */
 /* Whether Large File Support is available.  */
 #if @KWSYS_NAMESPACE@_LFS_REQUESTED
 #if @KWSYS_NAMESPACE@_LFS_REQUESTED
-# define @KWSYS_NAMESPACE@_LFS_AVAILABLE @KWSYS_LFS_AVAILABLE@
+#define @KWSYS_NAMESPACE@_LFS_AVAILABLE @KWSYS_LFS_AVAILABLE@
 #endif
 #endif
 
 
 /* Setup Large File Support if requested.  */
 /* Setup Large File Support if requested.  */
 #if @KWSYS_NAMESPACE@_LFS_REQUESTED
 #if @KWSYS_NAMESPACE@_LFS_REQUESTED
-  /* Since LFS is requested this header must be included before system
-     headers whether or not LFS is available. */
-# if 0 && (defined(_SYS_TYPES_H) || defined(_SYS_TYPES_INCLUDED))
-#  error "@KWSYS_NAMESPACE@/Configure.h must be included before sys/types.h"
-# endif
-  /* Enable the large file API if it is available.  */
-# if @KWSYS_NAMESPACE@_LFS_AVAILABLE && \
-     !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINES)
-#  if !defined(_LARGEFILE_SOURCE) && \
-      !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGEFILE_SOURCE)
-#   define _LARGEFILE_SOURCE
-#  endif
-#  if !defined(_LARGEFILE64_SOURCE) && \
-      !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGEFILE64_SOURCE)
-#   define _LARGEFILE64_SOURCE
-#  endif
-#  if !defined(_LARGE_FILES) && \
-      !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGE_FILES)
-#   define _LARGE_FILES
-#  endif
-#  if !defined(_FILE_OFFSET_BITS) && \
-      !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_FILE_OFFSET_BITS)
-#   define _FILE_OFFSET_BITS 64
-#  endif
-#  if 0 && (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS < 64)
-#   error "_FILE_OFFSET_BITS must be defined to at least 64"
-#  endif
-# endif
+/* Since LFS is requested this header must be included before system
+   headers whether or not LFS is available. */
+#if 0 && (defined(_SYS_TYPES_H) || defined(_SYS_TYPES_INCLUDED))
+#error "@KWSYS_NAMESPACE@/Configure.h must be included before sys/types.h"
+#endif
+/* Enable the large file API if it is available.  */
+#if @KWSYS_NAMESPACE@_LFS_AVAILABLE &&                                        \
+  !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINES)
+#if !defined(_LARGEFILE_SOURCE) &&                                            \
+  !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGEFILE_SOURCE)
+#define _LARGEFILE_SOURCE
+#endif
+#if !defined(_LARGEFILE64_SOURCE) &&                                          \
+  !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGEFILE64_SOURCE)
+#define _LARGEFILE64_SOURCE
+#endif
+#if !defined(_LARGE_FILES) &&                                                 \
+  !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_LARGE_FILES)
+#define _LARGE_FILES
+#endif
+#if !defined(_FILE_OFFSET_BITS) &&                                            \
+  !defined(@KWSYS_NAMESPACE@_LFS_NO_DEFINE_FILE_OFFSET_BITS)
+#define _FILE_OFFSET_BITS 64
+#endif
+#if 0 && (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS < 64)
+#error "_FILE_OFFSET_BITS must be defined to at least 64"
+#endif
+#endif
 #endif
 #endif
 
 
 /* Setup the export macro.  */
 /* Setup the export macro.  */
 #if @KWSYS_BUILD_SHARED@
 #if @KWSYS_BUILD_SHARED@
-# if defined(_WIN32) || defined(__CYGWIN__)
-#  if defined(@KWSYS_NAMESPACE@_EXPORTS)
-#   define @KWSYS_NAMESPACE@_EXPORT __declspec(dllexport)
-#  else
-#   define @KWSYS_NAMESPACE@_EXPORT __declspec(dllimport)
-#  endif
-# elif __GNUC__ >= 4
-#  define @KWSYS_NAMESPACE@_EXPORT __attribute__ ((visibility("default")))
-# else
-#  define @KWSYS_NAMESPACE@_EXPORT
-# endif
+#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(@KWSYS_NAMESPACE@_EXPORTS)
+#define @KWSYS_NAMESPACE@_EXPORT __declspec(dllexport)
+#else
+#define @KWSYS_NAMESPACE@_EXPORT __declspec(dllimport)
+#endif
+#elif __GNUC__ >= 4
+#define @KWSYS_NAMESPACE@_EXPORT __attribute__((visibility("default")))
+#else
+#define @KWSYS_NAMESPACE@_EXPORT
+#endif
 #else
 #else
-# define @KWSYS_NAMESPACE@_EXPORT
+#define @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 
 
 /* Enable warnings that are off by default but are useful.  */
 /* Enable warnings that are off by default but are useful.  */
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_ENABLE)
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_ENABLE)
-# if defined(_MSC_VER)
-#  pragma warning ( default : 4263 ) /* no override, call convention differs */
-# endif
+#if defined(_MSC_VER)
+#pragma warning(default : 4263) /* no override, call convention differs */
+#endif
 #endif
 #endif
 
 
 /* Disable warnings that are on by default but occur in valid code.  */
 /* Disable warnings that are on by default but occur in valid code.  */
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_DISABLE)
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_DISABLE)
-# if defined(_MSC_VER)
-#  pragma warning (disable: 4097) /* typedef is synonym for class */
-#  pragma warning (disable: 4127) /* conditional expression is constant */
-#  pragma warning (disable: 4244) /* possible loss in conversion */
-#  pragma warning (disable: 4251) /* missing DLL-interface */
-#  pragma warning (disable: 4305) /* truncation from type1 to type2 */
-#  pragma warning (disable: 4309) /* truncation of constant value */
-#  pragma warning (disable: 4514) /* unreferenced inline function */
-#  pragma warning (disable: 4706) /* assignment in conditional expression */
-#  pragma warning (disable: 4710) /* function not inlined */
-#  pragma warning (disable: 4786) /* identifier truncated in debug info */
-# endif
-# if defined(__BORLANDC__) && !defined(__cplusplus)
-   /* Code has no effect; raised by winnt.h in C (not C++) when ignoring an
-      unused parameter using "(param)" syntax (i.e. no cast to void).  */
-#  pragma warn -8019
-# endif
+#if defined(_MSC_VER)
+#pragma warning(disable : 4097) /* typedef is synonym for class */
+#pragma warning(disable : 4127) /* conditional expression is constant */
+#pragma warning(disable : 4244) /* possible loss in conversion */
+#pragma warning(disable : 4251) /* missing DLL-interface */
+#pragma warning(disable : 4305) /* truncation from type1 to type2 */
+#pragma warning(disable : 4309) /* truncation of constant value */
+#pragma warning(disable : 4514) /* unreferenced inline function */
+#pragma warning(disable : 4706) /* assignment in conditional expression */
+#pragma warning(disable : 4710) /* function not inlined */
+#pragma warning(disable : 4786) /* identifier truncated in debug info */
+#endif
+#if defined(__BORLANDC__) && !defined(__cplusplus)
+/* Code has no effect; raised by winnt.h in C (not C++) when ignoring an
+   unused parameter using "(param)" syntax (i.e. no cast to void).  */
+#pragma warn - 8019
+#endif
 #endif
 #endif
 
 
 /* MSVC 6.0 in release mode will warn about code it produces with its
 /* MSVC 6.0 in release mode will warn about code it produces with its
@@ -127,10 +118,10 @@
    configuration.  Real warnings will be revealed by a debug build or
    configuration.  Real warnings will be revealed by a debug build or
    by other compilers.  */
    by other compilers.  */
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_DISABLE_BOGUS)
 #if !defined(@KWSYS_NAMESPACE@_NO_WARNING_DISABLE_BOGUS)
-# if defined(_MSC_VER) && (_MSC_VER < 1300) && defined(NDEBUG)
-#  pragma warning ( disable : 4701 ) /* Variable may be used uninitialized.  */
-#  pragma warning ( disable : 4702 ) /* Unreachable code.  */
-# endif
+#if defined(_MSC_VER) && (_MSC_VER < 1300) && defined(NDEBUG)
+#pragma warning(disable : 4701) /* Variable may be used uninitialized.  */
+#pragma warning(disable : 4702) /* Unreachable code.  */
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 11 - 18
Configure.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Configure_hxx
 #ifndef @KWSYS_NAMESPACE@_Configure_hxx
 #define @KWSYS_NAMESPACE@_Configure_hxx
 #define @KWSYS_NAMESPACE@_Configure_hxx
 
 
@@ -18,17 +9,19 @@
 /* Whether wstring is available.  */
 /* Whether wstring is available.  */
 #define @KWSYS_NAMESPACE@_STL_HAS_WSTRING @KWSYS_STL_HAS_WSTRING@
 #define @KWSYS_NAMESPACE@_STL_HAS_WSTRING @KWSYS_STL_HAS_WSTRING@
 /* Whether <ext/stdio_filebuf.h> is available. */
 /* Whether <ext/stdio_filebuf.h> is available. */
-#define @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H @KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H@
+#define @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H                         \
+  @KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H@
 
 
 /* If building a C++ file in kwsys itself, give the source file
 /* If building a C++ file in kwsys itself, give the source file
    access to the macros without a configured namespace.  */
    access to the macros without a configured namespace.  */
 #if defined(KWSYS_NAMESPACE)
 #if defined(KWSYS_NAMESPACE)
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  define kwsys     @KWSYS_NAMESPACE@
-# endif
-# define KWSYS_NAME_IS_KWSYS               @KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define KWSYS_STL_HAS_WSTRING             @KWSYS_NAMESPACE@_STL_HAS_WSTRING
-# define KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#define kwsys @KWSYS_NAMESPACE@
+#endif
+#define KWSYS_NAME_IS_KWSYS @KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#define KWSYS_STL_HAS_WSTRING @KWSYS_NAMESPACE@_STL_HAS_WSTRING
+#define KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H                                     \
+  @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
 #endif
 #endif
 
 
 #endif
 #endif

+ 320 - 309
ConsoleBuf.hxx.in

@@ -1,354 +1,365 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2016 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_ConsoleBuf_hxx
 #ifndef @KWSYS_NAMESPACE@_ConsoleBuf_hxx
 #define @KWSYS_NAMESPACE@_ConsoleBuf_hxx
 #define @KWSYS_NAMESPACE@_ConsoleBuf_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
+
 #include <@KWSYS_NAMESPACE@/Encoding.hxx>
 #include <@KWSYS_NAMESPACE@/Encoding.hxx>
-#include <string>
+
 #include <cstring>
 #include <cstring>
-#include <sstream>
-#include <streambuf>
 #include <iostream>
 #include <iostream>
+#include <sstream>
 #include <stdexcept>
 #include <stdexcept>
+#include <streambuf>
+#include <string>
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
-#  include <windows.h>
-#  if __cplusplus >= 201103L
-#    include <system_error>
-#  endif
+#include <windows.h>
+#if __cplusplus >= 201103L
+#include <system_error>
+#endif
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 #if defined(_WIN32)
 #if defined(_WIN32)
 
 
-  template<class CharT, class Traits = std::char_traits<CharT> >
-  class @KWSYS_NAMESPACE@_EXPORT BasicConsoleBuf :
-      public std::basic_streambuf<CharT, Traits> {
-    public:
-      typedef typename Traits::int_type int_type;
-      typedef typename Traits::char_type char_type;
-
-      class Manager {
-        public:
-          Manager(std::basic_ios<CharT, Traits> &ios, const bool err = false)
-            : m_consolebuf(0)
-          {
-            m_ios = &ios;
-            try {
-              m_consolebuf = new BasicConsoleBuf<CharT, Traits>(err);
-              m_streambuf = m_ios->rdbuf(m_consolebuf);
-            } catch (const std::runtime_error& ex) {
-              std::cerr << "Failed to create ConsoleBuf!" << std::endl
-                        << ex.what() << std::endl;
-            };
-          }
-
-          ~Manager()
-          {
-            if (m_consolebuf) {
-              delete m_consolebuf;
-              m_ios->rdbuf(m_streambuf);
-            }
-          }
+template <class CharT, class Traits = std::char_traits<CharT> >
+class @KWSYS_NAMESPACE@_EXPORT BasicConsoleBuf
+  : public std::basic_streambuf<CharT, Traits>
+{
+public:
+  typedef typename Traits::int_type int_type;
+  typedef typename Traits::char_type char_type;
 
 
-        private:
-          std::basic_ios<CharT, Traits> *m_ios;
-          std::basic_streambuf<CharT, Traits> *m_streambuf;
-          BasicConsoleBuf<CharT, Traits> *m_consolebuf;
+  class Manager
+  {
+  public:
+    Manager(std::basic_ios<CharT, Traits>& ios, const bool err = false)
+      : m_consolebuf(0)
+    {
+      m_ios = &ios;
+      try {
+        m_consolebuf = new BasicConsoleBuf<CharT, Traits>(err);
+        m_streambuf = m_ios->rdbuf(m_consolebuf);
+      } catch (const std::runtime_error& ex) {
+        std::cerr << "Failed to create ConsoleBuf!" << std::endl
+                  << ex.what() << std::endl;
       };
       };
+    }
 
 
-      BasicConsoleBuf(const bool err = false) :
-        flush_on_newline(true),
-        input_pipe_codepage(0),
-        output_pipe_codepage(0),
-        input_file_codepage(CP_UTF8),
-        output_file_codepage(CP_UTF8),
-        m_consolesCodepage(0)
-      {
-        m_hInput = ::GetStdHandle(STD_INPUT_HANDLE);
-        checkHandle(true, "STD_INPUT_HANDLE");
-        if (!setActiveInputCodepage()) {
-          throw std::runtime_error("setActiveInputCodepage failed!");
-        }
-        m_hOutput = err ? ::GetStdHandle(STD_ERROR_HANDLE) :
-                          ::GetStdHandle(STD_OUTPUT_HANDLE);
-        checkHandle(false, err ? "STD_ERROR_HANDLE" : "STD_OUTPUT_HANDLE");
-        if (!setActiveOutputCodepage()) {
-          throw std::runtime_error("setActiveOutputCodepage failed!");
-        }
-        _setg();
-        _setp();
+    ~Manager()
+    {
+      if (m_consolebuf) {
+        delete m_consolebuf;
+        m_ios->rdbuf(m_streambuf);
       }
       }
+    }
 
 
-      ~BasicConsoleBuf() throw()
-      {
-        sync();
-      }
+  private:
+    std::basic_ios<CharT, Traits>* m_ios;
+    std::basic_streambuf<CharT, Traits>* m_streambuf;
+    BasicConsoleBuf<CharT, Traits>* m_consolebuf;
+  };
 
 
-      bool activateCodepageChange()
-      {
-        return setActiveInputCodepage() && setActiveOutputCodepage();
-      }
+  BasicConsoleBuf(const bool err = false)
+    : flush_on_newline(true)
+    , input_pipe_codepage(0)
+    , output_pipe_codepage(0)
+    , input_file_codepage(CP_UTF8)
+    , output_file_codepage(CP_UTF8)
+    , m_consolesCodepage(0)
+  {
+    m_hInput = ::GetStdHandle(STD_INPUT_HANDLE);
+    checkHandle(true, "STD_INPUT_HANDLE");
+    if (!setActiveInputCodepage()) {
+      throw std::runtime_error("setActiveInputCodepage failed!");
+    }
+    m_hOutput = err ? ::GetStdHandle(STD_ERROR_HANDLE)
+                    : ::GetStdHandle(STD_OUTPUT_HANDLE);
+    checkHandle(false, err ? "STD_ERROR_HANDLE" : "STD_OUTPUT_HANDLE");
+    if (!setActiveOutputCodepage()) {
+      throw std::runtime_error("setActiveOutputCodepage failed!");
+    }
+    _setg();
+    _setp();
+  }
 
 
-    protected:
-      virtual int sync() {
-        bool success = true;
-        if (m_hInput && m_isConsoleInput &&
-            ::FlushConsoleInputBuffer(m_hInput) == 0) {
-          success = false;
-        }
-        if (m_hOutput && !m_obuffer.empty()) {
-          const std::wstring wbuffer = getBuffer(m_obuffer);
-          if (m_isConsoleOutput) {
-            DWORD charsWritten;
-            success = ::WriteConsoleW(m_hOutput, wbuffer.c_str(),
-                                      (DWORD)wbuffer.size(), &charsWritten,
-                                      NULL) == 0 ? false : true;
-          } else {
-            DWORD bytesWritten;
-            std::string buffer;
-            success = encodeOutputBuffer(wbuffer, buffer);
-            if (success) {
-              success = ::WriteFile(m_hOutput, buffer.c_str(),
-                                    (DWORD)buffer.size(), &bytesWritten,
-                                     NULL) == 0 ? false : true;
-            }
-          }
+  ~BasicConsoleBuf() throw() { sync(); }
+
+  bool activateCodepageChange()
+  {
+    return setActiveInputCodepage() && setActiveOutputCodepage();
+  }
+
+protected:
+  virtual int sync()
+  {
+    bool success = true;
+    if (m_hInput && m_isConsoleInput &&
+        ::FlushConsoleInputBuffer(m_hInput) == 0) {
+      success = false;
+    }
+    if (m_hOutput && !m_obuffer.empty()) {
+      const std::wstring wbuffer = getBuffer(m_obuffer);
+      if (m_isConsoleOutput) {
+        DWORD charsWritten;
+        success =
+          ::WriteConsoleW(m_hOutput, wbuffer.c_str(), (DWORD)wbuffer.size(),
+                          &charsWritten, NULL) == 0
+          ? false
+          : true;
+      } else {
+        DWORD bytesWritten;
+        std::string buffer;
+        success = encodeOutputBuffer(wbuffer, buffer);
+        if (success) {
+          success = ::WriteFile(m_hOutput, buffer.c_str(),
+                                (DWORD)buffer.size(), &bytesWritten, NULL) == 0
+            ? false
+            : true;
         }
         }
-        m_ibuffer.clear();
-        m_obuffer.clear();
-        _setg();
-        _setp();
-        return success ? 0 : -1;
       }
       }
+    }
+    m_ibuffer.clear();
+    m_obuffer.clear();
+    _setg();
+    _setp();
+    return success ? 0 : -1;
+  }
 
 
-      virtual int_type underflow() {
-        if (this->gptr() >= this->egptr()) {
-          if (!m_hInput) {
-            _setg(true);
-            return Traits::eof();
-          }
-          if (m_isConsoleInput) {
-            wchar_t wbuffer[128];
-            DWORD charsRead;
-            if (::ReadConsoleW(m_hInput, wbuffer, (sizeof(wbuffer) / sizeof(wbuffer[0])) - 1,
-                               &charsRead, NULL) == 0 || charsRead == 0) {
-              _setg(true);
-              return Traits::eof();
-            }
-            wbuffer[charsRead] = L'\0';
-            setBuffer(wbuffer, m_ibuffer);
-          } else {
-            std::wstring totalBuffer;
-            std::wstring wbuffer;
-            char buffer[128];
-            DWORD bytesRead;
-            while (::ReadFile(m_hInput, buffer, (sizeof(buffer) / sizeof(buffer[0])) - 1,
-                              &bytesRead, NULL) == 0) {
-              if (::GetLastError() == ERROR_MORE_DATA) {
-                buffer[bytesRead] = '\0';
-                if (decodeInputBuffer(buffer, wbuffer)) {
-                  totalBuffer += wbuffer;
-                  continue;
-                }
-              }
-              _setg(true);
-              return Traits::eof();
-            }
+  virtual int_type underflow()
+  {
+    if (this->gptr() >= this->egptr()) {
+      if (!m_hInput) {
+        _setg(true);
+        return Traits::eof();
+      }
+      if (m_isConsoleInput) {
+        wchar_t wbuffer[128];
+        DWORD charsRead;
+        if (::ReadConsoleW(m_hInput, wbuffer,
+                           (sizeof(wbuffer) / sizeof(wbuffer[0])) - 1,
+                           &charsRead, NULL) == 0 ||
+            charsRead == 0) {
+          _setg(true);
+          return Traits::eof();
+        }
+        wbuffer[charsRead] = L'\0';
+        setBuffer(wbuffer, m_ibuffer);
+      } else {
+        std::wstring totalBuffer;
+        std::wstring wbuffer;
+        char buffer[128];
+        DWORD bytesRead;
+        while (::ReadFile(m_hInput, buffer,
+                          (sizeof(buffer) / sizeof(buffer[0])) - 1, &bytesRead,
+                          NULL) == 0) {
+          if (::GetLastError() == ERROR_MORE_DATA) {
             buffer[bytesRead] = '\0';
             buffer[bytesRead] = '\0';
-            if (!decodeInputBuffer(buffer, wbuffer)) {
-              _setg(true);
-              return Traits::eof();
+            if (decodeInputBuffer(buffer, wbuffer)) {
+              totalBuffer += wbuffer;
+              continue;
             }
             }
-            totalBuffer += wbuffer;
-            setBuffer(totalBuffer, m_ibuffer);
           }
           }
-          _setg();
+          _setg(true);
+          return Traits::eof();
+        }
+        buffer[bytesRead] = '\0';
+        if (!decodeInputBuffer(buffer, wbuffer)) {
+          _setg(true);
+          return Traits::eof();
         }
         }
-        return Traits::to_int_type(*this->gptr());
+        totalBuffer += wbuffer;
+        setBuffer(totalBuffer, m_ibuffer);
       }
       }
+      _setg();
+    }
+    return Traits::to_int_type(*this->gptr());
+  }
 
 
-      virtual int_type overflow(int_type ch = Traits::eof()) {
-        if (!Traits::eq_int_type(ch, Traits::eof())) {
-          char_type chr = Traits::to_char_type(ch);
-          m_obuffer += chr;
-          if ((flush_on_newline && Traits::eq(chr, '\n')) ||
-              Traits::eq_int_type(ch, 0x00)) {
-            sync();
-          }
-          return ch;
-        }
+  virtual int_type overflow(int_type ch = Traits::eof())
+  {
+    if (!Traits::eq_int_type(ch, Traits::eof())) {
+      char_type chr = Traits::to_char_type(ch);
+      m_obuffer += chr;
+      if ((flush_on_newline && Traits::eq(chr, '\n')) ||
+          Traits::eq_int_type(ch, 0x00)) {
         sync();
         sync();
-        return Traits::eof();
       }
       }
+      return ch;
+    }
+    sync();
+    return Traits::eof();
+  }
 
 
-    public:
-      bool flush_on_newline;
-      UINT input_pipe_codepage;
-      UINT output_pipe_codepage;
-      UINT input_file_codepage;
-      UINT output_file_codepage;
+public:
+  bool flush_on_newline;
+  UINT input_pipe_codepage;
+  UINT output_pipe_codepage;
+  UINT input_file_codepage;
+  UINT output_file_codepage;
 
 
-    private:
-      HANDLE m_hInput;
-      HANDLE m_hOutput;
-      std::basic_string<char_type> m_ibuffer;
-      std::basic_string<char_type> m_obuffer;
-      bool m_isConsoleInput;
-      bool m_isConsoleOutput;
-      UINT m_activeInputCodepage;
-      UINT m_activeOutputCodepage;
-      UINT m_consolesCodepage;
-      void checkHandle(bool input, std::string handleName) {
-        if ((input && m_hInput == INVALID_HANDLE_VALUE) ||
-            (!input && m_hOutput == INVALID_HANDLE_VALUE)) {
-          std::string errmsg = "GetStdHandle(" + handleName +
-                               ") returned INVALID_HANDLE_VALUE";
+private:
+  HANDLE m_hInput;
+  HANDLE m_hOutput;
+  std::basic_string<char_type> m_ibuffer;
+  std::basic_string<char_type> m_obuffer;
+  bool m_isConsoleInput;
+  bool m_isConsoleOutput;
+  UINT m_activeInputCodepage;
+  UINT m_activeOutputCodepage;
+  UINT m_consolesCodepage;
+  void checkHandle(bool input, std::string handleName)
+  {
+    if ((input && m_hInput == INVALID_HANDLE_VALUE) ||
+        (!input && m_hOutput == INVALID_HANDLE_VALUE)) {
+      std::string errmsg =
+        "GetStdHandle(" + handleName + ") returned INVALID_HANDLE_VALUE";
 #if __cplusplus >= 201103L
 #if __cplusplus >= 201103L
-          throw std::system_error(::GetLastError(),
-                                  std::system_category(), errmsg);
+      throw std::system_error(::GetLastError(), std::system_category(),
+                              errmsg);
 #else
 #else
-          throw std::runtime_error(errmsg);
+      throw std::runtime_error(errmsg);
 #endif
 #endif
-        }
+    }
+  }
+  UINT getConsolesCodepage()
+  {
+    if (!m_consolesCodepage) {
+      m_consolesCodepage = GetConsoleCP();
+      if (!m_consolesCodepage) {
+        m_consolesCodepage = GetACP();
       }
       }
-      UINT getConsolesCodepage() {
-        if (!m_consolesCodepage) {
-          m_consolesCodepage = GetConsoleCP();
-          if (!m_consolesCodepage) {
-            m_consolesCodepage = GetACP();
-          }
+    }
+    return m_consolesCodepage;
+  }
+  bool setActiveInputCodepage()
+  {
+    m_isConsoleInput = false;
+    switch (GetFileType(m_hInput)) {
+      case FILE_TYPE_DISK:
+        m_activeInputCodepage = input_file_codepage;
+        break;
+      case FILE_TYPE_CHAR:
+        // Check for actual console.
+        DWORD consoleMode;
+        m_isConsoleInput =
+          GetConsoleMode(m_hInput, &consoleMode) == 0 ? false : true;
+        if (m_isConsoleInput) {
+          break;
         }
         }
-        return m_consolesCodepage;
-      }
-      bool setActiveInputCodepage() {
-        m_isConsoleInput = false;
-        switch (GetFileType(m_hInput)) {
-          case FILE_TYPE_DISK:
-            m_activeInputCodepage = input_file_codepage;
-            break;
-          case FILE_TYPE_CHAR:
-            // Check for actual console.
-            DWORD consoleMode;
-            m_isConsoleInput = GetConsoleMode(m_hInput, &consoleMode) == 0 ? false : true;
-            if (m_isConsoleInput) {
-              break;
-            }
-          case FILE_TYPE_PIPE:
-            m_activeInputCodepage = input_pipe_codepage;
-            break;
-          default:
-            return false;
-        }
-        if (!m_isConsoleInput && m_activeInputCodepage == 0) {
-          m_activeInputCodepage = getConsolesCodepage();
+      case FILE_TYPE_PIPE:
+        m_activeInputCodepage = input_pipe_codepage;
+        break;
+      default:
+        return false;
+    }
+    if (!m_isConsoleInput && m_activeInputCodepage == 0) {
+      m_activeInputCodepage = getConsolesCodepage();
+    }
+    return true;
+  }
+  bool setActiveOutputCodepage()
+  {
+    m_isConsoleOutput = false;
+    switch (GetFileType(m_hOutput)) {
+      case FILE_TYPE_DISK:
+        m_activeOutputCodepage = output_file_codepage;
+        break;
+      case FILE_TYPE_CHAR:
+        // Check for actual console.
+        DWORD consoleMode;
+        m_isConsoleOutput =
+          GetConsoleMode(m_hOutput, &consoleMode) == 0 ? false : true;
+        if (m_isConsoleOutput) {
+          break;
         }
         }
-        return true;
-      }
-      bool setActiveOutputCodepage() {
-        m_isConsoleOutput = false;
-        switch (GetFileType(m_hOutput)) {
-          case FILE_TYPE_DISK:
-            m_activeOutputCodepage = output_file_codepage;
-            break;
-          case FILE_TYPE_CHAR:
-            // Check for actual console.
-            DWORD consoleMode;
-            m_isConsoleOutput = GetConsoleMode(m_hOutput, &consoleMode) == 0 ? false : true;
-            if (m_isConsoleOutput) {
-              break;
-            }
-          case FILE_TYPE_PIPE:
-            m_activeOutputCodepage = output_pipe_codepage;
-            break;
-          default:
-            return false;
-        }
-        if (!m_isConsoleOutput && m_activeOutputCodepage == 0) {
-           m_activeOutputCodepage = getConsolesCodepage();
-        }
-        return true;
-      }
-      void _setg(bool empty = false) {
-        if (!empty) {
-          this->setg((char_type *)m_ibuffer.data(),
-                     (char_type *)m_ibuffer.data(),
-                     (char_type *)m_ibuffer.data() + m_ibuffer.size());
-        } else {
-          this->setg((char_type *)m_ibuffer.data(),
-                     (char_type *)m_ibuffer.data() + m_ibuffer.size(),
-                     (char_type *)m_ibuffer.data() + m_ibuffer.size());
-        }
-      }
-      void _setp() {
-        this->setp((char_type *)m_obuffer.data(),
-                   (char_type *)m_obuffer.data() + m_obuffer.size());
-      }
-      bool encodeOutputBuffer(const std::wstring wbuffer,
-                              std::string &buffer) {
-        const int length = WideCharToMultiByte(m_activeOutputCodepage, 0,
-                                               wbuffer.c_str(),
-                                               (int)wbuffer.size(), NULL, 0,
-                                               NULL, NULL);
-        char *buf = new char[length + 1];
-        const bool success = WideCharToMultiByte(m_activeOutputCodepage, 0,
-                                                 wbuffer.c_str(),
-                                                 (int)wbuffer.size(), buf,
-                                                 length, NULL, NULL) > 0
-                             ? true : false;
-        buf[length] = '\0';
-        buffer = buf;
-        delete[] buf;
-        return success;
-      }
-      bool decodeInputBuffer(const char *buffer, std::wstring &wbuffer) {
-        int actualCodepage = m_activeInputCodepage;
-        const char BOM_UTF8[] = { char(0xEF), char(0xBB), char(0xBF) };
-        if (std::memcmp(buffer, BOM_UTF8, sizeof(BOM_UTF8)) == 0) {
-          // PowerShell uses UTF-8 with BOM for pipes
-          actualCodepage = CP_UTF8;
-          buffer += sizeof(BOM_UTF8);
-        }
-        const int wlength = MultiByteToWideChar(actualCodepage, 0, buffer,
-                                                -1, NULL, 0);
-        wchar_t *wbuf = new wchar_t[wlength];
-        const bool success = MultiByteToWideChar(actualCodepage, 0, buffer,
-                                                 -1, wbuf, wlength) > 0
-                             ? true : false;
-        wbuffer = wbuf;
-        delete[] wbuf;
-        return success;
-      }
-      std::wstring getBuffer(const std::basic_string<char> buffer) {
-        return Encoding::ToWide(buffer);
-      }
-      std::wstring getBuffer(const std::basic_string<wchar_t> buffer) {
-        return buffer;
-      }
-      void setBuffer(const std::wstring wbuffer,
-                     std::basic_string<char> &target) {
-        target = Encoding::ToNarrow(wbuffer);
-      }
-      void setBuffer(const std::wstring wbuffer,
-                     std::basic_string<wchar_t> &target) {
-        target = wbuffer;
-      }
+      case FILE_TYPE_PIPE:
+        m_activeOutputCodepage = output_pipe_codepage;
+        break;
+      default:
+        return false;
+    }
+    if (!m_isConsoleOutput && m_activeOutputCodepage == 0) {
+      m_activeOutputCodepage = getConsolesCodepage();
+    }
+    return true;
+  }
+  void _setg(bool empty = false)
+  {
+    if (!empty) {
+      this->setg((char_type*)m_ibuffer.data(), (char_type*)m_ibuffer.data(),
+                 (char_type*)m_ibuffer.data() + m_ibuffer.size());
+    } else {
+      this->setg((char_type*)m_ibuffer.data(),
+                 (char_type*)m_ibuffer.data() + m_ibuffer.size(),
+                 (char_type*)m_ibuffer.data() + m_ibuffer.size());
+    }
+  }
+  void _setp()
+  {
+    this->setp((char_type*)m_obuffer.data(),
+               (char_type*)m_obuffer.data() + m_obuffer.size());
+  }
+  bool encodeOutputBuffer(const std::wstring wbuffer, std::string& buffer)
+  {
+    const int length =
+      WideCharToMultiByte(m_activeOutputCodepage, 0, wbuffer.c_str(),
+                          (int)wbuffer.size(), NULL, 0, NULL, NULL);
+    char* buf = new char[length + 1];
+    const bool success =
+      WideCharToMultiByte(m_activeOutputCodepage, 0, wbuffer.c_str(),
+                          (int)wbuffer.size(), buf, length, NULL, NULL) > 0
+      ? true
+      : false;
+    buf[length] = '\0';
+    buffer = buf;
+    delete[] buf;
+    return success;
+  }
+  bool decodeInputBuffer(const char* buffer, std::wstring& wbuffer)
+  {
+    int actualCodepage = m_activeInputCodepage;
+    const char BOM_UTF8[] = { char(0xEF), char(0xBB), char(0xBF) };
+    if (std::memcmp(buffer, BOM_UTF8, sizeof(BOM_UTF8)) == 0) {
+      // PowerShell uses UTF-8 with BOM for pipes
+      actualCodepage = CP_UTF8;
+      buffer += sizeof(BOM_UTF8);
+    }
+    const int wlength =
+      MultiByteToWideChar(actualCodepage, 0, buffer, -1, NULL, 0);
+    wchar_t* wbuf = new wchar_t[wlength];
+    const bool success =
+      MultiByteToWideChar(actualCodepage, 0, buffer, -1, wbuf, wlength) > 0
+      ? true
+      : false;
+    wbuffer = wbuf;
+    delete[] wbuf;
+    return success;
+  }
+  std::wstring getBuffer(const std::basic_string<char> buffer)
+  {
+    return Encoding::ToWide(buffer);
+  }
+  std::wstring getBuffer(const std::basic_string<wchar_t> buffer)
+  {
+    return buffer;
+  }
+  void setBuffer(const std::wstring wbuffer, std::basic_string<char>& target)
+  {
+    target = Encoding::ToNarrow(wbuffer);
+  }
+  void setBuffer(const std::wstring wbuffer,
+                 std::basic_string<wchar_t>& target)
+  {
+    target = wbuffer;
+  }
 
 
-  }; // BasicConsoleBuf class
+}; // BasicConsoleBuf class
 
 
-  typedef BasicConsoleBuf<char>    ConsoleBuf;
-  typedef BasicConsoleBuf<wchar_t> WConsoleBuf;
+typedef BasicConsoleBuf<char> ConsoleBuf;
+typedef BasicConsoleBuf<wchar_t> WConsoleBuf;
 
 
 #endif
 #endif
 } // KWSYS_NAMESPACE
 } // KWSYS_NAMESPACE

+ 12 - 5
Copyright.txt

@@ -1,5 +1,5 @@
 KWSys - Kitware System Library
 KWSys - Kitware System Library
-Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+Copyright 2000-2016 Kitware, Inc. and Contributors
 All rights reserved.
 All rights reserved.
 
 
 Redistribution and use in source and binary forms, with or without
 Redistribution and use in source and binary forms, with or without
@@ -13,10 +13,9 @@ are met:
   notice, this list of conditions and the following disclaimer in the
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
   documentation and/or other materials provided with the distribution.
 
 
-* Neither the names of Kitware, Inc., the Insight Software Consortium,
-  nor the names of their contributors may be used to endorse or promote
-  products derived from this software without specific prior written
-  permission.
+* Neither the name of Kitware, Inc. nor the names of Contributors
+  may be used to endorse or promote products derived from this
+  software without specific prior written permission.
 
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -29,3 +28,11 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+------------------------------------------------------------------------------
+
+The following individuals and institutions are among the Contributors:
+
+* Insight Software Consortium <insightsoftwareconsortium.org>
+
+See version control history for details of individual contributions.

+ 56 - 84
Directory.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Directory.hxx)
 #include KWSYS_HEADER(Directory.hxx)
 
 
@@ -19,16 +10,15 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Directory.hxx.in"
-# include "Configure.hxx.in"
-# include "Encoding.hxx.in"
+#include "Configure.hxx.in"
+#include "Directory.hxx.in"
+#include "Encoding.hxx.in"
 #endif
 #endif
 
 
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 class DirectoryInternals
 class DirectoryInternals
@@ -62,10 +52,9 @@ unsigned long Directory::GetNumberOfFiles() const
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* Directory::GetFile(unsigned long dindex) const
 const char* Directory::GetFile(unsigned long dindex) const
 {
 {
-  if ( dindex >= this->Internal->Files.size() )
-    {
+  if (dindex >= this->Internal->Files.size()) {
     return 0;
     return 0;
-    }
+  }
   return this->Internal->Files[dindex].c_str();
   return this->Internal->Files[dindex].c_str();
 }
 }
 
 
@@ -88,9 +77,10 @@ void Directory::Clear()
 
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #include <windows.h>
 #include <windows.h>
-#include <io.h>
+
 #include <ctype.h>
 #include <ctype.h>
 #include <fcntl.h>
 #include <fcntl.h>
+#include <io.h>
 #include <stdio.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <string.h>
 #include <string.h>
@@ -99,15 +89,14 @@ void Directory::Clear()
 
 
 // Wide function names can vary depending on compiler:
 // Wide function names can vary depending on compiler:
 #ifdef __BORLANDC__
 #ifdef __BORLANDC__
-# define _wfindfirst_func __wfindfirst
-# define _wfindnext_func __wfindnext
+#define _wfindfirst_func __wfindfirst
+#define _wfindnext_func __wfindnext
 #else
 #else
-# define _wfindfirst_func _wfindfirst
-# define _wfindnext_func _wfindnext
+#define _wfindfirst_func _wfindfirst
+#define _wfindnext_func _wfindnext
 #endif
 #endif
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 bool Directory::Load(const std::string& name)
 bool Directory::Load(const std::string& name)
 {
 {
@@ -120,42 +109,34 @@ bool Directory::Load(const std::string& name)
 #endif
 #endif
   char* buf;
   char* buf;
   size_t n = name.size();
   size_t n = name.size();
-  if ( *name.rbegin() == '/' || *name.rbegin() == '\\' )
-    {
+  if (*name.rbegin() == '/' || *name.rbegin() == '\\') {
     buf = new char[n + 1 + 1];
     buf = new char[n + 1 + 1];
     sprintf(buf, "%s*", name.c_str());
     sprintf(buf, "%s*", name.c_str());
-    }
-  else
-    {
+  } else {
     // Make sure the slashes in the wildcard suffix are consistent with the
     // Make sure the slashes in the wildcard suffix are consistent with the
     // rest of the path
     // rest of the path
     buf = new char[n + 2 + 1];
     buf = new char[n + 2 + 1];
-    if ( name.find('\\') != name.npos )
-      {
+    if (name.find('\\') != name.npos) {
       sprintf(buf, "%s\\*", name.c_str());
       sprintf(buf, "%s\\*", name.c_str());
-      }
-    else
-      {
+    } else {
       sprintf(buf, "%s/*", name.c_str());
       sprintf(buf, "%s/*", name.c_str());
-      }
     }
     }
-  struct _wfinddata_t data;      // data of current file
+  }
+  struct _wfinddata_t data; // data of current file
 
 
   // Now put them into the file array
   // Now put them into the file array
-  srchHandle = _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
-  delete [] buf;
+  srchHandle =
+    _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
+  delete[] buf;
 
 
-  if ( srchHandle == -1 )
-    {
+  if (srchHandle == -1) {
     return 0;
     return 0;
-    }
+  }
 
 
   // Loop through names
   // Loop through names
-  do
-    {
+  do {
     this->Internal->Files.push_back(Encoding::ToNarrow(data.name));
     this->Internal->Files.push_back(Encoding::ToNarrow(data.name));
-    }
-  while ( _wfindnext_func(srchHandle, &data) != -1 );
+  } while (_wfindnext_func(srchHandle, &data) != -1);
   this->Internal->Path = name;
   this->Internal->Path = name;
   return _findclose(srchHandle) != -1;
   return _findclose(srchHandle) != -1;
 }
 }
@@ -170,34 +151,29 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
 #endif
 #endif
   char* buf;
   char* buf;
   size_t n = name.size();
   size_t n = name.size();
-  if ( *name.rbegin() == '/' )
-    {
+  if (*name.rbegin() == '/') {
     buf = new char[n + 1 + 1];
     buf = new char[n + 1 + 1];
     sprintf(buf, "%s*", name.c_str());
     sprintf(buf, "%s*", name.c_str());
-    }
-  else
-    {
+  } else {
     buf = new char[n + 2 + 1];
     buf = new char[n + 2 + 1];
     sprintf(buf, "%s/*", name.c_str());
     sprintf(buf, "%s/*", name.c_str());
-    }
-  struct _wfinddata_t data;      // data of current file
+  }
+  struct _wfinddata_t data; // data of current file
 
 
   // Now put them into the file array
   // Now put them into the file array
-  srchHandle = _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
-  delete [] buf;
+  srchHandle =
+    _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
+  delete[] buf;
 
 
-  if ( srchHandle == -1 )
-    {
+  if (srchHandle == -1) {
     return 0;
     return 0;
-    }
+  }
 
 
   // Loop through names
   // Loop through names
   unsigned long count = 0;
   unsigned long count = 0;
-  do
-    {
+  do {
     count++;
     count++;
-    }
-  while ( _wfindnext_func(srchHandle, &data) != -1 );
+  } while (_wfindnext_func(srchHandle, &data) != -1);
   _findclose(srchHandle);
   _findclose(srchHandle);
   return count;
   return count;
 }
 }
@@ -209,6 +185,7 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
 // Now the POSIX style directory access
 // Now the POSIX style directory access
 
 
 #include <sys/types.h>
 #include <sys/types.h>
+
 #include <dirent.h>
 #include <dirent.h>
 
 
 // PGI with glibc has trouble with dirent and large file support:
 // PGI with glibc has trouble with dirent and large file support:
@@ -216,33 +193,30 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
 //  p=1992&sid=f16167f51964f1a68fe5041b8eb213b6
 //  p=1992&sid=f16167f51964f1a68fe5041b8eb213b6
 // Work around the problem by mapping dirent the same way as readdir.
 // Work around the problem by mapping dirent the same way as readdir.
 #if defined(__PGI) && defined(__GLIBC__)
 #if defined(__PGI) && defined(__GLIBC__)
-# define kwsys_dirent_readdir dirent
-# define kwsys_dirent_readdir64 dirent64
-# define kwsys_dirent kwsys_dirent_lookup(readdir)
-# define kwsys_dirent_lookup(x) kwsys_dirent_lookup_delay(x)
-# define kwsys_dirent_lookup_delay(x) kwsys_dirent_##x
+#define kwsys_dirent_readdir dirent
+#define kwsys_dirent_readdir64 dirent64
+#define kwsys_dirent kwsys_dirent_lookup(readdir)
+#define kwsys_dirent_lookup(x) kwsys_dirent_lookup_delay(x)
+#define kwsys_dirent_lookup_delay(x) kwsys_dirent_##x
 #else
 #else
-# define kwsys_dirent dirent
+#define kwsys_dirent dirent
 #endif
 #endif
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 bool Directory::Load(const std::string& name)
 bool Directory::Load(const std::string& name)
 {
 {
   this->Clear();
   this->Clear();
-   
+
   DIR* dir = opendir(name.c_str());
   DIR* dir = opendir(name.c_str());
 
 
-  if (!dir)
-    {
+  if (!dir) {
     return 0;
     return 0;
-    }
+  }
 
 
-  for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir) )
-    {
+  for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir)) {
     this->Internal->Files.push_back(d->d_name);
     this->Internal->Files.push_back(d->d_name);
-    }
+  }
   this->Internal->Path = name;
   this->Internal->Path = name;
   closedir(dir);
   closedir(dir);
   return 1;
   return 1;
@@ -252,16 +226,14 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
 {
 {
   DIR* dir = opendir(name.c_str());
   DIR* dir = opendir(name.c_str());
 
 
-  if (!dir)
-    {
+  if (!dir) {
     return 0;
     return 0;
-    }
+  }
 
 
   unsigned long count = 0;
   unsigned long count = 0;
-  for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir) )
-    {
+  for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir)) {
     count++;
     count++;
-    }
+  }
   closedir(dir);
   closedir(dir);
   return count;
   return count;
 }
 }

+ 7 - 16
Directory.hxx.in

@@ -1,22 +1,13 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Directory_hxx
 #ifndef @KWSYS_NAMESPACE@_Directory_hxx
 #define @KWSYS_NAMESPACE@_Directory_hxx
 #define @KWSYS_NAMESPACE@_Directory_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.h>
 #include <@KWSYS_NAMESPACE@/Configure.h>
+
 #include <string>
 #include <string>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 class DirectoryInternals;
 class DirectoryInternals;
 
 
@@ -72,9 +63,9 @@ private:
   // Private implementation details.
   // Private implementation details.
   DirectoryInternals* Internal;
   DirectoryInternals* Internal;
 
 
-  Directory(const Directory&);  // Not implemented.
-  void operator=(const Directory&);  // Not implemented.
-}; // End Class: Directory
+  Directory(const Directory&);      // Not implemented.
+  void operator=(const Directory&); // Not implemented.
+};                                  // End Class: Directory
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@
 
 

+ 100 - 129
DynamicLoader.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(DynamicLoader.hxx)
 #include KWSYS_HEADER(DynamicLoader.hxx)
 
 
@@ -17,8 +8,8 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "DynamicLoader.hxx.in"
-# include "Configure.hxx.in"
+#include "Configure.hxx.in"
+#include "DynamicLoader.hxx.in"
 #endif
 #endif
 
 
 // This file is actually 3 different implementations.
 // This file is actually 3 different implementations.
@@ -32,15 +23,15 @@
 // ---------------------------------------------------------------
 // ---------------------------------------------------------------
 // 1. Implementation for HPUX  machines
 // 1. Implementation for HPUX  machines
 #ifdef __hpux
 #ifdef __hpux
-#include <errno.h>
 #include <dl.h>
 #include <dl.h>
+#include <errno.h>
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   return shl_load(libname.c_str(), BIND_DEFERRED | DYNAMIC_PATH, 0L);
   return shl_load(libname.c_str(), BIND_DEFERRED | DYNAMIC_PATH, 0L);
 }
 }
@@ -48,25 +39,25 @@ DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libna
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
-  if (!lib)
-    {
+  if (!lib) {
     return 0;
     return 0;
-    }
+  }
   return !shl_unload(lib);
   return !shl_unload(lib);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::SymbolPointer
-DynamicLoader::GetSymbolAddress(DynamicLoader::LibraryHandle lib, const std::string& sym)
+DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
+  DynamicLoader::LibraryHandle lib, const std::string& sym)
 {
 {
   void* addr;
   void* addr;
   int status;
   int status;
 
 
   /* TYPE_PROCEDURE Look for a function or procedure. (This used to be default)
   /* TYPE_PROCEDURE Look for a function or procedure. (This used to be default)
-   * TYPE_DATA      Look for a symbol in the data segment (for example, variables).
+   * TYPE_DATA      Look for a symbol in the data segment (for example,
+   * variables).
    * TYPE_UNDEFINED Look for any symbol.
    * TYPE_UNDEFINED Look for any symbol.
    */
    */
-  status = shl_findsym (&lib, sym.c_str(), TYPE_UNDEFINED, &addr);
+  status = shl_findsym(&lib, sym.c_str(), TYPE_UNDEFINED, &addr);
   void* result = (status < 0) ? (void*)0 : addr;
   void* result = (status < 0) ? (void*)0 : addr;
 
 
   // Hack to cast pointer-to-data to pointer-to-function.
   // Hack to cast pointer-to-data to pointer-to-function.
@@ -88,12 +79,9 @@ const char* DynamicLoader::LastError()
    * The specified handle is invalid.
    * The specified handle is invalid.
    */
    */
 
 
-  if(  errno == ENOEXEC
-    || errno == ENOSYM
-    || errno == EINVAL )
-    {
+  if (errno == ENOEXEC || errno == ENOSYM || errno == EINVAL) {
     return strerror(errno);
     return strerror(errno);
-    }
+  }
   // else
   // else
   return 0;
   return 0;
 }
 }
@@ -102,38 +90,37 @@ const char* DynamicLoader::LastError()
 
 
 #endif //__hpux
 #endif //__hpux
 
 
-
 // ---------------------------------------------------------------
 // ---------------------------------------------------------------
 // 2. Implementation for Mac OS X 10.2.x and earlier
 // 2. Implementation for Mac OS X 10.2.x and earlier
 #ifdef __APPLE__
 #ifdef __APPLE__
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
-#include <string.h> // for strlen
 #include <mach-o/dyld.h>
 #include <mach-o/dyld.h>
+#include <string.h> // for strlen
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   NSObjectFileImageReturnCode rc;
   NSObjectFileImageReturnCode rc;
   NSObjectFileImage image = 0;
   NSObjectFileImage image = 0;
 
 
   rc = NSCreateObjectFileImageFromFile(libname.c_str(), &image);
   rc = NSCreateObjectFileImageFromFile(libname.c_str(), &image);
   // rc == NSObjectFileImageInappropriateFile when trying to load a dylib file
   // rc == NSObjectFileImageInappropriateFile when trying to load a dylib file
-  if( rc != NSObjectFileImageSuccess )
-    {
+  if (rc != NSObjectFileImageSuccess) {
     return 0;
     return 0;
-    }
-  NSModule handle = NSLinkModule(image, libname.c_str(),
-    NSLINKMODULE_OPTION_BINDNOW|NSLINKMODULE_OPTION_RETURN_ON_ERROR);
+  }
+  NSModule handle =
+    NSLinkModule(image, libname.c_str(), NSLINKMODULE_OPTION_BINDNOW |
+                   NSLINKMODULE_OPTION_RETURN_ON_ERROR);
   NSDestroyObjectFileImage(image);
   NSDestroyObjectFileImage(image);
   return handle;
   return handle;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-int DynamicLoader::CloseLibrary( DynamicLoader::LibraryHandle lib)
+int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
   // NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED
   // NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED
   // With  this  option  the memory for the module is not deallocated
   // With  this  option  the memory for the module is not deallocated
@@ -148,18 +135,17 @@ int DynamicLoader::CloseLibrary( DynamicLoader::LibraryHandle lib)
 DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
 DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
   DynamicLoader::LibraryHandle lib, const std::string& sym)
   DynamicLoader::LibraryHandle lib, const std::string& sym)
 {
 {
-  void *result=0;
+  void* result = 0;
   // Need to prepend symbols with '_' on Apple-gcc compilers
   // Need to prepend symbols with '_' on Apple-gcc compilers
   size_t len = sym.size();
   size_t len = sym.size();
-  char *rsym = new char[len + 1 + 1];
+  char* rsym = new char[len + 1 + 1];
   strcpy(rsym, "_");
   strcpy(rsym, "_");
-  strcat(rsym+1, sym.c_str());
+  strcat(rsym + 1, sym.c_str());
 
 
   NSSymbol symbol = NSLookupSymbolInModule(lib, rsym);
   NSSymbol symbol = NSLookupSymbolInModule(lib, rsym);
-  if(symbol)
-    {
+  if (symbol) {
     result = NSAddressOfSymbol(symbol);
     result = NSAddressOfSymbol(symbol);
-    }
+  }
 
 
   delete[] rsym;
   delete[] rsym;
   // Hack to cast pointer-to-data to pointer-to-function.
   // Hack to cast pointer-to-data to pointer-to-function.
@@ -183,19 +169,19 @@ const char* DynamicLoader::LastError()
 #include <windows.h>
 #include <windows.h>
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname)
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   DynamicLoader::LibraryHandle lh;
   DynamicLoader::LibraryHandle lh;
   int length = MultiByteToWideChar(CP_UTF8, 0, libname.c_str(), -1, NULL, 0);
   int length = MultiByteToWideChar(CP_UTF8, 0, libname.c_str(), -1, NULL, 0);
-  wchar_t* wchars = new wchar_t[length+1];
+  wchar_t* wchars = new wchar_t[length + 1];
   wchars[0] = '\0';
   wchars[0] = '\0';
   MultiByteToWideChar(CP_UTF8, 0, libname.c_str(), -1, wchars, length);
   MultiByteToWideChar(CP_UTF8, 0, libname.c_str(), -1, wchars, length);
   lh = LoadLibraryW(wchars);
   lh = LoadLibraryW(wchars);
-  delete [] wchars;
+  delete[] wchars;
   return lh;
   return lh;
 }
 }
 
 
@@ -231,21 +217,21 @@ DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
   //
   //
   // Note that the "@X" part of the name above is the total size (in
   // Note that the "@X" part of the name above is the total size (in
   // bytes) of the arguments on the stack.
   // bytes) of the arguments on the stack.
-  void *result;
+  void* result;
 #if defined(__BORLANDC__) || defined(__WATCOMC__)
 #if defined(__BORLANDC__) || defined(__WATCOMC__)
   // Need to prepend symbols with '_'
   // Need to prepend symbols with '_'
   size_t len = sym.size();
   size_t len = sym.size();
-  char *rsym = new char[len + 1 + 1];
+  char* rsym = new char[len + 1 + 1];
   strcpy(rsym, "_");
   strcpy(rsym, "_");
   strcat(rsym, sym.c_str());
   strcat(rsym, sym.c_str());
 #else
 #else
-  const char *rsym = sym.c_str();
+  const char* rsym = sym.c_str();
 #endif
 #endif
   result = (void*)GetProcAddress(lib, rsym);
   result = (void*)GetProcAddress(lib, rsym);
 #if defined(__BORLANDC__) || defined(__WATCOMC__)
 #if defined(__BORLANDC__) || defined(__WATCOMC__)
   delete[] rsym;
   delete[] rsym;
 #endif
 #endif
-  // Hack to cast pointer-to-data to pointer-to-function.
+// Hack to cast pointer-to-data to pointer-to-function.
 #ifdef __WATCOMC__
 #ifdef __WATCOMC__
   return *(DynamicLoader::SymbolPointer*)(&result);
   return *(DynamicLoader::SymbolPointer*)(&result);
 #else
 #else
@@ -256,28 +242,22 @@ DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* DynamicLoader::LastError()
 const char* DynamicLoader::LastError()
 {
 {
-  LPVOID lpMsgBuf=NULL;
-
-  FormatMessage(
-    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
-    NULL,
-    GetLastError(),
-    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
-    (LPTSTR) &lpMsgBuf,
-    0,
-    NULL
-    );
-
-  if(!lpMsgBuf)
-    {
+  LPVOID lpMsgBuf = NULL;
+
+  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                NULL, GetLastError(),
+                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+                (LPTSTR)&lpMsgBuf, 0, NULL);
+
+  if (!lpMsgBuf) {
     return NULL;
     return NULL;
-    }
+  }
 
 
   static char* str = 0;
   static char* str = 0;
-  delete [] str;
-  str = strcpy(new char[strlen((char*)lpMsgBuf)+1], (char*)lpMsgBuf);
+  delete[] str;
+  str = strcpy(new char[strlen((char*)lpMsgBuf) + 1], (char*)lpMsgBuf);
   // Free the buffer.
   // Free the buffer.
-  LocalFree( lpMsgBuf );
+  LocalFree(lpMsgBuf);
   return str;
   return str;
 }
 }
 
 
@@ -296,44 +276,39 @@ const char* DynamicLoader::LastError()
 
 
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 static image_id last_dynamic_err = B_OK;
 static image_id last_dynamic_err = B_OK;
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   // image_id's are integers, errors are negative. Add one just in case we
   // image_id's are integers, errors are negative. Add one just in case we
   //  get a valid image_id of zero (is that even possible?).
   //  get a valid image_id of zero (is that even possible?).
   image_id rc = load_add_on(libname.c_str());
   image_id rc = load_add_on(libname.c_str());
-  if (rc < 0)
-    {
+  if (rc < 0) {
     last_dynamic_err = rc;
     last_dynamic_err = rc;
     return 0;
     return 0;
-    }
+  }
 
 
-  return rc+1;
+  return rc + 1;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
-  if (!lib)
-    {
-      last_dynamic_err = B_BAD_VALUE;
-      return 0;
-    }
-  else
-    {
+  if (!lib) {
+    last_dynamic_err = B_BAD_VALUE;
+    return 0;
+  } else {
     // The function dlclose() returns 0 on success, and non-zero on error.
     // The function dlclose() returns 0 on success, and non-zero on error.
-    status_t rc = unload_add_on(lib-1);
-    if (rc != B_OK)
-      {
+    status_t rc = unload_add_on(lib - 1);
+    if (rc != B_OK) {
       last_dynamic_err = rc;
       last_dynamic_err = rc;
       return 0;
       return 0;
-      }
     }
     }
+  }
 
 
   return 1;
   return 1;
 }
 }
@@ -343,7 +318,7 @@ DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
   DynamicLoader::LibraryHandle lib, const std::string& sym)
   DynamicLoader::LibraryHandle lib, const std::string& sym)
 {
 {
   // Hack to cast pointer-to-data to pointer-to-function.
   // Hack to cast pointer-to-data to pointer-to-function.
-  union 
+  union
   {
   {
     void* pvoid;
     void* pvoid;
     DynamicLoader::SymbolPointer psym;
     DynamicLoader::SymbolPointer psym;
@@ -351,29 +326,26 @@ DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
 
 
   result.psym = NULL;
   result.psym = NULL;
 
 
-  if (!lib)
-    {
-      last_dynamic_err = B_BAD_VALUE;
-    }
-  else
-    {
+  if (!lib) {
+    last_dynamic_err = B_BAD_VALUE;
+  } else {
     // !!! FIXME: BeOS can do function-only lookups...does this ever
     // !!! FIXME: BeOS can do function-only lookups...does this ever
     // !!! FIXME:  actually _want_ a data symbol lookup, or was this union
     // !!! FIXME:  actually _want_ a data symbol lookup, or was this union
     // !!! FIXME:  a leftover of dlsym()? (s/ANY/TEXT for functions only).
     // !!! FIXME:  a leftover of dlsym()? (s/ANY/TEXT for functions only).
-    status_t rc = get_image_symbol(lib-1,sym.c_str(),B_SYMBOL_TYPE_ANY,&result.pvoid);
-    if (rc != B_OK)
-      {
+    status_t rc =
+      get_image_symbol(lib - 1, sym.c_str(), B_SYMBOL_TYPE_ANY, &result.pvoid);
+    if (rc != B_OK) {
       last_dynamic_err = rc;
       last_dynamic_err = rc;
       result.psym = NULL;
       result.psym = NULL;
-      }
     }
     }
+  }
   return result.psym;
   return result.psym;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* DynamicLoader::LastError()
 const char* DynamicLoader::LastError()
 {
 {
-  const char *retval = strerror(last_dynamic_err);
+  const char* retval = strerror(last_dynamic_err);
   last_dynamic_err = B_OK;
   last_dynamic_err = B_OK;
   return retval;
   return retval;
 }
 }
@@ -385,15 +357,16 @@ const char* DynamicLoader::LastError()
 // 5. Implementation for systems without dynamic libs
 // 5. Implementation for systems without dynamic libs
 // __gnu_blrts__ is IBM BlueGene/L
 // __gnu_blrts__ is IBM BlueGene/L
 // __LIBCATAMOUNT__ is defined on Catamount on Cray compute nodes
 // __LIBCATAMOUNT__ is defined on Catamount on Cray compute nodes
-#if defined(__gnu_blrts__) || defined(__LIBCATAMOUNT__) || defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+#if defined(__gnu_blrts__) || defined(__LIBCATAMOUNT__) ||                    \
+  defined(__CRAYXT_COMPUTE_LINUX_TARGET)
 #include <string.h> // for strerror()
 #include <string.h> // for strerror()
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   return 0;
   return 0;
 }
 }
@@ -401,26 +374,25 @@ DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libna
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
-  if (!lib)
-    {
+  if (!lib) {
     return 0;
     return 0;
-    }
+  }
 
 
   return 1;
   return 1;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
 DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
-    DynamicLoader::LibraryHandle lib, const std::string& sym)
+  DynamicLoader::LibraryHandle lib, const std::string& sym)
 {
 {
   return 0;
   return 0;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* DynamicLoader::LastError()
 const char* DynamicLoader::LastError()
-  {
+{
   return "General error";
   return "General error";
-  }
+}
 
 
 } // namespace KWSYS_NAMESPACE
 } // namespace KWSYS_NAMESPACE
 #endif
 #endif
@@ -428,28 +400,28 @@ const char* DynamicLoader::LastError()
 #ifdef __MINT__
 #ifdef __MINT__
 #define DYNAMICLOADER_DEFINED 1
 #define DYNAMICLOADER_DEFINED 1
 #define _GNU_SOURCE /* for program_invocation_name */
 #define _GNU_SOURCE /* for program_invocation_name */
-#include <string.h>
-#include <malloc.h>
-#include <errno.h>
 #include <dld.h>
 #include <dld.h>
+#include <errno.h>
+#include <malloc.h>
+#include <string.h>
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
-  char *name = (char *)calloc(1, libname.size() + 1);
+  char* name = (char*)calloc(1, libname.size() + 1);
   dld_init(program_invocation_name);
   dld_init(program_invocation_name);
   strncpy(name, libname.c_str(), libname.size());
   strncpy(name, libname.c_str(), libname.size());
   dld_link(libname.c_str());
   dld_link(libname.c_str());
-  return (void *)name;
+  return (void*)name;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
-  dld_unlink_by_file((char *)lib, 0);
+  dld_unlink_by_file((char*)lib, 0);
   free(lib);
   free(lib);
   return 0;
   return 0;
 }
 }
@@ -485,11 +457,11 @@ const char* DynamicLoader::LastError()
 // Setup for most unix machines
 // Setup for most unix machines
 #include <dlfcn.h>
 #include <dlfcn.h>
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libname )
+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(
+  const std::string& libname)
 {
 {
   return dlopen(libname.c_str(), RTLD_LAZY);
   return dlopen(libname.c_str(), RTLD_LAZY);
 }
 }
@@ -497,11 +469,10 @@ DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const std::string& libna
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib)
 {
 {
-  if (lib)
-    {
+  if (lib) {
     // The function dlclose() returns 0 on success, and non-zero on error.
     // The function dlclose() returns 0 on success, and non-zero on error.
     return !dlclose(lib);
     return !dlclose(lib);
-    }
+  }
   // else
   // else
   return 0;
   return 0;
 }
 }
@@ -511,7 +482,7 @@ DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress(
   DynamicLoader::LibraryHandle lib, const std::string& sym)
   DynamicLoader::LibraryHandle lib, const std::string& sym)
 {
 {
   // Hack to cast pointer-to-data to pointer-to-function.
   // Hack to cast pointer-to-data to pointer-to-function.
-  union 
+  union
   {
   {
     void* pvoid;
     void* pvoid;
     DynamicLoader::SymbolPointer psym;
     DynamicLoader::SymbolPointer psym;

+ 17 - 26
DynamicLoader.hxx.in

@@ -1,35 +1,26 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_DynamicLoader_hxx
 #ifndef @KWSYS_NAMESPACE@_DynamicLoader_hxx
 #define @KWSYS_NAMESPACE@_DynamicLoader_hxx
 #define @KWSYS_NAMESPACE@_DynamicLoader_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
+
 #include <string>
 #include <string>
 
 
 #if defined(__hpux)
 #if defined(__hpux)
-  #include <dl.h>
+#include <dl.h>
 #elif defined(_WIN32) && !defined(__CYGWIN__)
 #elif defined(_WIN32) && !defined(__CYGWIN__)
-  #include <windows.h>
+#include <windows.h>
 #elif defined(__APPLE__)
 #elif defined(__APPLE__)
-  #include <AvailabilityMacros.h>
-  #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
-    #include <mach-o/dyld.h>
-  #endif
+#include <AvailabilityMacros.h>
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
+#include <mach-o/dyld.h>
+#endif
 #elif defined(__BEOS__)
 #elif defined(__BEOS__)
-  #include <be/kernel/image.h>
+#include <be/kernel/image.h>
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 /** \class DynamicLoader
 /** \class DynamicLoader
  * \brief Portable loading of dynamic libraries or dll's.
  * \brief Portable loading of dynamic libraries or dll's.
  *
  *
@@ -61,14 +52,14 @@ public:
 #elif defined(_WIN32) && !defined(__CYGWIN__)
 #elif defined(_WIN32) && !defined(__CYGWIN__)
   typedef HMODULE LibraryHandle;
   typedef HMODULE LibraryHandle;
 #elif defined(__APPLE__)
 #elif defined(__APPLE__)
-  #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
-    typedef NSModule LibraryHandle;
-  #else
-    typedef void* LibraryHandle;
-  #endif
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
+  typedef NSModule LibraryHandle;
+#else
+  typedef void* LibraryHandle;
+#endif
 #elif defined(__BEOS__)
 #elif defined(__BEOS__)
   typedef image_id LibraryHandle;
   typedef image_id LibraryHandle;
-#else  // POSIX
+#else // POSIX
   typedef void* LibraryHandle;
   typedef void* LibraryHandle;
 #endif
 #endif
 
 

+ 24 - 34
Encoding.h.in

@@ -1,18 +1,10 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Encoding_h
 #ifndef @KWSYS_NAMESPACE@_Encoding_h
 #define @KWSYS_NAMESPACE@_Encoding_h
 #define @KWSYS_NAMESPACE@_Encoding_h
 
 
 #include <@KWSYS_NAMESPACE@/Configure.h>
 #include <@KWSYS_NAMESPACE@/Configure.h>
+
 #include <wchar.h>
 #include <wchar.h>
 
 
 /* Redefine all public interface symbol names to be in the proper
 /* Redefine all public interface symbol names to be in the proper
@@ -20,44 +12,42 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysEncoding         kwsys_ns(Encoding)
-# define kwsysEncoding_mbstowcs  kwsys_ns(Encoding_mbstowcs)
-# define kwsysEncoding_DupToWide  kwsys_ns(Encoding_DupToWide)
-# define kwsysEncoding_wcstombs  kwsys_ns(Encoding_wcstombs)
-# define kwsysEncoding_DupToNarrow kwsys_ns(Encoding_DupToNarrow)
+#define kwsysEncoding kwsys_ns(Encoding)
+#define kwsysEncoding_mbstowcs kwsys_ns(Encoding_mbstowcs)
+#define kwsysEncoding_DupToWide kwsys_ns(Encoding_DupToWide)
+#define kwsysEncoding_wcstombs kwsys_ns(Encoding_wcstombs)
+#define kwsysEncoding_DupToNarrow kwsys_ns(Encoding_DupToNarrow)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
-
 /* Convert a narrow string to a wide string.
 /* Convert a narrow string to a wide string.
    On Windows, UTF-8 is assumed, and on other platforms,
    On Windows, UTF-8 is assumed, and on other platforms,
    the current locale is assumed.
    the current locale is assumed.
    */
    */
-kwsysEXPORT size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* src, size_t n);
+kwsysEXPORT size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* src,
+                                          size_t n);
 
 
 /* Convert a narrow string to a wide string.
 /* Convert a narrow string to a wide string.
    This can return NULL if the conversion fails. */
    This can return NULL if the conversion fails. */
 kwsysEXPORT wchar_t* kwsysEncoding_DupToWide(const char* src);
 kwsysEXPORT wchar_t* kwsysEncoding_DupToWide(const char* src);
 
 
-
 /* Convert a wide string to a narrow string.
 /* Convert a wide string to a narrow string.
    On Windows, UTF-8 is assumed, and on other platforms,
    On Windows, UTF-8 is assumed, and on other platforms,
    the current locale is assumed. */
    the current locale is assumed. */
-kwsysEXPORT size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* src, size_t n);
+kwsysEXPORT size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* src,
+                                          size_t n);
 
 
 /* Convert a wide string to a narrow string.
 /* Convert a wide string to a narrow string.
    This can return NULL if the conversion fails. */
    This can return NULL if the conversion fails. */
 kwsysEXPORT char* kwsysEncoding_DupToNarrow(const wchar_t* str);
 kwsysEXPORT char* kwsysEncoding_DupToNarrow(const wchar_t* str);
 
 
-
 #if defined(__cplusplus)
 #if defined(__cplusplus)
 } /* extern "C" */
 } /* extern "C" */
 #endif
 #endif
@@ -65,15 +55,15 @@ kwsysEXPORT char* kwsysEncoding_DupToNarrow(const wchar_t* str);
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysEncoding
-#  undef kwsysEncoding_mbstowcs
-#  undef kwsysEncoding_DupToWide
-#  undef kwsysEncoding_wcstombs
-#  undef kwsysEncoding_DupToNarrow
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysEncoding
+#undef kwsysEncoding_mbstowcs
+#undef kwsysEncoding_DupToWide
+#undef kwsysEncoding_wcstombs
+#undef kwsysEncoding_DupToNarrow
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 31 - 41
Encoding.hxx.in

@@ -1,59 +1,49 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Encoding_hxx
 #ifndef @KWSYS_NAMESPACE@_Encoding_hxx
 #define @KWSYS_NAMESPACE@_Encoding_hxx
 #define @KWSYS_NAMESPACE@_Encoding_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
+
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 class @KWSYS_NAMESPACE@_EXPORT Encoding
 class @KWSYS_NAMESPACE@_EXPORT Encoding
 {
 {
 public:
 public:
-
   // Container class for argc/argv.
   // Container class for argc/argv.
   class CommandLineArguments
   class CommandLineArguments
   {
   {
-    public:
-      // On Windows, get the program command line arguments
-      // in this Encoding module's 8 bit encoding.
-      // On other platforms the given argc/argv is used, and
-      // to be consistent, should be the argc/argv from main().
-      static CommandLineArguments Main(int argc, char const* const* argv);
-
-      // Construct CommandLineArguments with the given
-      // argc/argv.  It is assumed that the string is already
-      // in the encoding used by this module.
-      CommandLineArguments(int argc, char const* const* argv);
-
-      // Construct CommandLineArguments with the given
-      // argc and wide argv.  This is useful if wmain() is used.
-      CommandLineArguments(int argc, wchar_t const* const* argv);
-      ~CommandLineArguments();
-      CommandLineArguments(const CommandLineArguments&);
-      CommandLineArguments& operator=(const CommandLineArguments&);
-
-      int argc() const;
-      char const* const* argv() const;
-
-    protected:
-      std::vector<char*> argv_;
+  public:
+    // On Windows, get the program command line arguments
+    // in this Encoding module's 8 bit encoding.
+    // On other platforms the given argc/argv is used, and
+    // to be consistent, should be the argc/argv from main().
+    static CommandLineArguments Main(int argc, char const* const* argv);
+
+    // Construct CommandLineArguments with the given
+    // argc/argv.  It is assumed that the string is already
+    // in the encoding used by this module.
+    CommandLineArguments(int argc, char const* const* argv);
+
+    // Construct CommandLineArguments with the given
+    // argc and wide argv.  This is useful if wmain() is used.
+    CommandLineArguments(int argc, wchar_t const* const* argv);
+    ~CommandLineArguments();
+    CommandLineArguments(const CommandLineArguments&);
+    CommandLineArguments& operator=(const CommandLineArguments&);
+
+    int argc() const;
+    char const* const* argv() const;
+
+  protected:
+    std::vector<char*> argv_;
   };
   };
 
 
-  /**
-   * Convert between char and wchar_t
-   */
+/**
+ * Convert between char and wchar_t
+ */
 
 
 #if @KWSYS_NAMESPACE@_STL_HAS_WSTRING
 #if @KWSYS_NAMESPACE@_STL_HAS_WSTRING
 
 

+ 20 - 33
EncodingC.c

@@ -1,21 +1,12 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Encoding.h)
 #include KWSYS_HEADER(Encoding.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "Encoding.h.in"
+#include "Encoding.h.in"
 #endif
 #endif
 
 
 #include <stdlib.h>
 #include <stdlib.h>
@@ -26,13 +17,13 @@
 
 
 size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* str, size_t n)
 size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* str, size_t n)
 {
 {
-  if(str == 0)
-    {
+  if (str == 0) {
     return (size_t)-1;
     return (size_t)-1;
-    }
+  }
 #ifdef _WIN32
 #ifdef _WIN32
-  return MultiByteToWideChar(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0,
-                             str, -1, dest, (int)n) - 1;
+  return MultiByteToWideChar(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0, str, -1, dest,
+                             (int)n) -
+    1;
 #else
 #else
   return mbstowcs(dest, str, n);
   return mbstowcs(dest, str, n);
 #endif
 #endif
@@ -42,27 +33,25 @@ wchar_t* kwsysEncoding_DupToWide(const char* str)
 {
 {
   wchar_t* ret = NULL;
   wchar_t* ret = NULL;
   size_t length = kwsysEncoding_mbstowcs(NULL, str, 0) + 1;
   size_t length = kwsysEncoding_mbstowcs(NULL, str, 0) + 1;
-  if(length > 0)
-    {
-    ret = (wchar_t*)malloc((length)*sizeof(wchar_t));
-    if(ret)
-      {
+  if (length > 0) {
+    ret = (wchar_t*)malloc((length) * sizeof(wchar_t));
+    if (ret) {
       ret[0] = 0;
       ret[0] = 0;
       kwsysEncoding_mbstowcs(ret, str, length);
       kwsysEncoding_mbstowcs(ret, str, length);
-      }
     }
     }
+  }
   return ret;
   return ret;
 }
 }
 
 
 size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* str, size_t n)
 size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* str, size_t n)
 {
 {
-  if(str == 0)
-    {
+  if (str == 0) {
     return (size_t)-1;
     return (size_t)-1;
-    }
+  }
 #ifdef _WIN32
 #ifdef _WIN32
-  return WideCharToMultiByte(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0, str, -1,
-                             dest, (int)n, NULL, NULL) - 1;
+  return WideCharToMultiByte(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0, str, -1, dest,
+                             (int)n, NULL, NULL) -
+    1;
 #else
 #else
   return wcstombs(dest, str, n);
   return wcstombs(dest, str, n);
 #endif
 #endif
@@ -72,14 +61,12 @@ char* kwsysEncoding_DupToNarrow(const wchar_t* str)
 {
 {
   char* ret = NULL;
   char* ret = NULL;
   size_t length = kwsysEncoding_wcstombs(0, str, 0) + 1;
   size_t length = kwsysEncoding_wcstombs(0, str, 0) + 1;
-  if(length > 0)
-    {
+  if (length > 0) {
     ret = (char*)malloc(length);
     ret = (char*)malloc(length);
-    if(ret)
-      {
+    if (ret) {
       ret[0] = 0;
       ret[0] = 0;
       kwsysEncoding_wcstombs(ret, str, length);
       kwsysEncoding_wcstombs(ret, str, length);
-      }
     }
     }
+  }
   return ret;
   return ret;
 }
 }

+ 44 - 66
EncodingCXX.cxx

@@ -1,19 +1,9 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
-
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifdef __osf__
 #ifdef __osf__
-#  define _OSF_SOURCE
-#  define _POSIX_C_SOURCE 199506L
-#  define _XOPEN_SOURCE_EXTENDED
+#define _OSF_SOURCE
+#define _POSIX_C_SOURCE 199506L
+#define _XOPEN_SOURCE_EXTENDED
 #endif
 #endif
 
 
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
@@ -23,44 +13,43 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Encoding.hxx.in"
-# include "Encoding.h.in"
+#include "Encoding.h.in"
+#include "Encoding.hxx.in"
 #endif
 #endif
 
 
-#include <vector>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <string.h>
 #include <string.h>
+#include <vector>
 
 
 #ifdef _MSC_VER
 #ifdef _MSC_VER
-# pragma warning (disable: 4786)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 // Windows API.
 // Windows API.
 #if defined(_WIN32)
 #if defined(_WIN32)
-# include <windows.h>
-# include <shellapi.h>
+#include <windows.h>
+
+#include <shellapi.h>
 #endif
 #endif
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
-Encoding::CommandLineArguments
-Encoding::CommandLineArguments::Main(int argc, char const* const* argv)
+Encoding::CommandLineArguments Encoding::CommandLineArguments::Main(
+  int argc, char const* const* argv)
 {
 {
 #ifdef _WIN32
 #ifdef _WIN32
-  (void) argc;
-  (void) argv;
+  (void)argc;
+  (void)argv;
 
 
   int ac;
   int ac;
   LPWSTR* w_av = CommandLineToArgvW(GetCommandLineW(), &ac);
   LPWSTR* w_av = CommandLineToArgvW(GetCommandLineW(), &ac);
 
 
   std::vector<std::string> av1(ac);
   std::vector<std::string> av1(ac);
   std::vector<char const*> av2(ac);
   std::vector<char const*> av2(ac);
-  for(int i=0; i<ac; i++)
-    {
+  for (int i = 0; i < ac; i++) {
     av1[i] = ToNarrow(w_av[i]);
     av1[i] = ToNarrow(w_av[i]);
     av2[i] = av1[i].c_str();
     av2[i] = av1[i].c_str();
-    }
+  }
   LocalFree(w_av);
   LocalFree(w_av);
   return CommandLineArguments(ac, &av2[0]);
   return CommandLineArguments(ac, &av2[0]);
 #else
 #else
@@ -71,60 +60,53 @@ Encoding::CommandLineArguments::Main(int argc, char const* const* argv)
 Encoding::CommandLineArguments::CommandLineArguments(int ac,
 Encoding::CommandLineArguments::CommandLineArguments(int ac,
                                                      char const* const* av)
                                                      char const* const* av)
 {
 {
-  this->argv_.resize(ac+1);
-  for(int i=0; i<ac; i++)
-    {
+  this->argv_.resize(ac + 1);
+  for (int i = 0; i < ac; i++) {
     this->argv_[i] = strdup(av[i]);
     this->argv_[i] = strdup(av[i]);
-    }
+  }
   this->argv_[ac] = 0;
   this->argv_[ac] = 0;
 }
 }
 
 
 Encoding::CommandLineArguments::CommandLineArguments(int ac,
 Encoding::CommandLineArguments::CommandLineArguments(int ac,
                                                      wchar_t const* const* av)
                                                      wchar_t const* const* av)
 {
 {
-  this->argv_.resize(ac+1);
-  for(int i=0; i<ac; i++)
-    {
+  this->argv_.resize(ac + 1);
+  for (int i = 0; i < ac; i++) {
     this->argv_[i] = kwsysEncoding_DupToNarrow(av[i]);
     this->argv_[i] = kwsysEncoding_DupToNarrow(av[i]);
-    }
+  }
   this->argv_[ac] = 0;
   this->argv_[ac] = 0;
 }
 }
 
 
 Encoding::CommandLineArguments::~CommandLineArguments()
 Encoding::CommandLineArguments::~CommandLineArguments()
 {
 {
-  for(size_t i=0; i<this->argv_.size(); i++)
-    {
+  for (size_t i = 0; i < this->argv_.size(); i++) {
     free(argv_[i]);
     free(argv_[i]);
-    }
+  }
 }
 }
 
 
-Encoding::CommandLineArguments::
-  CommandLineArguments(const CommandLineArguments& other)
+Encoding::CommandLineArguments::CommandLineArguments(
+  const CommandLineArguments& other)
 {
 {
   this->argv_.resize(other.argv_.size());
   this->argv_.resize(other.argv_.size());
-  for(size_t i=0; i<this->argv_.size(); i++)
-    {
+  for (size_t i = 0; i < this->argv_.size(); i++) {
     this->argv_[i] = other.argv_[i] ? strdup(other.argv_[i]) : 0;
     this->argv_[i] = other.argv_[i] ? strdup(other.argv_[i]) : 0;
-    }
+  }
 }
 }
 
 
-Encoding::CommandLineArguments&
-Encoding::CommandLineArguments::operator=(const CommandLineArguments& other)
+Encoding::CommandLineArguments& Encoding::CommandLineArguments::operator=(
+  const CommandLineArguments& other)
 {
 {
-  if(this != &other)
-    {
+  if (this != &other) {
     size_t i;
     size_t i;
-    for(i=0; i<this->argv_.size(); i++)
-      {
+    for (i = 0; i < this->argv_.size(); i++) {
       free(this->argv_[i]);
       free(this->argv_[i]);
-      }
+    }
 
 
     this->argv_.resize(other.argv_.size());
     this->argv_.resize(other.argv_.size());
-    for(i=0; i<this->argv_.size(); i++)
-      {
+    for (i = 0; i < this->argv_.size(); i++) {
       this->argv_[i] = other.argv_[i] ? strdup(other.argv_[i]) : 0;
       this->argv_[i] = other.argv_[i] ? strdup(other.argv_[i]) : 0;
-      }
     }
     }
+  }
 
 
   return *this;
   return *this;
 }
 }
@@ -155,14 +137,12 @@ std::wstring Encoding::ToWide(const char* cstr)
 {
 {
   std::wstring wstr;
   std::wstring wstr;
   size_t length = kwsysEncoding_mbstowcs(0, cstr, 0) + 1;
   size_t length = kwsysEncoding_mbstowcs(0, cstr, 0) + 1;
-  if(length > 0)
-    {
+  if (length > 0) {
     std::vector<wchar_t> wchars(length);
     std::vector<wchar_t> wchars(length);
-    if(kwsysEncoding_mbstowcs(&wchars[0], cstr, length) > 0)
-      {
+    if (kwsysEncoding_mbstowcs(&wchars[0], cstr, length) > 0) {
       wstr = &wchars[0];
       wstr = &wchars[0];
-      }
     }
     }
+  }
   return wstr;
   return wstr;
 }
 }
 
 
@@ -170,14 +150,12 @@ std::string Encoding::ToNarrow(const wchar_t* wcstr)
 {
 {
   std::string str;
   std::string str;
   size_t length = kwsysEncoding_wcstombs(0, wcstr, 0) + 1;
   size_t length = kwsysEncoding_wcstombs(0, wcstr, 0) + 1;
-  if(length > 0)
-    {
+  if (length > 0) {
     std::vector<char> chars(length);
     std::vector<char> chars(length);
-    if(kwsysEncoding_wcstombs(&chars[0], wcstr, length) > 0)
-      {
+    if (kwsysEncoding_wcstombs(&chars[0], wcstr, length) > 0) {
       str = &chars[0];
       str = &chars[0];
-      }
     }
     }
+  }
   return str;
   return str;
 }
 }
 #endif // KWSYS_STL_HAS_WSTRING
 #endif // KWSYS_STL_HAS_WSTRING

+ 22 - 45
FStream.cxx

@@ -1,78 +1,55 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(FStream.hxx)
 #include KWSYS_HEADER(FStream.hxx)
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "FStream.hxx.in"
+#include "FStream.hxx.in"
 #endif
 #endif
 
 
-namespace KWSYS_NAMESPACE
-{
-namespace FStream
-{
+namespace KWSYS_NAMESPACE {
+namespace FStream {
 
 
 BOM ReadBOM(std::istream& in)
 BOM ReadBOM(std::istream& in)
 {
 {
-  if(!in.good())
-    {
+  if (!in.good()) {
     return BOM_None;
     return BOM_None;
-    }
+  }
   unsigned long orig = in.tellg();
   unsigned long orig = in.tellg();
   unsigned char bom[4];
   unsigned char bom[4];
   in.read(reinterpret_cast<char*>(bom), 2);
   in.read(reinterpret_cast<char*>(bom), 2);
-  if(!in.good())
-    {
+  if (!in.good()) {
     in.clear();
     in.clear();
     in.seekg(orig);
     in.seekg(orig);
     return BOM_None;
     return BOM_None;
-    }
-  if(bom[0] == 0xEF && bom[1] == 0xBB)
-    {
-    in.read(reinterpret_cast<char*>(bom+2), 1);
-    if(in.good() && bom[2] == 0xBF)
-      {
+  }
+  if (bom[0] == 0xEF && bom[1] == 0xBB) {
+    in.read(reinterpret_cast<char*>(bom + 2), 1);
+    if (in.good() && bom[2] == 0xBF) {
       return BOM_UTF8;
       return BOM_UTF8;
-      }
     }
     }
-  else if(bom[0] == 0xFE && bom[1] == 0xFF)
-    {
+  } else if (bom[0] == 0xFE && bom[1] == 0xFF) {
     return BOM_UTF16BE;
     return BOM_UTF16BE;
-    }
-  else if(bom[0] == 0x00 && bom[1] == 0x00)
-    {
-    in.read(reinterpret_cast<char*>(bom+2), 2);
-    if(in.good() && bom[2] == 0xFE && bom[3] == 0xFF)
-      {
+  } else if (bom[0] == 0x00 && bom[1] == 0x00) {
+    in.read(reinterpret_cast<char*>(bom + 2), 2);
+    if (in.good() && bom[2] == 0xFE && bom[3] == 0xFF) {
       return BOM_UTF32BE;
       return BOM_UTF32BE;
-      }
     }
     }
-  else if(bom[0] == 0xFF && bom[1] == 0xFE)
-    {
+  } else if (bom[0] == 0xFF && bom[1] == 0xFE) {
     unsigned long p = in.tellg();
     unsigned long p = in.tellg();
-    in.read(reinterpret_cast<char*>(bom+2), 2);
-    if(in.good() && bom[2] == 0x00 && bom[3] == 0x00)
-      {
+    in.read(reinterpret_cast<char*>(bom + 2), 2);
+    if (in.good() && bom[2] == 0x00 && bom[3] == 0x00) {
       return BOM_UTF32LE;
       return BOM_UTF32LE;
-      }
+    }
     in.seekg(p);
     in.seekg(p);
     return BOM_UTF16LE;
     return BOM_UTF16LE;
-    }
+  }
   in.clear();
   in.clear();
   in.seekg(orig);
   in.seekg(orig);
   return BOM_None;
   return BOM_None;
 }
 }
 
 
 } // FStream namespace
 } // FStream namespace
-} //KWSYS_NAMESPACE
+} // KWSYS_NAMESPACE

+ 208 - 220
FStream.hxx.in

@@ -1,288 +1,276 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_FStream_hxx
 #ifndef @KWSYS_NAMESPACE@_FStream_hxx
 #define @KWSYS_NAMESPACE@_FStream_hxx
 #define @KWSYS_NAMESPACE@_FStream_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
+
 #include <@KWSYS_NAMESPACE@/Encoding.hxx>
 #include <@KWSYS_NAMESPACE@/Encoding.hxx>
+
 #include <fstream>
 #include <fstream>
 #if defined(_WIN32)
 #if defined(_WIN32)
-# if !defined(_MSC_VER) && @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
-#  include <ext/stdio_filebuf.h>
-# endif
+#if !defined(_MSC_VER) && @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
+#include <ext/stdio_filebuf.h>
+#endif
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
-#if defined(_WIN32) && (defined(_MSC_VER) || @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H)
-# if defined(_NOEXCEPT)
-#  define @KWSYS_NAMESPACE@_FStream_NOEXCEPT _NOEXCEPT
-# else
-#  define @KWSYS_NAMESPACE@_FStream_NOEXCEPT
-# endif
+namespace @KWSYS_NAMESPACE@ {
+#if defined(_WIN32) &&                                                        \
+  (defined(_MSC_VER) || @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H)
+#if defined(_NOEXCEPT)
+#define @KWSYS_NAMESPACE@_FStream_NOEXCEPT _NOEXCEPT
+#else
+#define @KWSYS_NAMESPACE@_FStream_NOEXCEPT
+#endif
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
 
 
-  template<typename CharType,typename Traits>
-  class basic_filebuf : public std::basic_filebuf<CharType,Traits>
+template <typename CharType, typename Traits>
+class basic_filebuf : public std::basic_filebuf<CharType, Traits>
+{
+#if _MSC_VER >= 1400
+public:
+  typedef std::basic_filebuf<CharType, Traits> my_base_type;
+  basic_filebuf* open(char const* s, std::ios_base::openmode mode)
   {
   {
-# if _MSC_VER >= 1400
-    public:
-      typedef std::basic_filebuf<CharType,Traits> my_base_type;
-      basic_filebuf *open(char const *s,std::ios_base::openmode mode)
-      {
-        const std::wstring wstr = Encoding::ToWide(s);
-        return static_cast<basic_filebuf*>(
-          my_base_type::open(wstr.c_str(), mode)
-          );
-      }
-# endif
-  };
+    const std::wstring wstr = Encoding::ToWide(s);
+    return static_cast<basic_filebuf*>(my_base_type::open(wstr.c_str(), mode));
+  }
+#endif
+};
 
 
 #else
 #else
 
 
-  inline std::wstring getcmode(const std::ios_base::openmode mode) {
-    std::wstring cmode;
-    bool plus = false;
-    if (mode & std::ios_base::app) {
-      cmode += L"a";
-      plus = mode & std::ios_base::in ? true : false;
-    } else if (mode & std::ios_base::trunc ||
-                (mode & std::ios_base::out && (mode & std::ios_base::in) == 0)) {
-      cmode += L"w";
-      plus = mode & std::ios_base::in ? true : false;
-    } else {
-      cmode += L"r";
-      plus = mode & std::ios_base::out ? true : false;
-    }
-    if (plus) {
-      cmode += L"+";
-    }
-    if (mode & std::ios_base::binary) {
-      cmode += L"b";
-    } else {
-      cmode += L"t";
-    }
-    return cmode;
-  };
+inline std::wstring getcmode(const std::ios_base::openmode mode)
+{
+  std::wstring cmode;
+  bool plus = false;
+  if (mode & std::ios_base::app) {
+    cmode += L"a";
+    plus = mode & std::ios_base::in ? true : false;
+  } else if (mode & std::ios_base::trunc ||
+             (mode & std::ios_base::out && (mode & std::ios_base::in) == 0)) {
+    cmode += L"w";
+    plus = mode & std::ios_base::in ? true : false;
+  } else {
+    cmode += L"r";
+    plus = mode & std::ios_base::out ? true : false;
+  }
+  if (plus) {
+    cmode += L"+";
+  }
+  if (mode & std::ios_base::binary) {
+    cmode += L"b";
+  } else {
+    cmode += L"t";
+  }
+  return cmode;
+};
 
 
 #endif
 #endif
 
 
-  template<typename CharType,typename Traits = std::char_traits<CharType> >
-  class basic_efilebuf
-  {
-    public:
+template <typename CharType, typename Traits = std::char_traits<CharType> >
+class basic_efilebuf
+{
+public:
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-      typedef basic_filebuf<CharType,Traits> internal_buffer_type;
+  typedef basic_filebuf<CharType, Traits> internal_buffer_type;
 #else
 #else
-      typedef __gnu_cxx::stdio_filebuf<CharType,Traits> internal_buffer_type;
+  typedef __gnu_cxx::stdio_filebuf<CharType, Traits> internal_buffer_type;
 #endif
 #endif
 
 
-      basic_efilebuf() : file_(0)
-      {
-        buf_ = 0;
-      }
+  basic_efilebuf()
+    : file_(0)
+  {
+    buf_ = 0;
+  }
 
 
-      bool _open(char const *file_name,std::ios_base::openmode mode)
-      {
-        if (is_open() || file_) {
-          return false;
-        }
+  bool _open(char const* file_name, std::ios_base::openmode mode)
+  {
+    if (is_open() || file_) {
+      return false;
+    }
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-        const bool success = buf_->open(file_name,mode) != 0;
+    const bool success = buf_->open(file_name, mode) != 0;
 #else
 #else
-        const std::wstring wstr = Encoding::ToWide(file_name);
-        bool success = false;
-        std::wstring cmode = getcmode(mode);
-        file_ = _wfopen(wstr.c_str(), cmode.c_str());
-        if (file_) {
-          if (buf_) {
-            delete buf_;
-          }
-          buf_ = new internal_buffer_type(file_, mode);
-          success = true;
-        }
-#endif
-        return success;
+    const std::wstring wstr = Encoding::ToWide(file_name);
+    bool success = false;
+    std::wstring cmode = getcmode(mode);
+    file_ = _wfopen(wstr.c_str(), cmode.c_str());
+    if (file_) {
+      if (buf_) {
+        delete buf_;
       }
       }
+      buf_ = new internal_buffer_type(file_, mode);
+      success = true;
+    }
+#endif
+    return success;
+  }
 
 
-      bool is_open()
-      {
-        if (!buf_) {
-          return false;
-        }
-        return buf_->is_open();
-      }
+  bool is_open()
+  {
+    if (!buf_) {
+      return false;
+    }
+    return buf_->is_open();
+  }
 
 
-      bool is_open() const
-      {
-        if (!buf_) {
-          return false;
-        }
-        return buf_->is_open();
-      }
+  bool is_open() const
+  {
+    if (!buf_) {
+      return false;
+    }
+    return buf_->is_open();
+  }
 
 
-      bool _close()
-      {
-        bool success = false;
-        if (buf_) {
-          success = buf_->close() != 0;
+  bool _close()
+  {
+    bool success = false;
+    if (buf_) {
+      success = buf_->close() != 0;
 #if !defined(_MSC_VER)
 #if !defined(_MSC_VER)
-          if (file_) {
-            success = fclose(file_) == 0 ? success : false;
-            file_ = 0;
-          }
-#endif
-        }
-        return success;
+      if (file_) {
+        success = fclose(file_) == 0 ? success : false;
+        file_ = 0;
       }
       }
+#endif
+    }
+    return success;
+  }
 
 
-      static void _set_state(bool success, std::basic_ios<CharType,Traits> *ios, basic_efilebuf* efilebuf)
-      {
+  static void _set_state(bool success, std::basic_ios<CharType, Traits>* ios,
+                         basic_efilebuf* efilebuf)
+  {
 #if !defined(_MSC_VER)
 #if !defined(_MSC_VER)
-        ios->rdbuf(efilebuf->buf_);
+    ios->rdbuf(efilebuf->buf_);
+#else
+    static_cast<void>(efilebuf);
 #endif
 #endif
-        if (!success) {
-          ios->setstate(std::ios_base::failbit);
-        } else {
-          ios->clear();
-        }
-      }
+    if (!success) {
+      ios->setstate(std::ios_base::failbit);
+    } else {
+      ios->clear();
+    }
+  }
 
 
-      ~basic_efilebuf()
-     {
-       if (buf_) {
-         delete buf_;
-       }
-     }
-
-    protected:
-      internal_buffer_type* buf_;
-      FILE *file_;
-  };
-
-template<typename CharType,typename Traits = std::char_traits<CharType> >
-class basic_ifstream : public std::basic_istream<CharType,Traits>,
-                       public basic_efilebuf<CharType,Traits>
+  ~basic_efilebuf()
+  {
+    if (buf_) {
+      delete buf_;
+    }
+  }
+
+protected:
+  internal_buffer_type* buf_;
+  FILE* file_;
+};
+
+template <typename CharType, typename Traits = std::char_traits<CharType> >
+class basic_ifstream : public std::basic_istream<CharType, Traits>,
+                       public basic_efilebuf<CharType, Traits>
 {
 {
-  using basic_efilebuf<CharType,Traits>::is_open;
+  using basic_efilebuf<CharType, Traits>::is_open;
 
 
-  public:
-    typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type internal_buffer_type;
-    typedef std::basic_istream<CharType,Traits> internal_stream_type;
+public:
+  typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type
+    internal_buffer_type;
+  typedef std::basic_istream<CharType, Traits> internal_stream_type;
 
 
-    basic_ifstream() : internal_stream_type(new internal_buffer_type())
-    {
-      this->buf_ = static_cast<internal_buffer_type *>(internal_stream_type::rdbuf());
-    }
-    explicit basic_ifstream(char const *file_name,
-                            std::ios_base::openmode mode = std::ios_base::in)
-      : internal_stream_type(new internal_buffer_type())
-    {
-      this->buf_ = static_cast<internal_buffer_type *>(internal_stream_type::rdbuf());
-      open(file_name,mode);
-    }
+  basic_ifstream()
+    : internal_stream_type(new internal_buffer_type())
+  {
+    this->buf_ =
+      static_cast<internal_buffer_type*>(internal_stream_type::rdbuf());
+  }
+  explicit basic_ifstream(char const* file_name,
+                          std::ios_base::openmode mode = std::ios_base::in)
+    : internal_stream_type(new internal_buffer_type())
+  {
+    this->buf_ =
+      static_cast<internal_buffer_type*>(internal_stream_type::rdbuf());
+    open(file_name, mode);
+  }
 
 
-    void open(char const *file_name,std::ios_base::openmode mode = std::ios_base::in)
-    {
-      mode = mode | std::ios_base::in;
-      this->_set_state(this->_open(file_name, mode), this, this);
-    }
+  void open(char const* file_name,
+            std::ios_base::openmode mode = std::ios_base::in)
+  {
+    mode = mode | std::ios_base::in;
+    this->_set_state(this->_open(file_name, mode), this, this);
+  }
 
 
-    void close()
-    {
-      this->_set_state(this->_close(), this, this);
-    }
+  void close() { this->_set_state(this->_close(), this, this); }
 
 
-    internal_buffer_type *rdbuf() const
-    {
-      return this->buf_;
-    }
+  internal_buffer_type* rdbuf() const { return this->buf_; }
 
 
-    ~basic_ifstream() @KWSYS_NAMESPACE@_FStream_NOEXCEPT
-    {
-      close();
-    }
+  ~basic_ifstream() @KWSYS_NAMESPACE@_FStream_NOEXCEPT { close(); }
 };
 };
 
 
-template<typename CharType,typename Traits = std::char_traits<CharType> >
-class basic_ofstream : public std::basic_ostream<CharType,Traits>,
-                       public basic_efilebuf<CharType,Traits>
+template <typename CharType, typename Traits = std::char_traits<CharType> >
+class basic_ofstream : public std::basic_ostream<CharType, Traits>,
+                       public basic_efilebuf<CharType, Traits>
 {
 {
-  using basic_efilebuf<CharType,Traits>::is_open;
+  using basic_efilebuf<CharType, Traits>::is_open;
 
 
-  public:
-  typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type internal_buffer_type;
-  typedef std::basic_ostream<CharType,Traits> internal_stream_type;
+public:
+  typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type
+    internal_buffer_type;
+  typedef std::basic_ostream<CharType, Traits> internal_stream_type;
 
 
-  basic_ofstream() : internal_stream_type(new internal_buffer_type())
+  basic_ofstream()
+    : internal_stream_type(new internal_buffer_type())
   {
   {
-    this->buf_ = static_cast<internal_buffer_type *>(internal_stream_type::rdbuf());
+    this->buf_ =
+      static_cast<internal_buffer_type*>(internal_stream_type::rdbuf());
   }
   }
-  explicit basic_ofstream(char const *file_name,std::ios_base::openmode mode = std::ios_base::out) :
-  internal_stream_type(new internal_buffer_type())
+  explicit basic_ofstream(char const* file_name,
+                          std::ios_base::openmode mode = std::ios_base::out)
+    : internal_stream_type(new internal_buffer_type())
   {
   {
-    this->buf_ = static_cast<internal_buffer_type *>(internal_stream_type::rdbuf());
-    open(file_name,mode);
+    this->buf_ =
+      static_cast<internal_buffer_type*>(internal_stream_type::rdbuf());
+    open(file_name, mode);
   }
   }
-  void open(char const *file_name,std::ios_base::openmode mode = std::ios_base::out)
+  void open(char const* file_name,
+            std::ios_base::openmode mode = std::ios_base::out)
   {
   {
     mode = mode | std::ios_base::out;
     mode = mode | std::ios_base::out;
     this->_set_state(this->_open(file_name, mode), this, this);
     this->_set_state(this->_open(file_name, mode), this, this);
   }
   }
 
 
-  void close()
-  {
-    this->_set_state(this->_close(), this, this);
-  }
+  void close() { this->_set_state(this->_close(), this, this); }
 
 
-  internal_buffer_type *rdbuf() const
-  {
-    return this->buf_;
-  }
+  internal_buffer_type* rdbuf() const { return this->buf_; }
 
 
-  ~basic_ofstream() @KWSYS_NAMESPACE@_FStream_NOEXCEPT
-  {
-    close();
-  }
+  ~basic_ofstream() @KWSYS_NAMESPACE@_FStream_NOEXCEPT { close(); }
 };
 };
 
 
-  typedef basic_ifstream<char> ifstream;
-  typedef basic_ofstream<char> ofstream;
+typedef basic_ifstream<char> ifstream;
+typedef basic_ofstream<char> ofstream;
 
 
-# undef @KWSYS_NAMESPACE@_FStream_NOEXCEPT
+#undef @KWSYS_NAMESPACE@_FStream_NOEXCEPT
 #else
 #else
-  using std::ofstream;
-  using std::ifstream;
+using std::ofstream;
+using std::ifstream;
 #endif
 #endif
 
 
-  namespace FStream
-  {
-    enum BOM
-    {
-      BOM_None,
-      BOM_UTF8,
-      BOM_UTF16BE,
-      BOM_UTF16LE,
-      BOM_UTF32BE,
-      BOM_UTF32LE
-    };
-
-    // Read a BOM, if one exists.
-    // If a BOM exists, the stream is advanced to after the BOM.
-    // This function requires a seekable stream (but not a relative
-    // seekable stream).
-    BOM ReadBOM(std::istream& in);
-  }
+namespace FStream {
+enum BOM
+{
+  BOM_None,
+  BOM_UTF8,
+  BOM_UTF16BE,
+  BOM_UTF16LE,
+  BOM_UTF32BE,
+  BOM_UTF32LE
+};
+
+// Read a BOM, if one exists.
+// If a BOM exists, the stream is advanced to after the BOM.
+// This function requires a seekable stream (but not a relative
+// seekable stream).
+BOM ReadBOM(std::istream& in);
+}
 }
 }
 
 
 #endif
 #endif

+ 158 - 258
Glob.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Glob.hxx)
 #include KWSYS_HEADER(Glob.hxx)
 
 
@@ -21,30 +12,29 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Glob.hxx.in"
-# include "Directory.hxx.in"
-# include "Configure.hxx.in"
-# include "RegularExpression.hxx.in"
-# include "SystemTools.hxx.in"
+#include "Configure.hxx.in"
+#include "Directory.hxx.in"
+#include "Glob.hxx.in"
+#include "RegularExpression.hxx.in"
+#include "SystemTools.hxx.in"
 #endif
 #endif
 
 
+#include <algorithm>
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
-#include <algorithm>
 
 
 #include <ctype.h>
 #include <ctype.h>
 #include <stdio.h>
 #include <stdio.h>
 #include <string.h>
 #include <string.h>
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 #if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
 #if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
 // On Windows and apple, no difference between lower and upper case
 // On Windows and apple, no difference between lower and upper case
-# define KWSYS_GLOB_CASE_INDEPENDENT
+#define KWSYS_GLOB_CASE_INDEPENDENT
 #endif
 #endif
 
 
 #if defined(_WIN32) || defined(__CYGWIN__)
 #if defined(_WIN32) || defined(__CYGWIN__)
 // Handle network paths
 // Handle network paths
-# define KWSYS_GLOB_SUPPORT_NETWORK_PATHS
+#define KWSYS_GLOB_SUPPORT_NETWORK_PATHS
 #endif
 #endif
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -63,8 +53,8 @@ Glob::Glob()
   this->Relative = "";
   this->Relative = "";
 
 
   this->RecurseThroughSymlinks = true;
   this->RecurseThroughSymlinks = true;
-    // RecurseThroughSymlinks is true by default for backwards compatibility,
-    // not because it's a good idea...
+  // RecurseThroughSymlinks is true by default for backwards compatibility,
+  // not because it's a good idea...
   this->FollowedSymlinkCount = 0;
   this->FollowedSymlinkCount = 0;
 
 
   // Keep separate variables for directory listing for back compatibility
   // Keep separate variables for directory listing for back compatibility
@@ -86,69 +76,55 @@ std::vector<std::string>& Glob::GetFiles()
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 std::string Glob::PatternToRegex(const std::string& pattern,
 std::string Glob::PatternToRegex(const std::string& pattern,
-                                       bool require_whole_string,
-                                       bool preserve_case)
+                                 bool require_whole_string, bool preserve_case)
 {
 {
   // Incrementally build the regular expression from the pattern.
   // Incrementally build the regular expression from the pattern.
-  std::string regex = require_whole_string? "^" : "";
+  std::string regex = require_whole_string ? "^" : "";
   std::string::const_iterator pattern_first = pattern.begin();
   std::string::const_iterator pattern_first = pattern.begin();
   std::string::const_iterator pattern_last = pattern.end();
   std::string::const_iterator pattern_last = pattern.end();
-  for(std::string::const_iterator i = pattern_first;
-      i != pattern_last; ++i)
-    {
+  for (std::string::const_iterator i = pattern_first; i != pattern_last; ++i) {
     int c = *i;
     int c = *i;
-    if(c == '*')
-      {
+    if (c == '*') {
       // A '*' (not between brackets) matches any string.
       // A '*' (not between brackets) matches any string.
       // We modify this to not match slashes since the orignal glob
       // We modify this to not match slashes since the orignal glob
       // pattern documentation was meant for matching file name
       // pattern documentation was meant for matching file name
       // components separated by slashes.
       // components separated by slashes.
       regex += "[^/]*";
       regex += "[^/]*";
-      }
-    else if(c == '?')
-      {
+    } else if (c == '?') {
       // A '?' (not between brackets) matches any single character.
       // A '?' (not between brackets) matches any single character.
       // We modify this to not match slashes since the orignal glob
       // We modify this to not match slashes since the orignal glob
       // pattern documentation was meant for matching file name
       // pattern documentation was meant for matching file name
       // components separated by slashes.
       // components separated by slashes.
       regex += "[^/]";
       regex += "[^/]";
-      }
-    else if(c == '[')
-      {
+    } else if (c == '[') {
       // Parse out the bracket expression.  It begins just after the
       // Parse out the bracket expression.  It begins just after the
       // opening character.
       // opening character.
-      std::string::const_iterator bracket_first = i+1;
+      std::string::const_iterator bracket_first = i + 1;
       std::string::const_iterator bracket_last = bracket_first;
       std::string::const_iterator bracket_last = bracket_first;
 
 
       // The first character may be complementation '!' or '^'.
       // The first character may be complementation '!' or '^'.
-      if(bracket_last != pattern_last &&
-         (*bracket_last == '!' || *bracket_last == '^'))
-        {
+      if (bracket_last != pattern_last &&
+          (*bracket_last == '!' || *bracket_last == '^')) {
         ++bracket_last;
         ++bracket_last;
-        }
+      }
 
 
       // If the next character is a ']' it is included in the brackets
       // If the next character is a ']' it is included in the brackets
       // because the bracket string may not be empty.
       // because the bracket string may not be empty.
-      if(bracket_last != pattern_last && *bracket_last == ']')
-        {
+      if (bracket_last != pattern_last && *bracket_last == ']') {
         ++bracket_last;
         ++bracket_last;
-        }
+      }
 
 
       // Search for the closing ']'.
       // Search for the closing ']'.
-      while(bracket_last != pattern_last && *bracket_last != ']')
-        {
+      while (bracket_last != pattern_last && *bracket_last != ']') {
         ++bracket_last;
         ++bracket_last;
-        }
+      }
 
 
       // Check whether we have a complete bracket string.
       // Check whether we have a complete bracket string.
-      if(bracket_last == pattern_last)
-        {
+      if (bracket_last == pattern_last) {
         // The bracket string did not end, so it was opened simply by
         // The bracket string did not end, so it was opened simply by
         // a '[' that is supposed to be matched literally.
         // a '[' that is supposed to be matched literally.
         regex += "\\[";
         regex += "\\[";
-        }
-      else
-        {
+      } else {
         // Convert the bracket string to its regex equivalent.
         // Convert the bracket string to its regex equivalent.
         std::string::const_iterator k = bracket_first;
         std::string::const_iterator k = bracket_first;
 
 
@@ -156,97 +132,81 @@ std::string Glob::PatternToRegex(const std::string& pattern,
         regex += "[";
         regex += "[";
 
 
         // A regex range complement uses '^' instead of '!'.
         // A regex range complement uses '^' instead of '!'.
-        if(k != bracket_last && *k == '!')
-          {
+        if (k != bracket_last && *k == '!') {
           regex += "^";
           regex += "^";
           ++k;
           ++k;
-          }
+        }
 
 
         // Convert the remaining characters.
         // Convert the remaining characters.
-        for(; k != bracket_last; ++k)
-          {
+        for (; k != bracket_last; ++k) {
           // Backslashes must be escaped.
           // Backslashes must be escaped.
-          if(*k == '\\')
-            {
+          if (*k == '\\') {
             regex += "\\";
             regex += "\\";
-            }
+          }
 
 
           // Store this character.
           // Store this character.
           regex += *k;
           regex += *k;
-          }
+        }
 
 
         // Close the regex block.
         // Close the regex block.
         regex += "]";
         regex += "]";
 
 
         // Jump to the end of the bracket string.
         // Jump to the end of the bracket string.
         i = bracket_last;
         i = bracket_last;
-        }
       }
       }
-    else
-      {
+    } else {
       // A single character matches itself.
       // A single character matches itself.
       int ch = c;
       int ch = c;
-      if(!(('a' <= ch && ch <= 'z') ||
-           ('A' <= ch && ch <= 'Z') ||
-           ('0' <= ch && ch <= '9')))
-        {
+      if (!(('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
+            ('0' <= ch && ch <= '9'))) {
         // Escape the non-alphanumeric character.
         // Escape the non-alphanumeric character.
         regex += "\\";
         regex += "\\";
-        }
+      }
 #if defined(KWSYS_GLOB_CASE_INDEPENDENT)
 #if defined(KWSYS_GLOB_CASE_INDEPENDENT)
-      else
-        {
+      else {
         // On case-insensitive systems file names are converted to lower
         // On case-insensitive systems file names are converted to lower
         // case before matching.
         // case before matching.
-        if(!preserve_case)
-          {
+        if (!preserve_case) {
           ch = tolower(ch);
           ch = tolower(ch);
-          }
         }
         }
+      }
 #endif
 #endif
       (void)preserve_case;
       (void)preserve_case;
       // Store the character.
       // Store the character.
       regex.append(1, static_cast<char>(ch));
       regex.append(1, static_cast<char>(ch));
-      }
     }
     }
+  }
 
 
-  if(require_whole_string)
-    {
+  if (require_whole_string) {
     regex += "$";
     regex += "$";
-    }
+  }
   return regex;
   return regex;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 bool Glob::RecurseDirectory(std::string::size_type start,
 bool Glob::RecurseDirectory(std::string::size_type start,
-  const std::string& dir, GlobMessages* messages)
+                            const std::string& dir, GlobMessages* messages)
 {
 {
   kwsys::Directory d;
   kwsys::Directory d;
-  if ( !d.Load(dir) )
-    {
+  if (!d.Load(dir)) {
     return true;
     return true;
-    }
+  }
   unsigned long cc;
   unsigned long cc;
   std::string realname;
   std::string realname;
   std::string fname;
   std::string fname;
-  for ( cc = 0; cc < d.GetNumberOfFiles(); cc ++ )
-    {
+  for (cc = 0; cc < d.GetNumberOfFiles(); cc++) {
     fname = d.GetFile(cc);
     fname = d.GetFile(cc);
-    if ( fname == "." || fname == ".." )
-      {
+    if (fname == "." || fname == "..") {
       continue;
       continue;
-      }
+    }
 
 
-    if ( start == 0 )
-      {
+    if (start == 0) {
       realname = dir + fname;
       realname = dir + fname;
-      }
-    else
-      {
+    } else {
       realname = dir + "/" + fname;
       realname = dir + "/" + fname;
-      }
+    }
 
 
-#if defined( KWSYS_GLOB_CASE_INDEPENDENT )
+#if defined(KWSYS_GLOB_CASE_INDEPENDENT)
     // On Windows and apple, no difference between lower and upper case
     // On Windows and apple, no difference between lower and upper case
     fname = kwsys::SystemTools::LowerCase(fname);
     fname = kwsys::SystemTools::LowerCase(fname);
 #endif
 #endif
@@ -254,157 +214,127 @@ bool Glob::RecurseDirectory(std::string::size_type start,
     bool isDir = kwsys::SystemTools::FileIsDirectory(realname);
     bool isDir = kwsys::SystemTools::FileIsDirectory(realname);
     bool isSymLink = kwsys::SystemTools::FileIsSymlink(realname);
     bool isSymLink = kwsys::SystemTools::FileIsSymlink(realname);
 
 
-    if ( isDir && (!isSymLink || this->RecurseThroughSymlinks) )
-      {
-      if (isSymLink)
-        {
+    if (isDir && (!isSymLink || this->RecurseThroughSymlinks)) {
+      if (isSymLink) {
         ++this->FollowedSymlinkCount;
         ++this->FollowedSymlinkCount;
         std::string realPathErrorMessage;
         std::string realPathErrorMessage;
-        std::string canonicalPath(SystemTools::GetRealPath(dir,
-            &realPathErrorMessage));
+        std::string canonicalPath(
+          SystemTools::GetRealPath(dir, &realPathErrorMessage));
 
 
-        if(!realPathErrorMessage.empty())
-          {
-          if(messages)
-            {
+        if (!realPathErrorMessage.empty()) {
+          if (messages) {
             messages->push_back(Message(
             messages->push_back(Message(
-                Glob::error, "Canonical path generation from path '"
-                + dir + "' failed! Reason: '" + realPathErrorMessage + "'"));
-            }
-          return false;
+              Glob::error, "Canonical path generation from path '" + dir +
+                "' failed! Reason: '" + realPathErrorMessage + "'"));
           }
           }
+          return false;
+        }
 
 
-        if(std::find(this->VisitedSymlinks.begin(),
-            this->VisitedSymlinks.end(),
-            canonicalPath) == this->VisitedSymlinks.end())
-          {
-          if(this->RecurseListDirs)
-            {
+        if (std::find(this->VisitedSymlinks.begin(),
+                      this->VisitedSymlinks.end(),
+                      canonicalPath) == this->VisitedSymlinks.end()) {
+          if (this->RecurseListDirs) {
             // symlinks are treated as directories
             // symlinks are treated as directories
             this->AddFile(this->Internals->Files, realname);
             this->AddFile(this->Internals->Files, realname);
-            }
+          }
 
 
           this->VisitedSymlinks.push_back(canonicalPath);
           this->VisitedSymlinks.push_back(canonicalPath);
-          if(!this->RecurseDirectory(start+1, realname, messages))
-            {
+          if (!this->RecurseDirectory(start + 1, realname, messages)) {
             this->VisitedSymlinks.pop_back();
             this->VisitedSymlinks.pop_back();
 
 
             return false;
             return false;
-            }
-          this->VisitedSymlinks.pop_back();
           }
           }
+          this->VisitedSymlinks.pop_back();
+        }
         // else we have already visited this symlink - prevent cyclic recursion
         // else we have already visited this symlink - prevent cyclic recursion
-        else if(messages)
-          {
+        else if (messages) {
           std::string message;
           std::string message;
-          for(std::vector<std::string>::const_iterator
-                pathIt = std::find(this->VisitedSymlinks.begin(),
-                                         this->VisitedSymlinks.end(),
-                                         canonicalPath);
-              pathIt != this->VisitedSymlinks.end(); ++pathIt)
-            {
+          for (std::vector<std::string>::const_iterator pathIt =
+                 std::find(this->VisitedSymlinks.begin(),
+                           this->VisitedSymlinks.end(), canonicalPath);
+               pathIt != this->VisitedSymlinks.end(); ++pathIt) {
             message += *pathIt + "\n";
             message += *pathIt + "\n";
-            }
+          }
           message += canonicalPath + "/" + fname;
           message += canonicalPath + "/" + fname;
           messages->push_back(Message(Glob::cyclicRecursion, message));
           messages->push_back(Message(Glob::cyclicRecursion, message));
-          }
         }
         }
-      else
-        {
-        if(this->RecurseListDirs)
-          {
+      } else {
+        if (this->RecurseListDirs) {
           this->AddFile(this->Internals->Files, realname);
           this->AddFile(this->Internals->Files, realname);
-          }
-        if(!this->RecurseDirectory(start+1, realname, messages))
-          {
+        }
+        if (!this->RecurseDirectory(start + 1, realname, messages)) {
           return false;
           return false;
-          }
         }
         }
       }
       }
-    else
-      {
-      if ( !this->Internals->Expressions.empty() &&
-           this->Internals->Expressions.rbegin()->find(fname) )
-        {
+    } else {
+      if (!this->Internals->Expressions.empty() &&
+          this->Internals->Expressions.rbegin()->find(fname)) {
         this->AddFile(this->Internals->Files, realname);
         this->AddFile(this->Internals->Files, realname);
-        }
       }
       }
     }
     }
+  }
 
 
   return true;
   return true;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void Glob::ProcessDirectory(std::string::size_type start,
 void Glob::ProcessDirectory(std::string::size_type start,
-  const std::string& dir, GlobMessages* messages)
+                            const std::string& dir, GlobMessages* messages)
 {
 {
-  //std::cout << "ProcessDirectory: " << dir << std::endl;
-  bool last = ( start == this->Internals->Expressions.size()-1 );
-  if ( last && this->Recurse )
-    {
+  // std::cout << "ProcessDirectory: " << dir << std::endl;
+  bool last = (start == this->Internals->Expressions.size() - 1);
+  if (last && this->Recurse) {
     this->RecurseDirectory(start, dir, messages);
     this->RecurseDirectory(start, dir, messages);
     return;
     return;
-    }
+  }
 
 
-  if ( start >= this->Internals->Expressions.size() )
-    {
+  if (start >= this->Internals->Expressions.size()) {
     return;
     return;
-    }
+  }
 
 
   kwsys::Directory d;
   kwsys::Directory d;
-  if ( !d.Load(dir) )
-    {
+  if (!d.Load(dir)) {
     return;
     return;
-    }
+  }
   unsigned long cc;
   unsigned long cc;
   std::string realname;
   std::string realname;
   std::string fname;
   std::string fname;
-  for ( cc = 0; cc < d.GetNumberOfFiles(); cc ++ )
-    {
+  for (cc = 0; cc < d.GetNumberOfFiles(); cc++) {
     fname = d.GetFile(cc);
     fname = d.GetFile(cc);
-    if ( fname == "." || fname == ".." )
-      {
+    if (fname == "." || fname == "..") {
       continue;
       continue;
-      }
+    }
 
 
-    if ( start == 0 )
-      {
+    if (start == 0) {
       realname = dir + fname;
       realname = dir + fname;
-      }
-    else
-      {
+    } else {
       realname = dir + "/" + fname;
       realname = dir + "/" + fname;
-      }
+    }
 
 
 #if defined(KWSYS_GLOB_CASE_INDEPENDENT)
 #if defined(KWSYS_GLOB_CASE_INDEPENDENT)
     // On case-insensitive file systems convert to lower case for matching.
     // On case-insensitive file systems convert to lower case for matching.
     fname = kwsys::SystemTools::LowerCase(fname);
     fname = kwsys::SystemTools::LowerCase(fname);
 #endif
 #endif
 
 
-    //std::cout << "Look at file: " << fname << std::endl;
-    //std::cout << "Match: "
+    // std::cout << "Look at file: " << fname << std::endl;
+    // std::cout << "Match: "
     // << this->Internals->TextExpressions[start].c_str() << std::endl;
     // << this->Internals->TextExpressions[start].c_str() << std::endl;
-    //std::cout << "Real name: " << realname << std::endl;
+    // std::cout << "Real name: " << realname << std::endl;
 
 
-    if( (!last && !kwsys::SystemTools::FileIsDirectory(realname))
-      || (!this->ListDirs && last &&
-          kwsys::SystemTools::FileIsDirectory(realname)) )
-      {
+    if ((!last && !kwsys::SystemTools::FileIsDirectory(realname)) ||
+        (!this->ListDirs && last &&
+         kwsys::SystemTools::FileIsDirectory(realname))) {
       continue;
       continue;
-      }
+    }
 
 
-    if ( this->Internals->Expressions[start].find(fname) )
-      {
-      if ( last )
-        {
+    if (this->Internals->Expressions[start].find(fname)) {
+      if (last) {
         this->AddFile(this->Internals->Files, realname);
         this->AddFile(this->Internals->Files, realname);
-        }
-      else
-        {
-        this->ProcessDirectory(start+1, realname, messages);
-        }
+      } else {
+        this->ProcessDirectory(start + 1, realname, messages);
       }
       }
     }
     }
+  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -417,99 +347,76 @@ bool Glob::FindFiles(const std::string& inexpr, GlobMessages* messages)
   this->Internals->Expressions.clear();
   this->Internals->Expressions.clear();
   this->Internals->Files.clear();
   this->Internals->Files.clear();
 
 
-  if ( !kwsys::SystemTools::FileIsFullPath(expr) )
-    {
+  if (!kwsys::SystemTools::FileIsFullPath(expr)) {
     expr = kwsys::SystemTools::GetCurrentWorkingDirectory();
     expr = kwsys::SystemTools::GetCurrentWorkingDirectory();
     expr += "/" + inexpr;
     expr += "/" + inexpr;
-    }
+  }
   std::string fexpr = expr;
   std::string fexpr = expr;
 
 
   std::string::size_type skip = 0;
   std::string::size_type skip = 0;
   std::string::size_type last_slash = 0;
   std::string::size_type last_slash = 0;
-  for ( cc = 0; cc < expr.size(); cc ++ )
-    {
-    if ( cc > 0 && expr[cc] == '/' && expr[cc-1] != '\\' )
-      {
+  for (cc = 0; cc < expr.size(); cc++) {
+    if (cc > 0 && expr[cc] == '/' && expr[cc - 1] != '\\') {
       last_slash = cc;
       last_slash = cc;
-      }
-    if ( cc > 0 &&
-      (expr[cc] == '[' || expr[cc] == '?' || expr[cc] == '*') &&
-      expr[cc-1] != '\\' )
-      {
+    }
+    if (cc > 0 && (expr[cc] == '[' || expr[cc] == '?' || expr[cc] == '*') &&
+        expr[cc - 1] != '\\') {
       break;
       break;
-      }
     }
     }
-  if ( last_slash > 0 )
-    {
-    //std::cout << "I can skip: " << fexpr.substr(0, last_slash)
+  }
+  if (last_slash > 0) {
+    // std::cout << "I can skip: " << fexpr.substr(0, last_slash)
     // << std::endl;
     // << std::endl;
     skip = last_slash;
     skip = last_slash;
-    }
-  if ( skip == 0 )
-    {
-#if defined( KWSYS_GLOB_SUPPORT_NETWORK_PATHS )
+  }
+  if (skip == 0) {
+#if defined(KWSYS_GLOB_SUPPORT_NETWORK_PATHS)
     // Handle network paths
     // Handle network paths
-    if ( expr[0] == '/' && expr[1] == '/' )
-      {
+    if (expr[0] == '/' && expr[1] == '/') {
       int cnt = 0;
       int cnt = 0;
-      for ( cc = 2; cc < expr.size(); cc ++ )
-        {
-        if ( expr[cc] == '/' )
-          {
-          cnt ++;
-          if ( cnt == 2 )
-            {
+      for (cc = 2; cc < expr.size(); cc++) {
+        if (expr[cc] == '/') {
+          cnt++;
+          if (cnt == 2) {
             break;
             break;
-            }
           }
           }
         }
         }
-      skip = int(cc + 1);
       }
       }
-    else
+      skip = int(cc + 1);
+    } else
 #endif
 #endif
       // Handle drive letters on Windows
       // Handle drive letters on Windows
-      if ( expr[1] == ':' && expr[0] != '/' )
-        {
-        skip = 2;
-        }
+      if (expr[1] == ':' && expr[0] != '/') {
+      skip = 2;
     }
     }
+  }
 
 
-  if ( skip > 0 )
-    {
+  if (skip > 0) {
     expr = expr.substr(skip);
     expr = expr.substr(skip);
-    }
+  }
 
 
   cexpr = "";
   cexpr = "";
-  for ( cc = 0; cc < expr.size(); cc ++ )
-    {
+  for (cc = 0; cc < expr.size(); cc++) {
     int ch = expr[cc];
     int ch = expr[cc];
-    if ( ch == '/' )
-      {
-      if ( !cexpr.empty() )
-        {
+    if (ch == '/') {
+      if (!cexpr.empty()) {
         this->AddExpression(cexpr);
         this->AddExpression(cexpr);
-        }
-      cexpr = "";
       }
       }
-    else
-      {
+      cexpr = "";
+    } else {
       cexpr.append(1, static_cast<char>(ch));
       cexpr.append(1, static_cast<char>(ch));
-      }
     }
     }
-  if ( !cexpr.empty() )
-    {
+  }
+  if (!cexpr.empty()) {
     this->AddExpression(cexpr);
     this->AddExpression(cexpr);
-    }
+  }
 
 
   // Handle network paths
   // Handle network paths
-  if ( skip > 0 )
-    {
+  if (skip > 0) {
     this->ProcessDirectory(0, fexpr.substr(0, skip) + "/", messages);
     this->ProcessDirectory(0, fexpr.substr(0, skip) + "/", messages);
-    }
-  else
-    {
+  } else {
     this->ProcessDirectory(0, "/", messages);
     this->ProcessDirectory(0, "/", messages);
-    }
+  }
   return true;
   return true;
 }
 }
 
 
@@ -517,43 +424,36 @@ bool Glob::FindFiles(const std::string& inexpr, GlobMessages* messages)
 void Glob::AddExpression(const std::string& expr)
 void Glob::AddExpression(const std::string& expr)
 {
 {
   this->Internals->Expressions.push_back(
   this->Internals->Expressions.push_back(
-    kwsys::RegularExpression(
-      this->PatternToRegex(expr)));
+    kwsys::RegularExpression(this->PatternToRegex(expr)));
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void Glob::SetRelative(const char* dir)
 void Glob::SetRelative(const char* dir)
 {
 {
-  if ( !dir )
-    {
+  if (!dir) {
     this->Relative = "";
     this->Relative = "";
     return;
     return;
-    }
+  }
   this->Relative = dir;
   this->Relative = dir;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 const char* Glob::GetRelative()
 const char* Glob::GetRelative()
 {
 {
-  if ( this->Relative.empty() )
-    {
+  if (this->Relative.empty()) {
     return 0;
     return 0;
-    }
+  }
   return this->Relative.c_str();
   return this->Relative.c_str();
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void Glob::AddFile(std::vector<std::string>& files, const std::string& file)
 void Glob::AddFile(std::vector<std::string>& files, const std::string& file)
 {
 {
-  if ( !this->Relative.empty() )
-    {
+  if (!this->Relative.empty()) {
     files.push_back(kwsys::SystemTools::RelativePath(this->Relative, file));
     files.push_back(kwsys::SystemTools::RelativePath(this->Relative, file));
-    }
-  else
-    {
+  } else {
     files.push_back(file);
     files.push_back(file);
-    }
+  }
 }
 }
 
 
 } // namespace KWSYS_NAMESPACE
 } // namespace KWSYS_NAMESPACE
-

+ 27 - 37
Glob.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Glob_hxx
 #ifndef @KWSYS_NAMESPACE@_Glob_hxx
 #define @KWSYS_NAMESPACE@_Glob_hxx
 #define @KWSYS_NAMESPACE@_Glob_hxx
 
 
@@ -18,8 +9,7 @@
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 class GlobInternals;
 class GlobInternals;
 
 
@@ -46,31 +36,33 @@ public:
     MessageType type;
     MessageType type;
     std::string content;
     std::string content;
 
 
-    Message(MessageType t, const std::string& c) :
-      type(t),
-      content(c)
-    {}
-    Message(const Message& msg) :
-      type(msg.type),
-      content(msg.content)
-    {}
+    Message(MessageType t, const std::string& c)
+      : type(t)
+      , content(c)
+    {
+    }
+    Message(const Message& msg)
+      : type(msg.type)
+      , content(msg.content)
+    {
+    }
     Message& operator=(Message const& msg)
     Message& operator=(Message const& msg)
-      {
+    {
       this->type = msg.type;
       this->type = msg.type;
       this->content = msg.content;
       this->content = msg.content;
       return *this;
       return *this;
-      }
+    }
   };
   };
 
 
   typedef std::vector<Message> GlobMessages;
   typedef std::vector<Message> GlobMessages;
   typedef std::vector<Message>::iterator GlobMessagesIterator;
   typedef std::vector<Message>::iterator GlobMessagesIterator;
+
 public:
 public:
   Glob();
   Glob();
   ~Glob();
   ~Glob();
 
 
   //! Find all files that match the pattern.
   //! Find all files that match the pattern.
-  bool FindFiles(const std::string& inexpr,
-    GlobMessages* messages = 0);
+  bool FindFiles(const std::string& inexpr, GlobMessages* messages = 0);
 
 
   //! Return the list of files that matched.
   //! Return the list of files that matched.
   std::vector<std::string>& GetFiles();
   std::vector<std::string>& GetFiles();
@@ -103,29 +95,27 @@ public:
       whole strings, but may be disabled to support concatenating
       whole strings, but may be disabled to support concatenating
       expressions more easily (regex1|regex2|etc).  */
       expressions more easily (regex1|regex2|etc).  */
   static std::string PatternToRegex(const std::string& pattern,
   static std::string PatternToRegex(const std::string& pattern,
-                                          bool require_whole_string = true,
-                                          bool preserve_case = false);
+                                    bool require_whole_string = true,
+                                    bool preserve_case = false);
 
 
   /** Getters and setters for enabling and disabling directory
   /** Getters and setters for enabling and disabling directory
       listing in recursive and non recursive globbing mode.
       listing in recursive and non recursive globbing mode.
       If listing is enabled in recursive mode it also lists
       If listing is enabled in recursive mode it also lists
       directory symbolic links even if follow symlinks is enabled. */
       directory symbolic links even if follow symlinks is enabled. */
-  void SetListDirs(bool list) { this->ListDirs=list; }
+  void SetListDirs(bool list) { this->ListDirs = list; }
   bool GetListDirs() const { return this->ListDirs; }
   bool GetListDirs() const { return this->ListDirs; }
-  void SetRecurseListDirs(bool list) { this->RecurseListDirs=list; }
+  void SetRecurseListDirs(bool list) { this->RecurseListDirs = list; }
   bool GetRecurseListDirs() const { return this->RecurseListDirs; }
   bool GetRecurseListDirs() const { return this->RecurseListDirs; }
 
 
 protected:
 protected:
   //! Process directory
   //! Process directory
-  void ProcessDirectory(std::string::size_type start,
-    const std::string& dir,
-    GlobMessages* messages);
+  void ProcessDirectory(std::string::size_type start, const std::string& dir,
+                        GlobMessages* messages);
 
 
   //! Process last directory, but only when recurse flags is on. That is
   //! Process last directory, but only when recurse flags is on. That is
   // effectively like saying: /path/to/file/**/file
   // effectively like saying: /path/to/file/**/file
-  bool RecurseDirectory(std::string::size_type start,
-    const std::string& dir,
-    GlobMessages* messages);
+  bool RecurseDirectory(std::string::size_type start, const std::string& dir,
+                        GlobMessages* messages);
 
 
   //! Add regular expression
   //! Add regular expression
   void AddExpression(const std::string& expr);
   void AddExpression(const std::string& expr);
@@ -143,8 +133,8 @@ protected:
   bool RecurseListDirs;
   bool RecurseListDirs;
 
 
 private:
 private:
-  Glob(const Glob&);  // Not implemented.
-  void operator=(const Glob&);  // Not implemented.
+  Glob(const Glob&);           // Not implemented.
+  void operator=(const Glob&); // Not implemented.
 };
 };
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@

+ 125 - 120
IOStream.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Configure.hxx)
 #include KWSYS_HEADER(Configure.hxx)
 
 
@@ -19,24 +10,23 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Configure.hxx.in"
-# include "IOStream.hxx.in"
+#include "Configure.hxx.in"
+#include "IOStream.hxx.in"
 #endif
 #endif
 
 
 // Implement the rest of this file only if it is needed.
 // Implement the rest of this file only if it is needed.
 #if KWSYS_IOS_NEED_OPERATORS_LL
 #if KWSYS_IOS_NEED_OPERATORS_LL
 
 
-# include <stdio.h>  // sscanf, sprintf
-# include <string.h> // memchr
+#include <stdio.h>  // sscanf, sprintf
+#include <string.h> // memchr
 
 
-# if defined(_MAX_INT_DIG)
-#  define KWSYS_IOS_INT64_MAX_DIG _MAX_INT_DIG
-# else
-#  define KWSYS_IOS_INT64_MAX_DIG 32
-# endif
+#if defined(_MAX_INT_DIG)
+#define KWSYS_IOS_INT64_MAX_DIG _MAX_INT_DIG
+#else
+#define KWSYS_IOS_INT64_MAX_DIG 32
+#endif
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 // Scan an input stream for an integer value.
 // Scan an input stream for an integer value.
 static int IOStreamScanStream(std::istream& is, char* buffer)
 static int IOStreamScanStream(std::istream& is, char* buffer)
@@ -46,74 +36,68 @@ static int IOStreamScanStream(std::istream& is, char* buffer)
   char* end = buffer + KWSYS_IOS_INT64_MAX_DIG - 1;
   char* end = buffer + KWSYS_IOS_INT64_MAX_DIG - 1;
 
 
   // Look for leading sign.
   // Look for leading sign.
-  if(is.peek() == '+') { *out++ = '+'; is.ignore(); }
-  else if(is.peek() == '-') { *out++ = '-'; is.ignore(); }
+  if (is.peek() == '+') {
+    *out++ = '+';
+    is.ignore();
+  } else if (is.peek() == '-') {
+    *out++ = '-';
+    is.ignore();
+  }
 
 
   // Determine the base.  If not specified in the stream, try to
   // Determine the base.  If not specified in the stream, try to
   // detect it from the input.  A leading 0x means hex, and a leading
   // detect it from the input.  A leading 0x means hex, and a leading
   // 0 alone means octal.
   // 0 alone means octal.
   int base = 0;
   int base = 0;
   int flags = is.flags() & std::ios_base::basefield;
   int flags = is.flags() & std::ios_base::basefield;
-  if(flags == std::ios_base::oct) { base = 8; }
-  else if(flags == std::ios_base::dec) { base = 10; }
-  else if(flags == std::ios_base::hex) { base = 16; }
+  if (flags == std::ios_base::oct) {
+    base = 8;
+  } else if (flags == std::ios_base::dec) {
+    base = 10;
+  } else if (flags == std::ios_base::hex) {
+    base = 16;
+  }
   bool foundDigit = false;
   bool foundDigit = false;
   bool foundNonZero = false;
   bool foundNonZero = false;
-  if(is.peek() == '0')
-    {
+  if (is.peek() == '0') {
     foundDigit = true;
     foundDigit = true;
     is.ignore();
     is.ignore();
-    if((is.peek() == 'x' || is.peek() == 'X') && (base == 0 || base == 16))
-      {
+    if ((is.peek() == 'x' || is.peek() == 'X') && (base == 0 || base == 16)) {
       base = 16;
       base = 16;
       foundDigit = false;
       foundDigit = false;
       is.ignore();
       is.ignore();
-      }
-    else if (base == 0)
-      {
+    } else if (base == 0) {
       base = 8;
       base = 8;
-      }
     }
     }
+  }
 
 
   // Determine the range of digits allowed for this number.
   // Determine the range of digits allowed for this number.
   const char* digits = "0123456789abcdefABCDEF";
   const char* digits = "0123456789abcdefABCDEF";
   int maxDigitIndex = 10;
   int maxDigitIndex = 10;
-  if(base == 8)
-    {
+  if (base == 8) {
     maxDigitIndex = 8;
     maxDigitIndex = 8;
-    }
-  else if(base == 16)
-    {
-    maxDigitIndex = 10+6+6;
-    }
+  } else if (base == 16) {
+    maxDigitIndex = 10 + 6 + 6;
+  }
 
 
   // Scan until an invalid digit is found.
   // Scan until an invalid digit is found.
-  for(;is.peek() != EOF; is.ignore())
-    {
-    if(memchr(digits, *out = (char)is.peek(), maxDigitIndex) != 0)
-      {
-      if((foundNonZero || *out != '0') && out < end)
-        {
+  for (; is.peek() != EOF; is.ignore()) {
+    if (memchr(digits, *out = (char)is.peek(), maxDigitIndex) != 0) {
+      if ((foundNonZero || *out != '0') && out < end) {
         ++out;
         ++out;
         foundNonZero = true;
         foundNonZero = true;
-        }
-      foundDigit = true;
       }
       }
-    else
-      {
+      foundDigit = true;
+    } else {
       break;
       break;
-      }
     }
     }
+  }
 
 
   // Correct the buffer contents for degenerate cases.
   // Correct the buffer contents for degenerate cases.
-  if(foundDigit && !foundNonZero)
-    {
+  if (foundDigit && !foundNonZero) {
     *out++ = '0';
     *out++ = '0';
-    }
-  else if (!foundDigit)
-    {
+  } else if (!foundDigit) {
     out = buffer;
     out = buffer;
-    }
+  }
 
 
   // Terminate the string in the buffer.
   // Terminate the string in the buffer.
   *out = '\0';
   *out = '\0';
@@ -123,44 +107,54 @@ static int IOStreamScanStream(std::istream& is, char* buffer)
 
 
 // Read an integer value from an input stream.
 // Read an integer value from an input stream.
 template <class T>
 template <class T>
-std::istream&
-IOStreamScanTemplate(std::istream& is, T& value, char type)
+std::istream& IOStreamScanTemplate(std::istream& is, T& value, char type)
 {
 {
   int state = std::ios_base::goodbit;
   int state = std::ios_base::goodbit;
 
 
   // Skip leading whitespace.
   // Skip leading whitespace.
   std::istream::sentry okay(is);
   std::istream::sentry okay(is);
 
 
-  if(okay)
-    {
+  if (okay) {
     try {
     try {
-    // Copy the string to a buffer and construct the format string.
-    char buffer[KWSYS_IOS_INT64_MAX_DIG];
-#   if defined(_MSC_VER)
-    char format[] = "%I64_";
-    const int typeIndex = 4;
-#   else
-    char format[] = "%ll_";
-    const int typeIndex = 3;
-#   endif
-    switch(IOStreamScanStream(is, buffer))
-      {
-      case 8: format[typeIndex] = 'o'; break;
-      case 0: // Default to decimal if not told otherwise.
-      case 10: format[typeIndex] = type; break;
-      case 16: format[typeIndex] = 'x'; break;
+      // Copy the string to a buffer and construct the format string.
+      char buffer[KWSYS_IOS_INT64_MAX_DIG];
+#if defined(_MSC_VER)
+      char format[] = "%I64_";
+      const int typeIndex = 4;
+#else
+      char format[] = "%ll_";
+      const int typeIndex = 3;
+#endif
+      switch (IOStreamScanStream(is, buffer)) {
+        case 8:
+          format[typeIndex] = 'o';
+          break;
+        case 0: // Default to decimal if not told otherwise.
+        case 10:
+          format[typeIndex] = type;
+          break;
+        case 16:
+          format[typeIndex] = 'x';
+          break;
       };
       };
 
 
-    // Use sscanf to parse the number from the buffer.
-    T result;
-    int success = (sscanf(buffer, format, &result) == 1)?1:0;
+      // Use sscanf to parse the number from the buffer.
+      T result;
+      int success = (sscanf(buffer, format, &result) == 1) ? 1 : 0;
 
 
-    // Set flags for resulting state.
-    if(is.peek() == EOF) { state |= std::ios_base::eofbit; }
-    if(!success) { state |= std::ios_base::failbit; }
-    else { value = result; }
-    } catch(...) { state |= std::ios_base::badbit; }
+      // Set flags for resulting state.
+      if (is.peek() == EOF) {
+        state |= std::ios_base::eofbit;
+      }
+      if (!success) {
+        state |= std::ios_base::failbit;
+      } else {
+        value = result;
+      }
+    } catch (...) {
+      state |= std::ios_base::badbit;
     }
     }
+  }
 
 
   is.setstate(std::ios_base::iostate(state));
   is.setstate(std::ios_base::iostate(state));
   return is;
   return is;
@@ -168,42 +162,54 @@ IOStreamScanTemplate(std::istream& is, T& value, char type)
 
 
 // Print an integer value to an output stream.
 // Print an integer value to an output stream.
 template <class T>
 template <class T>
-std::ostream&
-IOStreamPrintTemplate(std::ostream& os, T value, char type)
+std::ostream& IOStreamPrintTemplate(std::ostream& os, T value, char type)
 {
 {
   std::ostream::sentry okay(os);
   std::ostream::sentry okay(os);
-  if(okay)
-    {
+  if (okay) {
     try {
     try {
-    // Construct the format string.
-    char format[8];
-    char* f = format;
-    *f++ = '%';
-    if(os.flags() & std::ios_base::showpos) { *f++ = '+'; }
-    if(os.flags() & std::ios_base::showbase) { *f++ = '#'; }
-#   if defined(_MSC_VER)
-    *f++ = 'I'; *f++ = '6'; *f++ = '4';
-#   else
-    *f++ = 'l'; *f++ = 'l';
-#   endif
-    long bflags = os.flags() & std::ios_base::basefield;
-    if(bflags == std::ios_base::oct) { *f++ = 'o'; }
-    else if(bflags != std::ios_base::hex) { *f++ = type; }
-    else if(os.flags() & std::ios_base::uppercase) { *f++ = 'X'; }
-    else { *f++ = 'x'; }
-    *f = '\0';
-
-    // Use sprintf to print to a buffer and then write the
-    // buffer to the stream.
-    char buffer[2*KWSYS_IOS_INT64_MAX_DIG];
-    sprintf(buffer, format, value);
-    os << buffer;
-    } catch(...) { os.clear(os.rdstate() | std::ios_base::badbit); }
+      // Construct the format string.
+      char format[8];
+      char* f = format;
+      *f++ = '%';
+      if (os.flags() & std::ios_base::showpos) {
+        *f++ = '+';
+      }
+      if (os.flags() & std::ios_base::showbase) {
+        *f++ = '#';
+      }
+#if defined(_MSC_VER)
+      *f++ = 'I';
+      *f++ = '6';
+      *f++ = '4';
+#else
+      *f++ = 'l';
+      *f++ = 'l';
+#endif
+      long bflags = os.flags() & std::ios_base::basefield;
+      if (bflags == std::ios_base::oct) {
+        *f++ = 'o';
+      } else if (bflags != std::ios_base::hex) {
+        *f++ = type;
+      } else if (os.flags() & std::ios_base::uppercase) {
+        *f++ = 'X';
+      } else {
+        *f++ = 'x';
+      }
+      *f = '\0';
+
+      // Use sprintf to print to a buffer and then write the
+      // buffer to the stream.
+      char buffer[2 * KWSYS_IOS_INT64_MAX_DIG];
+      sprintf(buffer, format, value);
+      os << buffer;
+    } catch (...) {
+      os.clear(os.rdstate() | std::ios_base::badbit);
     }
     }
+  }
   return os;
   return os;
 }
 }
 
 
-# if !KWSYS_IOS_HAS_ISTREAM_LONG_LONG
+#if !KWSYS_IOS_HAS_ISTREAM_LONG_LONG
 // Implement input stream operator for IOStreamSLL.
 // Implement input stream operator for IOStreamSLL.
 std::istream& IOStreamScan(std::istream& is, IOStreamSLL& value)
 std::istream& IOStreamScan(std::istream& is, IOStreamSLL& value)
 {
 {
@@ -215,9 +221,9 @@ std::istream& IOStreamScan(std::istream& is, IOStreamULL& value)
 {
 {
   return IOStreamScanTemplate(is, value, 'u');
   return IOStreamScanTemplate(is, value, 'u');
 }
 }
-# endif
+#endif
 
 
-# if !KWSYS_IOS_HAS_OSTREAM_LONG_LONG
+#if !KWSYS_IOS_HAS_OSTREAM_LONG_LONG
 // Implement output stream operator for IOStreamSLL.
 // Implement output stream operator for IOStreamSLL.
 std::ostream& IOStreamPrint(std::ostream& os, IOStreamSLL value)
 std::ostream& IOStreamPrint(std::ostream& os, IOStreamSLL value)
 {
 {
@@ -229,14 +235,13 @@ std::ostream& IOStreamPrint(std::ostream& os, IOStreamULL value)
 {
 {
   return IOStreamPrintTemplate(os, value, 'u');
   return IOStreamPrintTemplate(os, value, 'u');
 }
 }
-# endif
+#endif
 
 
 } // namespace KWSYS_NAMESPACE
 } // namespace KWSYS_NAMESPACE
 
 
 #else
 #else
 
 
-namespace KWSYS_NAMESPACE
-{
+namespace KWSYS_NAMESPACE {
 
 
 // Create one public symbol in this object file to avoid warnings from
 // Create one public symbol in this object file to avoid warnings from
 // archivers.
 // archivers.

+ 63 - 73
IOStream.hxx.in

@@ -1,136 +1,126 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_IOStream_hxx
 #ifndef @KWSYS_NAMESPACE@_IOStream_hxx
 #define @KWSYS_NAMESPACE@_IOStream_hxx
 #define @KWSYS_NAMESPACE@_IOStream_hxx
 
 
 #include <iosfwd>
 #include <iosfwd>
 
 
 /* Define these macros temporarily to keep the code readable.  */
 /* Define these macros temporarily to keep the code readable.  */
-#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 
 
 /* Whether istream supports long long.  */
 /* Whether istream supports long long.  */
-#define @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_IOS_HAS_ISTREAM_LONG_LONG@
+#define @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG                           \
+  @KWSYS_IOS_HAS_ISTREAM_LONG_LONG@
 
 
 /* Whether ostream supports long long.  */
 /* Whether ostream supports long long.  */
-#define @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_IOS_HAS_OSTREAM_LONG_LONG@
+#define @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG                           \
+  @KWSYS_IOS_HAS_OSTREAM_LONG_LONG@
 
 
 /* Determine whether we need to define the streaming operators for
 /* Determine whether we need to define the streaming operators for
    long long or __int64.  */
    long long or __int64.  */
 #if @KWSYS_USE_LONG_LONG@
 #if @KWSYS_USE_LONG_LONG@
-# if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG || \
-     !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
-# define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
-  namespace @KWSYS_NAMESPACE@
-  {
-    typedef long long IOStreamSLL;
-    typedef unsigned long long IOStreamULL;
-  }
-# endif
+#if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG ||                           \
+  !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
+#define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
+namespace @KWSYS_NAMESPACE@ {
+typedef long long IOStreamSLL;
+typedef unsigned long long IOStreamULL;
+}
+#endif
 #elif defined(_MSC_VER) && _MSC_VER < 1300
 #elif defined(_MSC_VER) && _MSC_VER < 1300
-# define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
-  namespace @KWSYS_NAMESPACE@
-  {
-    typedef __int64 IOStreamSLL;
-    typedef unsigned __int64 IOStreamULL;
-  }
+#define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
+namespace @KWSYS_NAMESPACE@ {
+typedef __int64 IOStreamSLL;
+typedef unsigned __int64 IOStreamULL;
+}
 #endif
 #endif
 #if !defined(@KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL)
 #if !defined(@KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL)
-# define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 0
+#define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 0
 #endif
 #endif
 
 
 #if @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
 #if @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
-# if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
+#if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
 
 
 /* Input stream operator implementation functions.  */
 /* Input stream operator implementation functions.  */
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamSLL&);
 kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamSLL&);
 kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamULL&);
 kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamULL&);
 }
 }
 
 
 /* Provide input stream operator for long long.  */
 /* Provide input stream operator for long long.  */
-#  if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_LONG_LONG) && \
-      !defined(KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED)
-#   define KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED
-#   define @KWSYS_NAMESPACE@_IOS_ISTREAM_LONG_LONG_DEFINED
-inline std::istream&
-operator>>(std::istream& is, @KWSYS_NAMESPACE@::IOStreamSLL& value)
+#if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_LONG_LONG) &&                   \
+  !defined(KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED)
+#define KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED
+#define @KWSYS_NAMESPACE@_IOS_ISTREAM_LONG_LONG_DEFINED
+inline std::istream& operator>>(std::istream& is,
+                                @KWSYS_NAMESPACE@::IOStreamSLL& value)
 {
 {
   return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
   return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
 }
 }
-#  endif
+#endif
 
 
 /* Provide input stream operator for unsigned long long.  */
 /* Provide input stream operator for unsigned long long.  */
-#  if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_UNSIGNED_LONG_LONG) && \
-      !defined(KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED)
-#   define KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
-#   define @KWSYS_NAMESPACE@_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
-inline std::istream&
-operator>>(std::istream& is, @KWSYS_NAMESPACE@::IOStreamULL& value)
+#if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_UNSIGNED_LONG_LONG) &&          \
+  !defined(KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED)
+#define KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
+#define @KWSYS_NAMESPACE@_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
+inline std::istream& operator>>(std::istream& is,
+                                @KWSYS_NAMESPACE@::IOStreamULL& value)
 {
 {
   return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
   return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
 }
 }
-#  endif
-# endif /* !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG */
+#endif
+#endif /* !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG */
 
 
-# if !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
+#if !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
 
 
 /* Output stream operator implementation functions.  */
 /* Output stream operator implementation functions.  */
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamSLL);
 kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamSLL);
 kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamULL);
 kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamULL);
 }
 }
 
 
 /* Provide output stream operator for long long.  */
 /* Provide output stream operator for long long.  */
-#  if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_LONG_LONG) && \
-      !defined(KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED)
-#   define KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED
-#   define @KWSYS_NAMESPACE@_IOS_OSTREAM_LONG_LONG_DEFINED
-inline std::ostream&
-operator<<(std::ostream& os, @KWSYS_NAMESPACE@::IOStreamSLL value)
+#if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_LONG_LONG) &&                   \
+  !defined(KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED)
+#define KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED
+#define @KWSYS_NAMESPACE@_IOS_OSTREAM_LONG_LONG_DEFINED
+inline std::ostream& operator<<(std::ostream& os,
+                                @KWSYS_NAMESPACE@::IOStreamSLL value)
 {
 {
   return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
   return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
 }
 }
-#  endif
+#endif
 
 
 /* Provide output stream operator for unsigned long long.  */
 /* Provide output stream operator for unsigned long long.  */
-#  if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_UNSIGNED_LONG_LONG) && \
-      !defined(KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED)
-#   define KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
-#   define @KWSYS_NAMESPACE@_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
-inline std::ostream&
-operator<<(std::ostream& os, @KWSYS_NAMESPACE@::IOStreamULL value)
+#if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_UNSIGNED_LONG_LONG) &&          \
+  !defined(KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED)
+#define KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
+#define @KWSYS_NAMESPACE@_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
+inline std::ostream& operator<<(std::ostream& os,
+                                @KWSYS_NAMESPACE@::IOStreamULL value)
 {
 {
   return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
   return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
 }
 }
-#  endif
-# endif /* !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG */
+#endif
+#endif /* !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG */
 #endif /* @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL */
 #endif /* @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL */
 
 
 /* Undefine temporary macros.  */
 /* Undefine temporary macros.  */
-#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# undef kwsysEXPORT
+#if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysEXPORT
 #endif
 #endif
 
 
 /* If building a C++ file in kwsys itself, give the source file
 /* If building a C++ file in kwsys itself, give the source file
    access to the macros without a configured namespace.  */
    access to the macros without a configured namespace.  */
 #if defined(KWSYS_NAMESPACE)
 #if defined(KWSYS_NAMESPACE)
-# define KWSYS_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
-# define KWSYS_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
-# define KWSYS_IOS_NEED_OPERATORS_LL     @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
+#define KWSYS_IOS_HAS_ISTREAM_LONG_LONG                                       \
+  @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
+#define KWSYS_IOS_HAS_OSTREAM_LONG_LONG                                       \
+  @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
+#define KWSYS_IOS_NEED_OPERATORS_LL @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
 #endif
 #endif
 
 
 #endif
 #endif
-

+ 252 - 271
MD5.c

@@ -1,26 +1,17 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(MD5.h)
 #include KWSYS_HEADER(MD5.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "MD5.h.in"
+#include "MD5.h.in"
 #endif
 #endif
 
 
-#include <stddef.h>    /* size_t */
-#include <stdlib.h>    /* malloc, free */
-#include <string.h>    /* memcpy, strlen */
+#include <stddef.h> /* size_t */
+#include <stdlib.h> /* malloc, free */
+#include <string.h> /* memcpy, strlen */
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 
 
@@ -30,8 +21,8 @@
    implementation file.  */
    implementation file.  */
 
 
 #if defined(__clang__) && !defined(__INTEL_COMPILER)
 #if defined(__clang__) && !defined(__INTEL_COMPILER)
-# pragma clang diagnostic push
-# pragma clang diagnostic ignored "-Wcast-align"
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wcast-align"
 #endif
 #endif
 
 
 /*
 /*
@@ -97,344 +88,341 @@
  */
  */
 
 
 typedef unsigned char md5_byte_t; /* 8-bit byte */
 typedef unsigned char md5_byte_t; /* 8-bit byte */
-typedef unsigned int md5_word_t; /* 32-bit word */
+typedef unsigned int md5_word_t;  /* 32-bit word */
 
 
 /* Define the state of the MD5 Algorithm. */
 /* Define the state of the MD5 Algorithm. */
-typedef struct md5_state_s {
-    md5_word_t count[2];        /* message length in bits, lsw first */
-    md5_word_t abcd[4];         /* digest buffer */
-    md5_byte_t buf[64];         /* accumulate block */
+typedef struct md5_state_s
+{
+  md5_word_t count[2]; /* message length in bits, lsw first */
+  md5_word_t abcd[4];  /* digest buffer */
+  md5_byte_t buf[64];  /* accumulate block */
 } md5_state_t;
 } md5_state_t;
 
 
-#undef BYTE_ORDER       /* 1 = big-endian, -1 = little-endian, 0 = unknown */
+#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
 #ifdef ARCH_IS_BIG_ENDIAN
 #ifdef ARCH_IS_BIG_ENDIAN
-#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
+#define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
 #else
 #else
-#  define BYTE_ORDER 0
+#define BYTE_ORDER 0
 #endif
 #endif
 
 
 #define T_MASK ((md5_word_t)~0)
 #define T_MASK ((md5_word_t)~0)
 #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
 #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
 #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
 #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
-#define T3    0x242070db
+#define T3 0x242070db
 #define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
 #define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
 #define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
 #define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
-#define T6    0x4787c62a
+#define T6 0x4787c62a
 #define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
 #define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
 #define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
 #define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
-#define T9    0x698098d8
+#define T9 0x698098d8
 #define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
 #define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
 #define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
 #define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
 #define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
 #define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
-#define T13    0x6b901122
+#define T13 0x6b901122
 #define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
 #define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
 #define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
 #define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
-#define T16    0x49b40821
+#define T16 0x49b40821
 #define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
 #define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
 #define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
 #define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
-#define T19    0x265e5a51
+#define T19 0x265e5a51
 #define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
 #define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
 #define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
 #define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
-#define T22    0x02441453
+#define T22 0x02441453
 #define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
 #define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
 #define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
 #define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
-#define T25    0x21e1cde6
+#define T25 0x21e1cde6
 #define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
 #define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
 #define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
 #define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
-#define T28    0x455a14ed
+#define T28 0x455a14ed
 #define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
 #define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
 #define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
 #define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
-#define T31    0x676f02d9
+#define T31 0x676f02d9
 #define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
 #define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
 #define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
 #define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
 #define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
 #define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
-#define T35    0x6d9d6122
+#define T35 0x6d9d6122
 #define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
 #define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
 #define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
 #define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
-#define T38    0x4bdecfa9
+#define T38 0x4bdecfa9
 #define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
 #define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
 #define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
 #define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
-#define T41    0x289b7ec6
+#define T41 0x289b7ec6
 #define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
 #define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
 #define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
 #define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
-#define T44    0x04881d05
+#define T44 0x04881d05
 #define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
 #define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
 #define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
 #define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
-#define T47    0x1fa27cf8
+#define T47 0x1fa27cf8
 #define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
 #define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
 #define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
 #define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
-#define T50    0x432aff97
+#define T50 0x432aff97
 #define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
 #define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
 #define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
 #define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
-#define T53    0x655b59c3
+#define T53 0x655b59c3
 #define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
 #define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
 #define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
 #define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
 #define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
 #define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
-#define T57    0x6fa87e4f
+#define T57 0x6fa87e4f
 #define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
 #define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
 #define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
 #define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
-#define T60    0x4e0811a1
+#define T60 0x4e0811a1
 #define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
 #define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
 #define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
 #define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
-#define T63    0x2ad7d2bb
+#define T63 0x2ad7d2bb
 #define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
 #define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
 
 
-
-static void
-md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
+static void md5_process(md5_state_t* pms, const md5_byte_t* data /*[64]*/)
 {
 {
-    md5_word_t
-        a = pms->abcd[0], b = pms->abcd[1],
-        c = pms->abcd[2], d = pms->abcd[3];
-    md5_word_t t;
+  md5_word_t a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2],
+             d = pms->abcd[3];
+  md5_word_t t;
 #if BYTE_ORDER > 0
 #if BYTE_ORDER > 0
-    /* Define storage only for big-endian CPUs. */
-    md5_word_t X[16];
+  /* Define storage only for big-endian CPUs. */
+  md5_word_t X[16];
 #else
 #else
-    /* Define storage for little-endian or both types of CPUs. */
-    md5_word_t xbuf[16];
-    const md5_word_t *X;
+  /* Define storage for little-endian or both types of CPUs. */
+  md5_word_t xbuf[16];
+  const md5_word_t* X;
 #endif
 #endif
 
 
-    {
+  {
 #if BYTE_ORDER == 0
 #if BYTE_ORDER == 0
-        /*
-         * Determine dynamically whether this is a big-endian or
-         * little-endian machine, since we can use a more efficient
-         * algorithm on the latter.
-         */
-        static const int w = 1;
-
-        if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
+    /*
+     * Determine dynamically whether this is a big-endian or
+     * little-endian machine, since we can use a more efficient
+     * algorithm on the latter.
+     */
+    static const int w = 1;
+
+    if (*((const md5_byte_t*)&w)) /* dynamic little-endian */
 #endif
 #endif
-#if BYTE_ORDER <= 0             /* little-endian */
-        {
-            /*
-             * On little-endian machines, we can process properly aligned
-             * data without copying it.
-             */
-            if (!((data - (const md5_byte_t *)0) & 3)) {
-                /* data are properly aligned */
-                X = (const md5_word_t *)data;
-            } else {
-                /* not aligned */
-                memcpy(xbuf, data, 64);
-                X = xbuf;
-            }
-        }
+#if BYTE_ORDER <= 0 /* little-endian */
+    {
+      /*
+       * On little-endian machines, we can process properly aligned
+       * data without copying it.
+       */
+      if (!((data - (const md5_byte_t*)0) & 3)) {
+        /* data are properly aligned */
+        X = (const md5_word_t*)data;
+      } else {
+        /* not aligned */
+        memcpy(xbuf, data, 64);
+        X = xbuf;
+      }
+    }
 #endif
 #endif
 #if BYTE_ORDER == 0
 #if BYTE_ORDER == 0
-        else                    /* dynamic big-endian */
+    else /* dynamic big-endian */
 #endif
 #endif
-#if BYTE_ORDER >= 0             /* big-endian */
-        {
-            /*
-             * On big-endian machines, we must arrange the bytes in the
-             * right order.
-             */
-            const md5_byte_t *xp = data;
-            int i;
-
-#  if BYTE_ORDER == 0
-            X = xbuf;           /* (dynamic only) */
-#  else
-#    define xbuf X              /* (static only) */
-#  endif
-            for (i = 0; i < 16; ++i, xp += 4)
-              xbuf[i] = (md5_word_t)(xp[0] + (xp[1] << 8) +
-                                     (xp[2] << 16) + (xp[3] << 24));
-        }
+#if BYTE_ORDER >= 0 /* big-endian */
+    {
+      /*
+       * On big-endian machines, we must arrange the bytes in the
+       * right order.
+       */
+      const md5_byte_t* xp = data;
+      int i;
+
+#if BYTE_ORDER == 0
+      X = xbuf; /* (dynamic only) */
+#else
+#define xbuf X /* (static only) */
 #endif
 #endif
+      for (i = 0; i < 16; ++i, xp += 4)
+        xbuf[i] =
+          (md5_word_t)(xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24));
     }
     }
+#endif
+  }
 
 
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
 
 
-    /* Round 1. */
-    /* Let [abcd k s i] denote the operation
-       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
+/* Round 1. */
+/* Let [abcd k s i] denote the operation
+   a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
 #define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
 #define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + F(b,c,d) + X[k] + (Ti);\
+#define SET(a, b, c, d, k, s, Ti)                                             \
+  t = a + F(b, c, d) + X[k] + (Ti);                                           \
   a = ROTATE_LEFT(t, s) + b
   a = ROTATE_LEFT(t, s) + b
-    /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  7,  T1);
-    SET(d, a, b, c,  1, 12,  T2);
-    SET(c, d, a, b,  2, 17,  T3);
-    SET(b, c, d, a,  3, 22,  T4);
-    SET(a, b, c, d,  4,  7,  T5);
-    SET(d, a, b, c,  5, 12,  T6);
-    SET(c, d, a, b,  6, 17,  T7);
-    SET(b, c, d, a,  7, 22,  T8);
-    SET(a, b, c, d,  8,  7,  T9);
-    SET(d, a, b, c,  9, 12, T10);
-    SET(c, d, a, b, 10, 17, T11);
-    SET(b, c, d, a, 11, 22, T12);
-    SET(a, b, c, d, 12,  7, T13);
-    SET(d, a, b, c, 13, 12, T14);
-    SET(c, d, a, b, 14, 17, T15);
-    SET(b, c, d, a, 15, 22, T16);
+  /* Do the following 16 operations. */
+  SET(a, b, c, d, 0, 7, T1);
+  SET(d, a, b, c, 1, 12, T2);
+  SET(c, d, a, b, 2, 17, T3);
+  SET(b, c, d, a, 3, 22, T4);
+  SET(a, b, c, d, 4, 7, T5);
+  SET(d, a, b, c, 5, 12, T6);
+  SET(c, d, a, b, 6, 17, T7);
+  SET(b, c, d, a, 7, 22, T8);
+  SET(a, b, c, d, 8, 7, T9);
+  SET(d, a, b, c, 9, 12, T10);
+  SET(c, d, a, b, 10, 17, T11);
+  SET(b, c, d, a, 11, 22, T12);
+  SET(a, b, c, d, 12, 7, T13);
+  SET(d, a, b, c, 13, 12, T14);
+  SET(c, d, a, b, 14, 17, T15);
+  SET(b, c, d, a, 15, 22, T16);
 #undef SET
 #undef SET
 
 
-     /* Round 2. */
-     /* Let [abcd k s i] denote the operation
-          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
+/* Round 2. */
+/* Let [abcd k s i] denote the operation
+     a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
 #define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
 #define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + G(b,c,d) + X[k] + (Ti);\
+#define SET(a, b, c, d, k, s, Ti)                                             \
+  t = a + G(b, c, d) + X[k] + (Ti);                                           \
   a = ROTATE_LEFT(t, s) + b
   a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  1,  5, T17);
-    SET(d, a, b, c,  6,  9, T18);
-    SET(c, d, a, b, 11, 14, T19);
-    SET(b, c, d, a,  0, 20, T20);
-    SET(a, b, c, d,  5,  5, T21);
-    SET(d, a, b, c, 10,  9, T22);
-    SET(c, d, a, b, 15, 14, T23);
-    SET(b, c, d, a,  4, 20, T24);
-    SET(a, b, c, d,  9,  5, T25);
-    SET(d, a, b, c, 14,  9, T26);
-    SET(c, d, a, b,  3, 14, T27);
-    SET(b, c, d, a,  8, 20, T28);
-    SET(a, b, c, d, 13,  5, T29);
-    SET(d, a, b, c,  2,  9, T30);
-    SET(c, d, a, b,  7, 14, T31);
-    SET(b, c, d, a, 12, 20, T32);
+  /* Do the following 16 operations. */
+  SET(a, b, c, d, 1, 5, T17);
+  SET(d, a, b, c, 6, 9, T18);
+  SET(c, d, a, b, 11, 14, T19);
+  SET(b, c, d, a, 0, 20, T20);
+  SET(a, b, c, d, 5, 5, T21);
+  SET(d, a, b, c, 10, 9, T22);
+  SET(c, d, a, b, 15, 14, T23);
+  SET(b, c, d, a, 4, 20, T24);
+  SET(a, b, c, d, 9, 5, T25);
+  SET(d, a, b, c, 14, 9, T26);
+  SET(c, d, a, b, 3, 14, T27);
+  SET(b, c, d, a, 8, 20, T28);
+  SET(a, b, c, d, 13, 5, T29);
+  SET(d, a, b, c, 2, 9, T30);
+  SET(c, d, a, b, 7, 14, T31);
+  SET(b, c, d, a, 12, 20, T32);
 #undef SET
 #undef SET
 
 
-     /* Round 3. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
+/* Round 3. */
+/* Let [abcd k s t] denote the operation
+     a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
 #define H(x, y, z) ((x) ^ (y) ^ (z))
 #define H(x, y, z) ((x) ^ (y) ^ (z))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + H(b,c,d) + X[k] + (Ti);\
+#define SET(a, b, c, d, k, s, Ti)                                             \
+  t = a + H(b, c, d) + X[k] + (Ti);                                           \
   a = ROTATE_LEFT(t, s) + b
   a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  5,  4, T33);
-    SET(d, a, b, c,  8, 11, T34);
-    SET(c, d, a, b, 11, 16, T35);
-    SET(b, c, d, a, 14, 23, T36);
-    SET(a, b, c, d,  1,  4, T37);
-    SET(d, a, b, c,  4, 11, T38);
-    SET(c, d, a, b,  7, 16, T39);
-    SET(b, c, d, a, 10, 23, T40);
-    SET(a, b, c, d, 13,  4, T41);
-    SET(d, a, b, c,  0, 11, T42);
-    SET(c, d, a, b,  3, 16, T43);
-    SET(b, c, d, a,  6, 23, T44);
-    SET(a, b, c, d,  9,  4, T45);
-    SET(d, a, b, c, 12, 11, T46);
-    SET(c, d, a, b, 15, 16, T47);
-    SET(b, c, d, a,  2, 23, T48);
+  /* Do the following 16 operations. */
+  SET(a, b, c, d, 5, 4, T33);
+  SET(d, a, b, c, 8, 11, T34);
+  SET(c, d, a, b, 11, 16, T35);
+  SET(b, c, d, a, 14, 23, T36);
+  SET(a, b, c, d, 1, 4, T37);
+  SET(d, a, b, c, 4, 11, T38);
+  SET(c, d, a, b, 7, 16, T39);
+  SET(b, c, d, a, 10, 23, T40);
+  SET(a, b, c, d, 13, 4, T41);
+  SET(d, a, b, c, 0, 11, T42);
+  SET(c, d, a, b, 3, 16, T43);
+  SET(b, c, d, a, 6, 23, T44);
+  SET(a, b, c, d, 9, 4, T45);
+  SET(d, a, b, c, 12, 11, T46);
+  SET(c, d, a, b, 15, 16, T47);
+  SET(b, c, d, a, 2, 23, T48);
 #undef SET
 #undef SET
 
 
-     /* Round 4. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
+/* Round 4. */
+/* Let [abcd k s t] denote the operation
+     a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
 #define I(x, y, z) ((y) ^ ((x) | ~(z)))
 #define I(x, y, z) ((y) ^ ((x) | ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + I(b,c,d) + X[k] + (Ti);\
+#define SET(a, b, c, d, k, s, Ti)                                             \
+  t = a + I(b, c, d) + X[k] + (Ti);                                           \
   a = ROTATE_LEFT(t, s) + b
   a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  6, T49);
-    SET(d, a, b, c,  7, 10, T50);
-    SET(c, d, a, b, 14, 15, T51);
-    SET(b, c, d, a,  5, 21, T52);
-    SET(a, b, c, d, 12,  6, T53);
-    SET(d, a, b, c,  3, 10, T54);
-    SET(c, d, a, b, 10, 15, T55);
-    SET(b, c, d, a,  1, 21, T56);
-    SET(a, b, c, d,  8,  6, T57);
-    SET(d, a, b, c, 15, 10, T58);
-    SET(c, d, a, b,  6, 15, T59);
-    SET(b, c, d, a, 13, 21, T60);
-    SET(a, b, c, d,  4,  6, T61);
-    SET(d, a, b, c, 11, 10, T62);
-    SET(c, d, a, b,  2, 15, T63);
-    SET(b, c, d, a,  9, 21, T64);
+  /* Do the following 16 operations. */
+  SET(a, b, c, d, 0, 6, T49);
+  SET(d, a, b, c, 7, 10, T50);
+  SET(c, d, a, b, 14, 15, T51);
+  SET(b, c, d, a, 5, 21, T52);
+  SET(a, b, c, d, 12, 6, T53);
+  SET(d, a, b, c, 3, 10, T54);
+  SET(c, d, a, b, 10, 15, T55);
+  SET(b, c, d, a, 1, 21, T56);
+  SET(a, b, c, d, 8, 6, T57);
+  SET(d, a, b, c, 15, 10, T58);
+  SET(c, d, a, b, 6, 15, T59);
+  SET(b, c, d, a, 13, 21, T60);
+  SET(a, b, c, d, 4, 6, T61);
+  SET(d, a, b, c, 11, 10, T62);
+  SET(c, d, a, b, 2, 15, T63);
+  SET(b, c, d, a, 9, 21, T64);
 #undef SET
 #undef SET
 
 
-     /* Then perform the following additions. (That is increment each
-        of the four registers by the value it had before this block
-        was started.) */
-    pms->abcd[0] += a;
-    pms->abcd[1] += b;
-    pms->abcd[2] += c;
-    pms->abcd[3] += d;
+  /* Then perform the following additions. (That is increment each
+     of the four registers by the value it had before this block
+     was started.) */
+  pms->abcd[0] += a;
+  pms->abcd[1] += b;
+  pms->abcd[2] += c;
+  pms->abcd[3] += d;
 }
 }
 
 
 /* Initialize the algorithm. */
 /* Initialize the algorithm. */
-static void md5_init(md5_state_t *pms)
+static void md5_init(md5_state_t* pms)
 {
 {
-    pms->count[0] = pms->count[1] = 0;
-    pms->abcd[0] = 0x67452301;
-    pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
-    pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
-    pms->abcd[3] = 0x10325476;
+  pms->count[0] = pms->count[1] = 0;
+  pms->abcd[0] = 0x67452301;
+  pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
+  pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
+  pms->abcd[3] = 0x10325476;
 }
 }
 
 
 /* Append a string to the message. */
 /* Append a string to the message. */
-static void md5_append(md5_state_t *pms, const md5_byte_t *data, size_t nbytes)
+static void md5_append(md5_state_t* pms, const md5_byte_t* data, size_t nbytes)
 {
 {
-    const md5_byte_t *p = data;
-    size_t left = nbytes;
-    size_t offset = (pms->count[0] >> 3) & 63;
-    md5_word_t nbits = (md5_word_t)(nbytes << 3);
-
-    if (nbytes <= 0)
-        return;
-
-    /* Update the message length. */
-    pms->count[1] += (md5_word_t)(nbytes >> 29);
-    pms->count[0] += nbits;
-    if (pms->count[0] < nbits)
-        pms->count[1]++;
-
-    /* Process an initial partial block. */
-    if (offset) {
-        size_t copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
-
-        memcpy(pms->buf + offset, p, copy);
-        if (offset + copy < 64)
-            return;
-        p += copy;
-        left -= copy;
-        md5_process(pms, pms->buf);
-    }
+  const md5_byte_t* p = data;
+  size_t left = nbytes;
+  size_t offset = (pms->count[0] >> 3) & 63;
+  md5_word_t nbits = (md5_word_t)(nbytes << 3);
 
 
-    /* Process full blocks. */
-    for (; left >= 64; p += 64, left -= 64)
-        md5_process(pms, p);
+  if (nbytes <= 0)
+    return;
 
 
-    /* Process a final partial block. */
-    if (left)
-        memcpy(pms->buf, p, left);
+  /* Update the message length. */
+  pms->count[1] += (md5_word_t)(nbytes >> 29);
+  pms->count[0] += nbits;
+  if (pms->count[0] < nbits)
+    pms->count[1]++;
+
+  /* Process an initial partial block. */
+  if (offset) {
+    size_t copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
+
+    memcpy(pms->buf + offset, p, copy);
+    if (offset + copy < 64)
+      return;
+    p += copy;
+    left -= copy;
+    md5_process(pms, pms->buf);
+  }
+
+  /* Process full blocks. */
+  for (; left >= 64; p += 64, left -= 64)
+    md5_process(pms, p);
+
+  /* Process a final partial block. */
+  if (left)
+    memcpy(pms->buf, p, left);
 }
 }
 
 
 /* Finish the message and return the digest. */
 /* Finish the message and return the digest. */
-static void md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+static void md5_finish(md5_state_t* pms, md5_byte_t digest[16])
 {
 {
-    static const md5_byte_t pad[64] = {
-        0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    md5_byte_t data[8];
-    int i;
-
-    /* Save the length before padding. */
-    for (i = 0; i < 8; ++i)
-        data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
-    /* Pad to 56 bytes mod 64. */
-    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
-    /* Append the length. */
-    md5_append(pms, data, 8);
-    for (i = 0; i < 16; ++i)
-        digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+  static const md5_byte_t pad[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                      0,    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                      0,    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                      0,    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                      0,    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+  md5_byte_t data[8];
+  int i;
+
+  /* Save the length before padding. */
+  for (i = 0; i < 8; ++i)
+    data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+  /* Pad to 56 bytes mod 64. */
+  md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+  /* Append the length. */
+  md5_append(pms, data, 8);
+  for (i = 0; i < 16; ++i)
+    digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
 }
 }
 
 
 #if defined(__clang__) && !defined(__INTEL_COMPILER)
 #if defined(__clang__) && !defined(__INTEL_COMPILER)
-# pragma clang diagnostic pop
+#pragma clang diagnostic pop
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
@@ -449,10 +437,9 @@ kwsysMD5* kwsysMD5_New(void)
 {
 {
   /* Allocate a process control structure.  */
   /* Allocate a process control structure.  */
   kwsysMD5* md5 = (kwsysMD5*)malloc(sizeof(kwsysMD5));
   kwsysMD5* md5 = (kwsysMD5*)malloc(sizeof(kwsysMD5));
-  if(!md5)
-    {
+  if (!md5) {
     return 0;
     return 0;
-    }
+  }
   return md5;
   return md5;
 }
 }
 
 
@@ -460,10 +447,9 @@ kwsysMD5* kwsysMD5_New(void)
 void kwsysMD5_Delete(kwsysMD5* md5)
 void kwsysMD5_Delete(kwsysMD5* md5)
 {
 {
   /* Make sure we have an instance.  */
   /* Make sure we have an instance.  */
-  if(!md5)
-    {
+  if (!md5) {
     return;
     return;
-    }
+  }
 
 
   /* Free memory.  */
   /* Free memory.  */
   free(md5);
   free(md5);
@@ -479,14 +465,11 @@ void kwsysMD5_Initialize(kwsysMD5* md5)
 void kwsysMD5_Append(kwsysMD5* md5, unsigned char const* data, int length)
 void kwsysMD5_Append(kwsysMD5* md5, unsigned char const* data, int length)
 {
 {
   size_t dlen;
   size_t dlen;
-  if(length < 0)
-    {
+  if (length < 0) {
     dlen = strlen((char const*)data);
     dlen = strlen((char const*)data);
-    }
-  else
-    {
+  } else {
     dlen = (size_t)length;
     dlen = (size_t)length;
-    }
+  }
   md5_append(&md5->md5_state, (md5_byte_t const*)data, dlen);
   md5_append(&md5->md5_state, (md5_byte_t const*)data, dlen);
 }
 }
 
 
@@ -508,16 +491,14 @@ void kwsysMD5_FinalizeHex(kwsysMD5* md5, char buffer[32])
 void kwsysMD5_DigestToHex(unsigned char const digest[16], char buffer[32])
 void kwsysMD5_DigestToHex(unsigned char const digest[16], char buffer[32])
 {
 {
   /* Map from 4-bit index to hexadecimal representation.  */
   /* Map from 4-bit index to hexadecimal representation.  */
-  static char const hex[16] =
-    {'0', '1', '2', '3', '4', '5', '6', '7',
-     '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+  static char const hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7',
+                                '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
 
 
   /* Map each 4-bit block separately.  */
   /* Map each 4-bit block separately.  */
   char* out = buffer;
   char* out = buffer;
   int i;
   int i;
-  for(i=0; i < 16; ++i)
-    {
+  for (i = 0; i < 16; ++i) {
     *out++ = hex[digest[i] >> 4];
     *out++ = hex[digest[i] >> 4];
     *out++ = hex[digest[i] & 0xF];
     *out++ = hex[digest[i] & 0xF];
-    }
+  }
 }
 }

+ 27 - 37
MD5.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_MD5_h
 #ifndef @KWSYS_NAMESPACE@_MD5_h
 #define @KWSYS_NAMESPACE@_MD5_h
 #define @KWSYS_NAMESPACE@_MD5_h
 
 
@@ -19,24 +10,23 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysMD5                 kwsys_ns(MD5)
-# define kwsysMD5_s               kwsys_ns(MD5_s)
-# define kwsysMD5_New             kwsys_ns(MD5_New)
-# define kwsysMD5_Delete          kwsys_ns(MD5_Delete)
-# define kwsysMD5_Initialize      kwsys_ns(MD5_Initialize)
-# define kwsysMD5_Append          kwsys_ns(MD5_Append)
-# define kwsysMD5_Finalize        kwsys_ns(MD5_Finalize)
-# define kwsysMD5_FinalizeHex     kwsys_ns(MD5_FinalizeHex)
-# define kwsysMD5_DigestToHex     kwsys_ns(MD5_DigestToHex)
+#define kwsysMD5 kwsys_ns(MD5)
+#define kwsysMD5_s kwsys_ns(MD5_s)
+#define kwsysMD5_New kwsys_ns(MD5_New)
+#define kwsysMD5_Delete kwsys_ns(MD5_Delete)
+#define kwsysMD5_Initialize kwsys_ns(MD5_Initialize)
+#define kwsysMD5_Append kwsys_ns(MD5_Append)
+#define kwsysMD5_Finalize kwsys_ns(MD5_Finalize)
+#define kwsysMD5_FinalizeHex kwsys_ns(MD5_FinalizeHex)
+#define kwsysMD5_DigestToHex kwsys_ns(MD5_DigestToHex)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
@@ -89,19 +79,19 @@ kwsysEXPORT void kwsysMD5_DigestToHex(unsigned char const digest[16],
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysMD5
-#  undef kwsysMD5_s
-#  undef kwsysMD5_New
-#  undef kwsysMD5_Delete
-#  undef kwsysMD5_Initialize
-#  undef kwsysMD5_Append
-#  undef kwsysMD5_Finalize
-#  undef kwsysMD5_FinalizeHex
-#  undef kwsysMD5_DigestToHex
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysMD5
+#undef kwsysMD5_s
+#undef kwsysMD5_New
+#undef kwsysMD5_Delete
+#undef kwsysMD5_Initialize
+#undef kwsysMD5_Append
+#undef kwsysMD5_Finalize
+#undef kwsysMD5_FinalizeHex
+#undef kwsysMD5_DigestToHex
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 127 - 133
Process.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Process_h
 #ifndef @KWSYS_NAMESPACE@_Process_h
 #define @KWSYS_NAMESPACE@_Process_h
 #define @KWSYS_NAMESPACE@_Process_h
 
 
@@ -19,70 +10,70 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysProcess                           kwsys_ns(Process)
-# define kwsysProcess_s                         kwsys_ns(Process_s)
-# define kwsysProcess_New                       kwsys_ns(Process_New)
-# define kwsysProcess_Delete                    kwsys_ns(Process_Delete)
-# define kwsysProcess_SetCommand                kwsys_ns(Process_SetCommand)
-# define kwsysProcess_AddCommand                kwsys_ns(Process_AddCommand)
-# define kwsysProcess_SetTimeout                kwsys_ns(Process_SetTimeout)
-# define kwsysProcess_SetWorkingDirectory       kwsys_ns(Process_SetWorkingDirectory)
-# define kwsysProcess_SetPipeFile               kwsys_ns(Process_SetPipeFile)
-# define kwsysProcess_SetPipeNative             kwsys_ns(Process_SetPipeNative)
-# define kwsysProcess_SetPipeShared             kwsys_ns(Process_SetPipeShared)
-# define kwsysProcess_Option_Detach             kwsys_ns(Process_Option_Detach)
-# define kwsysProcess_Option_HideWindow         kwsys_ns(Process_Option_HideWindow)
-# define kwsysProcess_Option_MergeOutput        kwsys_ns(Process_Option_MergeOutput)
-# define kwsysProcess_Option_Verbatim           kwsys_ns(Process_Option_Verbatim)
-# define kwsysProcess_Option_CreateProcessGroup kwsys_ns(Process_Option_CreateProcessGroup)
-# define kwsysProcess_GetOption                 kwsys_ns(Process_GetOption)
-# define kwsysProcess_SetOption                 kwsys_ns(Process_SetOption)
-# define kwsysProcess_Option_e                  kwsys_ns(Process_Option_e)
-# define kwsysProcess_State_Starting            kwsys_ns(Process_State_Starting)
-# define kwsysProcess_State_Error               kwsys_ns(Process_State_Error)
-# define kwsysProcess_State_Exception           kwsys_ns(Process_State_Exception)
-# define kwsysProcess_State_Executing           kwsys_ns(Process_State_Executing)
-# define kwsysProcess_State_Exited              kwsys_ns(Process_State_Exited)
-# define kwsysProcess_State_Expired             kwsys_ns(Process_State_Expired)
-# define kwsysProcess_State_Killed              kwsys_ns(Process_State_Killed)
-# define kwsysProcess_State_Disowned            kwsys_ns(Process_State_Disowned)
-# define kwsysProcess_GetState                  kwsys_ns(Process_GetState)
-# define kwsysProcess_State_e                   kwsys_ns(Process_State_e)
-# define kwsysProcess_Exception_None            kwsys_ns(Process_Exception_None)
-# define kwsysProcess_Exception_Fault           kwsys_ns(Process_Exception_Fault)
-# define kwsysProcess_Exception_Illegal         kwsys_ns(Process_Exception_Illegal)
-# define kwsysProcess_Exception_Interrupt       kwsys_ns(Process_Exception_Interrupt)
-# define kwsysProcess_Exception_Numerical       kwsys_ns(Process_Exception_Numerical)
-# define kwsysProcess_Exception_Other           kwsys_ns(Process_Exception_Other)
-# define kwsysProcess_GetExitException          kwsys_ns(Process_GetExitException)
-# define kwsysProcess_Exception_e               kwsys_ns(Process_Exception_e)
-# define kwsysProcess_GetExitCode               kwsys_ns(Process_GetExitCode)
-# define kwsysProcess_GetExitValue              kwsys_ns(Process_GetExitValue)
-# define kwsysProcess_GetErrorString            kwsys_ns(Process_GetErrorString)
-# define kwsysProcess_GetExceptionString        kwsys_ns(Process_GetExceptionString)
-# define kwsysProcess_Execute                   kwsys_ns(Process_Execute)
-# define kwsysProcess_Disown                    kwsys_ns(Process_Disown)
-# define kwsysProcess_WaitForData               kwsys_ns(Process_WaitForData)
-# define kwsysProcess_Pipes_e                   kwsys_ns(Process_Pipes_e)
-# define kwsysProcess_Pipe_None                 kwsys_ns(Process_Pipe_None)
-# define kwsysProcess_Pipe_STDIN                kwsys_ns(Process_Pipe_STDIN)
-# define kwsysProcess_Pipe_STDOUT               kwsys_ns(Process_Pipe_STDOUT)
-# define kwsysProcess_Pipe_STDERR               kwsys_ns(Process_Pipe_STDERR)
-# define kwsysProcess_Pipe_Timeout              kwsys_ns(Process_Pipe_Timeout)
-# define kwsysProcess_Pipe_Handle               kwsys_ns(Process_Pipe_Handle)
-# define kwsysProcess_WaitForExit               kwsys_ns(Process_WaitForExit)
-# define kwsysProcess_Interrupt                 kwsys_ns(Process_Interrupt)
-# define kwsysProcess_Kill                      kwsys_ns(Process_Kill)
-# define kwsysProcess_ResetStartTime            kwsys_ns(Process_ResetStartTime)
+#define kwsysProcess kwsys_ns(Process)
+#define kwsysProcess_s kwsys_ns(Process_s)
+#define kwsysProcess_New kwsys_ns(Process_New)
+#define kwsysProcess_Delete kwsys_ns(Process_Delete)
+#define kwsysProcess_SetCommand kwsys_ns(Process_SetCommand)
+#define kwsysProcess_AddCommand kwsys_ns(Process_AddCommand)
+#define kwsysProcess_SetTimeout kwsys_ns(Process_SetTimeout)
+#define kwsysProcess_SetWorkingDirectory kwsys_ns(Process_SetWorkingDirectory)
+#define kwsysProcess_SetPipeFile kwsys_ns(Process_SetPipeFile)
+#define kwsysProcess_SetPipeNative kwsys_ns(Process_SetPipeNative)
+#define kwsysProcess_SetPipeShared kwsys_ns(Process_SetPipeShared)
+#define kwsysProcess_Option_Detach kwsys_ns(Process_Option_Detach)
+#define kwsysProcess_Option_HideWindow kwsys_ns(Process_Option_HideWindow)
+#define kwsysProcess_Option_MergeOutput kwsys_ns(Process_Option_MergeOutput)
+#define kwsysProcess_Option_Verbatim kwsys_ns(Process_Option_Verbatim)
+#define kwsysProcess_Option_CreateProcessGroup                                \
+  kwsys_ns(Process_Option_CreateProcessGroup)
+#define kwsysProcess_GetOption kwsys_ns(Process_GetOption)
+#define kwsysProcess_SetOption kwsys_ns(Process_SetOption)
+#define kwsysProcess_Option_e kwsys_ns(Process_Option_e)
+#define kwsysProcess_State_Starting kwsys_ns(Process_State_Starting)
+#define kwsysProcess_State_Error kwsys_ns(Process_State_Error)
+#define kwsysProcess_State_Exception kwsys_ns(Process_State_Exception)
+#define kwsysProcess_State_Executing kwsys_ns(Process_State_Executing)
+#define kwsysProcess_State_Exited kwsys_ns(Process_State_Exited)
+#define kwsysProcess_State_Expired kwsys_ns(Process_State_Expired)
+#define kwsysProcess_State_Killed kwsys_ns(Process_State_Killed)
+#define kwsysProcess_State_Disowned kwsys_ns(Process_State_Disowned)
+#define kwsysProcess_GetState kwsys_ns(Process_GetState)
+#define kwsysProcess_State_e kwsys_ns(Process_State_e)
+#define kwsysProcess_Exception_None kwsys_ns(Process_Exception_None)
+#define kwsysProcess_Exception_Fault kwsys_ns(Process_Exception_Fault)
+#define kwsysProcess_Exception_Illegal kwsys_ns(Process_Exception_Illegal)
+#define kwsysProcess_Exception_Interrupt kwsys_ns(Process_Exception_Interrupt)
+#define kwsysProcess_Exception_Numerical kwsys_ns(Process_Exception_Numerical)
+#define kwsysProcess_Exception_Other kwsys_ns(Process_Exception_Other)
+#define kwsysProcess_GetExitException kwsys_ns(Process_GetExitException)
+#define kwsysProcess_Exception_e kwsys_ns(Process_Exception_e)
+#define kwsysProcess_GetExitCode kwsys_ns(Process_GetExitCode)
+#define kwsysProcess_GetExitValue kwsys_ns(Process_GetExitValue)
+#define kwsysProcess_GetErrorString kwsys_ns(Process_GetErrorString)
+#define kwsysProcess_GetExceptionString kwsys_ns(Process_GetExceptionString)
+#define kwsysProcess_Execute kwsys_ns(Process_Execute)
+#define kwsysProcess_Disown kwsys_ns(Process_Disown)
+#define kwsysProcess_WaitForData kwsys_ns(Process_WaitForData)
+#define kwsysProcess_Pipes_e kwsys_ns(Process_Pipes_e)
+#define kwsysProcess_Pipe_None kwsys_ns(Process_Pipe_None)
+#define kwsysProcess_Pipe_STDIN kwsys_ns(Process_Pipe_STDIN)
+#define kwsysProcess_Pipe_STDOUT kwsys_ns(Process_Pipe_STDOUT)
+#define kwsysProcess_Pipe_STDERR kwsys_ns(Process_Pipe_STDERR)
+#define kwsysProcess_Pipe_Timeout kwsys_ns(Process_Pipe_Timeout)
+#define kwsysProcess_Pipe_Handle kwsys_ns(Process_Pipe_Handle)
+#define kwsysProcess_WaitForExit kwsys_ns(Process_WaitForExit)
+#define kwsysProcess_Interrupt kwsys_ns(Process_Interrupt)
+#define kwsysProcess_Kill kwsys_ns(Process_Kill)
+#define kwsysProcess_ResetStartTime kwsys_ns(Process_ResetStartTime)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
@@ -256,9 +247,12 @@ enum kwsysProcess_State_e
  *
  *
  *  kwsysProcess_Exception_None      = No exceptional behavior occurred.
  *  kwsysProcess_Exception_None      = No exceptional behavior occurred.
  *  kwsysProcess_Exception_Fault     = Child crashed with a memory fault.
  *  kwsysProcess_Exception_Fault     = Child crashed with a memory fault.
- *  kwsysProcess_Exception_Illegal   = Child crashed with an illegal instruction.
- *  kwsysProcess_Exception_Interrupt = Child was interrupted by user (Cntl-C/Break).
- *  kwsysProcess_Exception_Numerical = Child crashed with a numerical exception.
+ *  kwsysProcess_Exception_Illegal   = Child crashed with an illegal
+ * instruction.
+ *  kwsysProcess_Exception_Interrupt = Child was interrupted by user
+ * (Cntl-C/Break).
+ *  kwsysProcess_Exception_Numerical = Child crashed with a numerical
+ * exception.
  *  kwsysProcess_Exception_Other     = Child terminated for another reason.
  *  kwsysProcess_Exception_Other     = Child terminated for another reason.
  */
  */
 kwsysEXPORT int kwsysProcess_GetExitException(kwsysProcess* cp);
 kwsysEXPORT int kwsysProcess_GetExitException(kwsysProcess* cp);
@@ -352,7 +346,7 @@ enum kwsysProcess_Pipes_e
   kwsysProcess_Pipe_STDIN,
   kwsysProcess_Pipe_STDIN,
   kwsysProcess_Pipe_STDOUT,
   kwsysProcess_Pipe_STDOUT,
   kwsysProcess_Pipe_STDERR,
   kwsysProcess_Pipe_STDERR,
-  kwsysProcess_Pipe_Timeout=255
+  kwsysProcess_Pipe_Timeout = 255
 };
 };
 
 
 /**
 /**
@@ -405,65 +399,65 @@ kwsysEXPORT void kwsysProcess_ResetStartTime(kwsysProcess* cp);
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysProcess
-#  undef kwsysProcess_s
-#  undef kwsysProcess_New
-#  undef kwsysProcess_Delete
-#  undef kwsysProcess_SetCommand
-#  undef kwsysProcess_AddCommand
-#  undef kwsysProcess_SetTimeout
-#  undef kwsysProcess_SetWorkingDirectory
-#  undef kwsysProcess_SetPipeFile
-#  undef kwsysProcess_SetPipeNative
-#  undef kwsysProcess_SetPipeShared
-#  undef kwsysProcess_Option_Detach
-#  undef kwsysProcess_Option_HideWindow
-#  undef kwsysProcess_Option_MergeOutput
-#  undef kwsysProcess_Option_Verbatim
-#  undef kwsysProcess_Option_CreateProcessGroup
-#  undef kwsysProcess_GetOption
-#  undef kwsysProcess_SetOption
-#  undef kwsysProcess_Option_e
-#  undef kwsysProcess_State_Starting
-#  undef kwsysProcess_State_Error
-#  undef kwsysProcess_State_Exception
-#  undef kwsysProcess_State_Executing
-#  undef kwsysProcess_State_Exited
-#  undef kwsysProcess_State_Expired
-#  undef kwsysProcess_State_Killed
-#  undef kwsysProcess_State_Disowned
-#  undef kwsysProcess_GetState
-#  undef kwsysProcess_State_e
-#  undef kwsysProcess_Exception_None
-#  undef kwsysProcess_Exception_Fault
-#  undef kwsysProcess_Exception_Illegal
-#  undef kwsysProcess_Exception_Interrupt
-#  undef kwsysProcess_Exception_Numerical
-#  undef kwsysProcess_Exception_Other
-#  undef kwsysProcess_GetExitException
-#  undef kwsysProcess_Exception_e
-#  undef kwsysProcess_GetExitCode
-#  undef kwsysProcess_GetExitValue
-#  undef kwsysProcess_GetErrorString
-#  undef kwsysProcess_GetExceptionString
-#  undef kwsysProcess_Execute
-#  undef kwsysProcess_Disown
-#  undef kwsysProcess_WaitForData
-#  undef kwsysProcess_Pipes_e
-#  undef kwsysProcess_Pipe_None
-#  undef kwsysProcess_Pipe_STDIN
-#  undef kwsysProcess_Pipe_STDOUT
-#  undef kwsysProcess_Pipe_STDERR
-#  undef kwsysProcess_Pipe_Timeout
-#  undef kwsysProcess_Pipe_Handle
-#  undef kwsysProcess_WaitForExit
-#  undef kwsysProcess_Interrupt
-#  undef kwsysProcess_Kill
-#  undef kwsysProcess_ResetStartTime
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysProcess
+#undef kwsysProcess_s
+#undef kwsysProcess_New
+#undef kwsysProcess_Delete
+#undef kwsysProcess_SetCommand
+#undef kwsysProcess_AddCommand
+#undef kwsysProcess_SetTimeout
+#undef kwsysProcess_SetWorkingDirectory
+#undef kwsysProcess_SetPipeFile
+#undef kwsysProcess_SetPipeNative
+#undef kwsysProcess_SetPipeShared
+#undef kwsysProcess_Option_Detach
+#undef kwsysProcess_Option_HideWindow
+#undef kwsysProcess_Option_MergeOutput
+#undef kwsysProcess_Option_Verbatim
+#undef kwsysProcess_Option_CreateProcessGroup
+#undef kwsysProcess_GetOption
+#undef kwsysProcess_SetOption
+#undef kwsysProcess_Option_e
+#undef kwsysProcess_State_Starting
+#undef kwsysProcess_State_Error
+#undef kwsysProcess_State_Exception
+#undef kwsysProcess_State_Executing
+#undef kwsysProcess_State_Exited
+#undef kwsysProcess_State_Expired
+#undef kwsysProcess_State_Killed
+#undef kwsysProcess_State_Disowned
+#undef kwsysProcess_GetState
+#undef kwsysProcess_State_e
+#undef kwsysProcess_Exception_None
+#undef kwsysProcess_Exception_Fault
+#undef kwsysProcess_Exception_Illegal
+#undef kwsysProcess_Exception_Interrupt
+#undef kwsysProcess_Exception_Numerical
+#undef kwsysProcess_Exception_Other
+#undef kwsysProcess_GetExitException
+#undef kwsysProcess_Exception_e
+#undef kwsysProcess_GetExitCode
+#undef kwsysProcess_GetExitValue
+#undef kwsysProcess_GetErrorString
+#undef kwsysProcess_GetExceptionString
+#undef kwsysProcess_Execute
+#undef kwsysProcess_Disown
+#undef kwsysProcess_WaitForData
+#undef kwsysProcess_Pipes_e
+#undef kwsysProcess_Pipe_None
+#undef kwsysProcess_Pipe_STDIN
+#undef kwsysProcess_Pipe_STDOUT
+#undef kwsysProcess_Pipe_STDERR
+#undef kwsysProcess_Pipe_Timeout
+#undef kwsysProcess_Pipe_Handle
+#undef kwsysProcess_WaitForExit
+#undef kwsysProcess_Interrupt
+#undef kwsysProcess_Kill
+#undef kwsysProcess_ResetStartTime
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

文件差異過大導致無法顯示
+ 268 - 337
ProcessUNIX.c


文件差異過大導致無法顯示
+ 359 - 452
ProcessWin32.c


文件差異過大導致無法顯示
+ 585 - 614
RegularExpression.cxx


+ 65 - 83
RegularExpression.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 // Original Copyright notice:
 // Original Copyright notice:
 // Copyright (C) 1991 Texas Instruments Incorporated.
 // Copyright (C) 1991 Texas Instruments Incorporated.
 //
 //
@@ -38,11 +29,10 @@
 /* Disable useless Borland warnings.  KWSys tries not to force things
 /* Disable useless Borland warnings.  KWSys tries not to force things
    on its includers, but there is no choice here.  */
    on its includers, but there is no choice here.  */
 #if defined(__BORLANDC__)
 #if defined(__BORLANDC__)
-# pragma warn -8027 /* function not inlined.  */
+#pragma warn - 8027 /* function not inlined.  */
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 /** \class RegularExpression
 /** \class RegularExpression
  * \brief Implements pattern matching with regular expressions.
  * \brief Implements pattern matching with regular expressions.
@@ -68,10 +58,10 @@ namespace @KWSYS_NAMESPACE@
  * and utilities.
  * and utilities.
  *
  *
  * Example: The perl code
  * Example: The perl code
- * 
+ *
  *    $filename =~ m"([a-z]+)\.cc";
  *    $filename =~ m"([a-z]+)\.cc";
  *    print $1;
  *    print $1;
- *    
+ *
  * Is written as follows in C++
  * Is written as follows in C++
  *
  *
  *    RegularExpression re("([a-z]+)\\.cc");
  *    RegularExpression re("([a-z]+)\\.cc");
@@ -181,28 +171,28 @@ namespace @KWSYS_NAMESPACE@
  *      the line.  It would match "drepa qrepb" in "rep drepa qrepb".
  *      the line.  It would match "drepa qrepb" in "rep drepa qrepb".
  *
  *
  */
  */
-class @KWSYS_NAMESPACE@_EXPORT RegularExpression 
+class @KWSYS_NAMESPACE@_EXPORT RegularExpression
 {
 {
 public:
 public:
   /**
   /**
    * Instantiate RegularExpression with program=NULL.
    * Instantiate RegularExpression with program=NULL.
    */
    */
-  inline RegularExpression ();        
+  inline RegularExpression();
 
 
   /**
   /**
    * Instantiate RegularExpression with compiled char*.
    * Instantiate RegularExpression with compiled char*.
    */
    */
-  inline RegularExpression (char const*);
+  inline RegularExpression(char const*);
 
 
   /**
   /**
    * Instantiate RegularExpression as a copy of another regular expression.
    * Instantiate RegularExpression as a copy of another regular expression.
    */
    */
-  RegularExpression (RegularExpression const&);
+  RegularExpression(RegularExpression const&);
 
 
   /**
   /**
    * Instantiate RegularExpression with compiled string.
    * Instantiate RegularExpression with compiled string.
    */
    */
-  inline RegularExpression (std::string const&);
+  inline RegularExpression(std::string const&);
 
 
   /**
   /**
    * Destructor.
    * Destructor.
@@ -213,25 +203,25 @@ public:
    * Compile a regular expression into internal code
    * Compile a regular expression into internal code
    * for later pattern matching.
    * for later pattern matching.
    */
    */
-  bool compile (char const*);
+  bool compile(char const*);
 
 
   /**
   /**
    * Compile a regular expression into internal code
    * Compile a regular expression into internal code
    * for later pattern matching.
    * for later pattern matching.
    */
    */
-  inline bool compile (std::string const&);
+  inline bool compile(std::string const&);
 
 
   /**
   /**
    * Matches the regular expression to the given string.
    * Matches the regular expression to the given string.
    * Returns true if found, and sets start and end indexes accordingly.
    * Returns true if found, and sets start and end indexes accordingly.
    */
    */
-  bool find (char const*);
+  bool find(char const*);
 
 
   /**
   /**
    * Matches the regular expression to the given std string.
    * Matches the regular expression to the given std string.
    * Returns true if found, and sets start and end indexes accordingly.
    * Returns true if found, and sets start and end indexes accordingly.
    */
    */
-  inline bool find (std::string const&);
+  inline bool find(std::string const&);
 
 
   /**
   /**
    * Index to start of first find.
    * Index to start of first find.
@@ -246,26 +236,26 @@ public:
   /**
   /**
    * Copy the given regular expression.
    * Copy the given regular expression.
    */
    */
-  RegularExpression& operator= (const RegularExpression& rxp);
+  RegularExpression& operator=(const RegularExpression& rxp);
 
 
   /**
   /**
    * Returns true if two regular expressions have the same
    * Returns true if two regular expressions have the same
    * compiled program for pattern matching.
    * compiled program for pattern matching.
    */
    */
-  bool operator== (RegularExpression const&) const;
+  bool operator==(RegularExpression const&) const;
 
 
   /**
   /**
    * Returns true if two regular expressions have different
    * Returns true if two regular expressions have different
    * compiled program for pattern matching.
    * compiled program for pattern matching.
    */
    */
-  inline bool operator!= (RegularExpression const&) const;
+  inline bool operator!=(RegularExpression const&) const;
 
 
   /**
   /**
    * Returns true if have the same compiled regular expressions
    * Returns true if have the same compiled regular expressions
    * and the same start and end pointers.
    * and the same start and end pointers.
    */
    */
-  bool deep_equal (RegularExpression const&) const;
-  
+  bool deep_equal(RegularExpression const&) const;
+
   /**
   /**
    * True if the compiled regexp is valid.
    * True if the compiled regexp is valid.
    */
    */
@@ -274,7 +264,7 @@ public:
   /**
   /**
    * Marks the regular expression as invalid.
    * Marks the regular expression as invalid.
    */
    */
-  inline void set_invalid();            
+  inline void set_invalid();
 
 
   /**
   /**
    * Destructor.
    * Destructor.
@@ -283,25 +273,29 @@ public:
   std::string::size_type start(int n) const;
   std::string::size_type start(int n) const;
   std::string::size_type end(int n) const;
   std::string::size_type end(int n) const;
   std::string match(int n) const;
   std::string match(int n) const;
-  
-  enum { NSUBEXP = 10 };
-private: 
+
+  enum
+  {
+    NSUBEXP = 10
+  };
+
+private:
   const char* startp[NSUBEXP];
   const char* startp[NSUBEXP];
   const char* endp[NSUBEXP];
   const char* endp[NSUBEXP];
-  char  regstart;                       // Internal use only
-  char  reganch;                        // Internal use only
-  const char* regmust;                  // Internal use only
-  std::string::size_type regmlen;                // Internal use only
-  char* program;   
-  int   progsize;
+  char regstart;                  // Internal use only
+  char reganch;                   // Internal use only
+  const char* regmust;            // Internal use only
+  std::string::size_type regmlen; // Internal use only
+  char* program;
+  int progsize;
   const char* searchstring;
   const char* searchstring;
 };
 };
 
 
 /**
 /**
  * Create an empty regular expression.
  * Create an empty regular expression.
  */
  */
-inline RegularExpression::RegularExpression () 
-{ 
+inline RegularExpression::RegularExpression()
+{
   this->program = 0;
   this->program = 0;
 }
 }
 
 
@@ -309,20 +303,19 @@ inline RegularExpression::RegularExpression ()
  * Creates a regular expression from string s, and
  * Creates a regular expression from string s, and
  * compiles s.
  * compiles s.
  */
  */
-inline RegularExpression::RegularExpression (const char* s) 
-{  
+inline RegularExpression::RegularExpression(const char* s)
+{
   this->program = 0;
   this->program = 0;
-  if ( s )
-    {
+  if (s) {
     this->compile(s);
     this->compile(s);
-    }
+  }
 }
 }
 
 
 /**
 /**
  * Creates a regular expression from string s, and
  * Creates a regular expression from string s, and
  * compiles s.
  * compiles s.
  */
  */
-inline RegularExpression::RegularExpression (const std::string& s)
+inline RegularExpression::RegularExpression(const std::string& s)
 {
 {
   this->program = 0;
   this->program = 0;
   this->compile(s);
   this->compile(s);
@@ -331,18 +324,18 @@ inline RegularExpression::RegularExpression (const std::string& s)
 /**
 /**
  * Destroys and frees space allocated for the regular expression.
  * Destroys and frees space allocated for the regular expression.
  */
  */
-inline RegularExpression::~RegularExpression () 
+inline RegularExpression::~RegularExpression()
 {
 {
-//#ifndef _WIN32
-  delete [] this->program;
-//#endif
+  //#ifndef _WIN32
+  delete[] this->program;
+  //#endif
 }
 }
 
 
 /**
 /**
  * Compile a regular expression into internal code
  * Compile a regular expression into internal code
  * for later pattern matching.
  * for later pattern matching.
  */
  */
-inline bool RegularExpression::compile (std::string const& s)
+inline bool RegularExpression::compile(std::string const& s)
 {
 {
   return this->compile(s.c_str());
   return this->compile(s.c_str());
 }
 }
@@ -351,7 +344,7 @@ inline bool RegularExpression::compile (std::string const& s)
  * Matches the regular expression to the given std string.
  * Matches the regular expression to the given std string.
  * Returns true if found, and sets start and end indexes accordingly.
  * Returns true if found, and sets start and end indexes accordingly.
  */
  */
-inline bool RegularExpression::find (std::string const& s)
+inline bool RegularExpression::find(std::string const& s)
 {
 {
   return this->find(s.c_str());
   return this->find(s.c_str());
 }
 }
@@ -359,46 +352,42 @@ inline bool RegularExpression::find (std::string const& s)
 /**
 /**
  * Set the start position for the regular expression.
  * Set the start position for the regular expression.
  */
  */
-inline std::string::size_type RegularExpression::start () const
+inline std::string::size_type RegularExpression::start() const
 {
 {
-  return static_cast<std::string::size_type>(
-    this->startp[0] - searchstring);
+  return static_cast<std::string::size_type>(this->startp[0] - searchstring);
 }
 }
 
 
-
 /**
 /**
  * Returns the start/end index of the last item found.
  * Returns the start/end index of the last item found.
  */
  */
-inline std::string::size_type RegularExpression::end () const
+inline std::string::size_type RegularExpression::end() const
 {
 {
-  return static_cast<std::string::size_type>(
-    this->endp[0] - searchstring);
+  return static_cast<std::string::size_type>(this->endp[0] - searchstring);
 }
 }
 
 
 /**
 /**
  * Returns true if two regular expressions have different
  * Returns true if two regular expressions have different
  * compiled program for pattern matching.
  * compiled program for pattern matching.
  */
  */
-inline bool RegularExpression::operator!= (const RegularExpression& r) const 
+inline bool RegularExpression::operator!=(const RegularExpression& r) const
 {
 {
-  return(!(*this == r));
+  return (!(*this == r));
 }
 }
 
 
 /**
 /**
  * Returns true if a valid regular expression is compiled
  * Returns true if a valid regular expression is compiled
  * and ready for pattern matching.
  * and ready for pattern matching.
  */
  */
-inline bool RegularExpression::is_valid () const 
+inline bool RegularExpression::is_valid() const
 {
 {
   return (this->program != 0);
   return (this->program != 0);
 }
 }
 
 
-
-inline void RegularExpression::set_invalid () 
+inline void RegularExpression::set_invalid()
 {
 {
-//#ifndef _WIN32
-  delete [] this->program;
-//#endif
+  //#ifndef _WIN32
+  delete[] this->program;
+  //#endif
   this->program = 0;
   this->program = 0;
 }
 }
 
 
@@ -407,18 +396,15 @@ inline void RegularExpression::set_invalid ()
  */
  */
 inline std::string::size_type RegularExpression::start(int n) const
 inline std::string::size_type RegularExpression::start(int n) const
 {
 {
-  return static_cast<std::string::size_type>(
-    this->startp[n] - searchstring);
+  return static_cast<std::string::size_type>(this->startp[n] - searchstring);
 }
 }
 
 
-
 /**
 /**
  * Return end index of nth submatch. end(0) is the end of the full match.
  * Return end index of nth submatch. end(0) is the end of the full match.
  */
  */
 inline std::string::size_type RegularExpression::end(int n) const
 inline std::string::size_type RegularExpression::end(int n) const
 {
 {
-  return static_cast<std::string::size_type>(
-    this->endp[n] - searchstring);
+  return static_cast<std::string::size_type>(this->endp[n] - searchstring);
 }
 }
 
 
 /**
 /**
@@ -426,16 +412,12 @@ inline std::string::size_type RegularExpression::end(int n) const
  */
  */
 inline std::string RegularExpression::match(int n) const
 inline std::string RegularExpression::match(int n) const
 {
 {
-  if (this->startp[n]==0)
-    {
+  if (this->startp[n] == 0) {
     return std::string("");
     return std::string("");
-    }
-  else
-    {
-    return std::string(this->startp[n],
-                             static_cast<std::string::size_type>(
-                               this->endp[n] - this->startp[n]));
-    }
+  } else {
+    return std::string(this->startp[n], static_cast<std::string::size_type>(
+                                          this->endp[n] - this->startp[n]));
+  }
 }
 }
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@

文件差異過大導致無法顯示
+ 270 - 316
SharedForward.h.in


+ 41 - 56
String.c

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifdef KWSYS_STRING_C
 #ifdef KWSYS_STRING_C
 /*
 /*
 All code in this source file is conditionally compiled to work-around
 All code in this source file is conditionally compiled to work-around
@@ -23,53 +14,49 @@ condition blocks the compiler from seeing the symbols defined here.
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "String.h.in"
+#include "String.h.in"
 #endif
 #endif
 
 
 /* Select an implementation for strcasecmp.  */
 /* Select an implementation for strcasecmp.  */
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# define KWSYS_STRING_USE_STRICMP
-# include <string.h>
+#define KWSYS_STRING_USE_STRICMP
+#include <string.h>
 #elif defined(__GNUC__)
 #elif defined(__GNUC__)
-# define KWSYS_STRING_USE_STRCASECMP
-# include <strings.h>
+#define KWSYS_STRING_USE_STRCASECMP
+#include <strings.h>
 #else
 #else
 /* Table to convert upper case letters to lower case and leave all
 /* Table to convert upper case letters to lower case and leave all
    other characters alone.  */
    other characters alone.  */
-static char kwsysString_strcasecmp_tolower[] =
-{
-  '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
-  '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
-  '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
-  '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
-  '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
-  '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
-  '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
-  '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
-  '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
-  '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
-  '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
-  '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
-  '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
-  '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
-  '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
-  '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
-  '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
-  '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
-  '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
-  '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
-  '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
-  '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
-  '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
-  '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
-  '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
-  '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
-  '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
-  '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
-  '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
-  '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
-  '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
-  '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377'
+static char kwsysString_strcasecmp_tolower[] = {
+  '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010',
+  '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021',
+  '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032',
+  '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043',
+  '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054',
+  '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065',
+  '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076',
+  '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
+  '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160',
+  '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171',
+  '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142',
+  '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153',
+  '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164',
+  '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175',
+  '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206',
+  '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
+  '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230',
+  '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241',
+  '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252',
+  '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263',
+  '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274',
+  '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305',
+  '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316',
+  '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
+  '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\340',
+  '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351',
+  '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362',
+  '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373',
+  '\374', '\375', '\376', '\377'
 };
 };
 #endif
 #endif
 
 
@@ -85,9 +72,8 @@ int kwsysString_strcasecmp(const char* lhs, const char* rhs)
   unsigned char const* us1 = (unsigned char const*)lhs;
   unsigned char const* us1 = (unsigned char const*)lhs;
   unsigned char const* us2 = (unsigned char const*)rhs;
   unsigned char const* us2 = (unsigned char const*)rhs;
   int result;
   int result;
-  while((result = lower[*us1] - lower[*us2++], result == 0) && *us1++)
-    {
-    }
+  while ((result = lower[*us1] - lower[*us2++], result == 0) && *us1++) {
+  }
   return result;
   return result;
 #endif
 #endif
 }
 }
@@ -104,10 +90,9 @@ int kwsysString_strncasecmp(const char* lhs, const char* rhs, size_t n)
   unsigned char const* us1 = (unsigned char const*)lhs;
   unsigned char const* us1 = (unsigned char const*)lhs;
   unsigned char const* us2 = (unsigned char const*)rhs;
   unsigned char const* us2 = (unsigned char const*)rhs;
   int result = 0;
   int result = 0;
-  while(n && (result = lower[*us1] - lower[*us2++], result == 0) && *us1++)
-    {
+  while (n && (result = lower[*us1] - lower[*us2++], result == 0) && *us1++) {
     --n;
     --n;
-    }
+  }
   return result;
   return result;
 #endif
 #endif
 }
 }

+ 13 - 23
String.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_String_h
 #ifndef @KWSYS_NAMESPACE@_String_h
 #define @KWSYS_NAMESPACE@_String_h
 #define @KWSYS_NAMESPACE@_String_h
 
 
@@ -21,17 +12,16 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysString_strcasecmp                kwsys_ns(String_strcasecmp)
-# define kwsysString_strncasecmp               kwsys_ns(String_strncasecmp)
+#define kwsysString_strcasecmp kwsys_ns(String_strcasecmp)
+#define kwsysString_strncasecmp kwsys_ns(String_strncasecmp)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
@@ -56,12 +46,12 @@ kwsysEXPORT int kwsysString_strncasecmp(const char* lhs, const char* rhs,
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysString_strcasecmp
-#  undef kwsysString_strncasecmp
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysString_strcasecmp
+#undef kwsysString_strncasecmp
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 31 - 31
String.hxx.in

@@ -1,21 +1,11 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_String_hxx
 #ifndef @KWSYS_NAMESPACE@_String_hxx
 #define @KWSYS_NAMESPACE@_String_hxx
 #define @KWSYS_NAMESPACE@_String_hxx
 
 
 #include <string>
 #include <string>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 /** \class String
 /** \class String
  * \brief Short-name version of the STL basic_string class template.
  * \brief Short-name version of the STL basic_string class template.
@@ -25,39 +15,49 @@ namespace @KWSYS_NAMESPACE@
  * simply a subclass of this type with the same interface so that the
  * simply a subclass of this type with the same interface so that the
  * name is shorter in debugging symbols and error messages.
  * name is shorter in debugging symbols and error messages.
  */
  */
-class String: public std::string
+class String : public std::string
 {
 {
   /** The original string type.  */
   /** The original string type.  */
   typedef std::string stl_string;
   typedef std::string stl_string;
 
 
 public:
 public:
-
   /** String member types.  */
   /** String member types.  */
-  typedef stl_string::value_type             value_type;
-  typedef stl_string::pointer                pointer;
-  typedef stl_string::reference              reference;
-  typedef stl_string::const_reference        const_reference;
-  typedef stl_string::size_type              size_type;
-  typedef stl_string::difference_type        difference_type;
-  typedef stl_string::iterator               iterator;
-  typedef stl_string::const_iterator         const_iterator;
-  typedef stl_string::reverse_iterator       reverse_iterator;
+  typedef stl_string::value_type value_type;
+  typedef stl_string::pointer pointer;
+  typedef stl_string::reference reference;
+  typedef stl_string::const_reference const_reference;
+  typedef stl_string::size_type size_type;
+  typedef stl_string::difference_type difference_type;
+  typedef stl_string::iterator iterator;
+  typedef stl_string::const_iterator const_iterator;
+  typedef stl_string::reverse_iterator reverse_iterator;
   typedef stl_string::const_reverse_iterator const_reverse_iterator;
   typedef stl_string::const_reverse_iterator const_reverse_iterator;
 
 
   /** String constructors.  */
   /** String constructors.  */
-  String(): stl_string() {}
-  String(const value_type* s): stl_string(s) {}
-  String(const value_type* s, size_type n): stl_string(s, n) {}
-  String(const stl_string& s, size_type pos=0, size_type n=npos):
-    stl_string(s, pos, n) {}
+  String()
+    : stl_string()
+  {
+  }
+  String(const value_type* s)
+    : stl_string(s)
+  {
+  }
+  String(const value_type* s, size_type n)
+    : stl_string(s, n)
+  {
+  }
+  String(const stl_string& s, size_type pos = 0, size_type n = npos)
+    : stl_string(s, pos, n)
+  {
+  }
 }; // End Class: String
 }; // End Class: String
 
 
 #if defined(__WATCOMC__)
 #if defined(__WATCOMC__)
 inline bool operator<(String const& l, String const& r)
 inline bool operator<(String const& l, String const& r)
-  {
+{
   return (static_cast<std::string const&>(l) <
   return (static_cast<std::string const&>(l) <
           static_cast<std::string const&>(r));
           static_cast<std::string const&>(r));
-  }
+}
 #endif
 #endif
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@

+ 80 - 141
System.c

@@ -1,27 +1,18 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(System.h)
 #include KWSYS_HEADER(System.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "System.h.in"
+#include "System.h.in"
 #endif
 #endif
 
 
+#include <ctype.h>  /* isspace */
 #include <stddef.h> /* ptrdiff_t */
 #include <stddef.h> /* ptrdiff_t */
 #include <stdlib.h> /* malloc, free */
 #include <stdlib.h> /* malloc, free */
 #include <string.h> /* memcpy */
 #include <string.h> /* memcpy */
-#include <ctype.h>  /* isspace */
 
 
 #include <stdio.h>
 #include <stdio.h>
 
 
@@ -32,28 +23,24 @@ typedef int kwsysSystem_ptrdiff_t;
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
-static int kwsysSystem__AppendByte(char* local,
-                                   char** begin, char** end,
+static int kwsysSystem__AppendByte(char* local, char** begin, char** end,
                                    int* size, char c)
                                    int* size, char c)
 {
 {
   /* Allocate space for the character.  */
   /* Allocate space for the character.  */
-  if((*end - *begin) >= *size)
-    {
+  if ((*end - *begin) >= *size) {
     kwsysSystem_ptrdiff_t length = *end - *begin;
     kwsysSystem_ptrdiff_t length = *end - *begin;
-    char* newBuffer = (char*)malloc((size_t)(*size*2));
-    if(!newBuffer)
-      {
+    char* newBuffer = (char*)malloc((size_t)(*size * 2));
+    if (!newBuffer) {
       return 0;
       return 0;
-      }
-    memcpy(newBuffer, *begin, (size_t)(length)*sizeof(char));
-    if(*begin != local)
-      {
+    }
+    memcpy(newBuffer, *begin, (size_t)(length) * sizeof(char));
+    if (*begin != local) {
       free(*begin);
       free(*begin);
-      }
+    }
     *begin = newBuffer;
     *begin = newBuffer;
     *end = *begin + length;
     *end = *begin + length;
     *size *= 2;
     *size *= 2;
-    }
+  }
 
 
   /* Store the character.  */
   /* Store the character.  */
   *(*end)++ = c;
   *(*end)++ = c;
@@ -61,47 +48,41 @@ static int kwsysSystem__AppendByte(char* local,
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
-static int kwsysSystem__AppendArgument(char** local,
-                                       char*** begin, char*** end,
-                                       int* size,
-                                       char* arg_local,
+static int kwsysSystem__AppendArgument(char** local, char*** begin,
+                                       char*** end, int* size, char* arg_local,
                                        char** arg_begin, char** arg_end,
                                        char** arg_begin, char** arg_end,
                                        int* arg_size)
                                        int* arg_size)
 {
 {
   /* Append a null-terminator to the argument string.  */
   /* Append a null-terminator to the argument string.  */
-  if(!kwsysSystem__AppendByte(arg_local, arg_begin, arg_end, arg_size, '\0'))
-    {
+  if (!kwsysSystem__AppendByte(arg_local, arg_begin, arg_end, arg_size,
+                               '\0')) {
     return 0;
     return 0;
-    }
+  }
 
 
   /* Allocate space for the argument pointer.  */
   /* Allocate space for the argument pointer.  */
-  if((*end - *begin) >= *size)
-    {
+  if ((*end - *begin) >= *size) {
     kwsysSystem_ptrdiff_t length = *end - *begin;
     kwsysSystem_ptrdiff_t length = *end - *begin;
-    char** newPointers = (char**)malloc((size_t)(*size)*2*sizeof(char*));
-    if(!newPointers)
-      {
+    char** newPointers = (char**)malloc((size_t)(*size) * 2 * sizeof(char*));
+    if (!newPointers) {
       return 0;
       return 0;
-      }
-    memcpy(newPointers, *begin, (size_t)(length)*sizeof(char*));
-    if(*begin != local)
-      {
+    }
+    memcpy(newPointers, *begin, (size_t)(length) * sizeof(char*));
+    if (*begin != local) {
       free(*begin);
       free(*begin);
-      }
+    }
     *begin = newPointers;
     *begin = newPointers;
     *end = *begin + length;
     *end = *begin + length;
     *size *= 2;
     *size *= 2;
-    }
+  }
 
 
   /* Allocate space for the argument string.  */
   /* Allocate space for the argument string.  */
   **end = (char*)malloc((size_t)(*arg_end - *arg_begin));
   **end = (char*)malloc((size_t)(*arg_end - *arg_begin));
-  if(!**end)
-    {
+  if (!**end) {
     return 0;
     return 0;
-    }
+  }
 
 
   /* Store the argument in the command array.  */
   /* Store the argument in the command array.  */
-  memcpy(**end, *arg_begin,(size_t)(*arg_end - *arg_begin));
+  memcpy(**end, *arg_begin, (size_t)(*arg_end - *arg_begin));
   ++(*end);
   ++(*end);
 
 
   /* Reset the argument to be empty.  */
   /* Reset the argument to be empty.  */
@@ -135,150 +116,109 @@ static char** kwsysSystem__ParseUnixCommand(const char* command, int flags)
   int in_single = 0;
   int in_single = 0;
   int in_double = 0;
   int in_double = 0;
   int failed = 0;
   int failed = 0;
-  for(;*c; ++c)
-    {
-    if(in_escape)
-      {
+  for (; *c; ++c) {
+    if (in_escape) {
       /* This character is escaped so do no special handling.  */
       /* This character is escaped so do no special handling.  */
-      if(!in_argument)
-        {
+      if (!in_argument) {
         in_argument = 1;
         in_argument = 1;
-        }
-      if(!kwsysSystem__AppendByte(local_buffer, &buffer_begin,
-                                  &buffer_end, &buffer_size, *c))
-        {
+      }
+      if (!kwsysSystem__AppendByte(local_buffer, &buffer_begin, &buffer_end,
+                                   &buffer_size, *c)) {
         failed = 1;
         failed = 1;
         break;
         break;
-        }
-      in_escape = 0;
       }
       }
-    else if(*c == '\\')
-      {
+      in_escape = 0;
+    } else if (*c == '\\') {
       /* The next character should be escaped.  */
       /* The next character should be escaped.  */
       in_escape = 1;
       in_escape = 1;
-      }
-    else if(*c == '\'' && !in_double)
-      {
+    } else if (*c == '\'' && !in_double) {
       /* Enter or exit single-quote state.  */
       /* Enter or exit single-quote state.  */
-      if(in_single)
-        {
+      if (in_single) {
         in_single = 0;
         in_single = 0;
-        }
-      else
-        {
+      } else {
         in_single = 1;
         in_single = 1;
-        if(!in_argument)
-          {
+        if (!in_argument) {
           in_argument = 1;
           in_argument = 1;
-          }
         }
         }
       }
       }
-    else if(*c == '"' && !in_single)
-      {
+    } else if (*c == '"' && !in_single) {
       /* Enter or exit double-quote state.  */
       /* Enter or exit double-quote state.  */
-      if(in_double)
-        {
+      if (in_double) {
         in_double = 0;
         in_double = 0;
-        }
-      else
-        {
+      } else {
         in_double = 1;
         in_double = 1;
-        if(!in_argument)
-          {
+        if (!in_argument) {
           in_argument = 1;
           in_argument = 1;
-          }
         }
         }
       }
       }
-    else if(isspace((unsigned char) *c))
-      {
-      if(in_argument)
-        {
-        if(in_single || in_double)
-          {
+    } else if (isspace((unsigned char)*c)) {
+      if (in_argument) {
+        if (in_single || in_double) {
           /* This space belongs to a quoted argument.  */
           /* This space belongs to a quoted argument.  */
-          if(!kwsysSystem__AppendByte(local_buffer, &buffer_begin,
-                                      &buffer_end, &buffer_size, *c))
-            {
+          if (!kwsysSystem__AppendByte(local_buffer, &buffer_begin,
+                                       &buffer_end, &buffer_size, *c)) {
             failed = 1;
             failed = 1;
             break;
             break;
-            }
           }
           }
-        else
-          {
+        } else {
           /* This argument has been terminated by whitespace.  */
           /* This argument has been terminated by whitespace.  */
-          if(!kwsysSystem__AppendArgument(local_pointers, &pointer_begin,
-                                          &pointer_end, &pointers_size,
-                                          local_buffer, &buffer_begin,
-                                          &buffer_end, &buffer_size))
-            {
+          if (!kwsysSystem__AppendArgument(
+                local_pointers, &pointer_begin, &pointer_end, &pointers_size,
+                local_buffer, &buffer_begin, &buffer_end, &buffer_size)) {
             failed = 1;
             failed = 1;
             break;
             break;
-            }
-          in_argument = 0;
           }
           }
+          in_argument = 0;
         }
         }
       }
       }
-    else
-      {
+    } else {
       /* This character belong to an argument.  */
       /* This character belong to an argument.  */
-      if(!in_argument)
-        {
+      if (!in_argument) {
         in_argument = 1;
         in_argument = 1;
-        }
-      if(!kwsysSystem__AppendByte(local_buffer, &buffer_begin,
-                                  &buffer_end, &buffer_size, *c))
-        {
+      }
+      if (!kwsysSystem__AppendByte(local_buffer, &buffer_begin, &buffer_end,
+                                   &buffer_size, *c)) {
         failed = 1;
         failed = 1;
         break;
         break;
-        }
       }
       }
     }
     }
+  }
 
 
   /* Finish the last argument.  */
   /* Finish the last argument.  */
-  if(in_argument)
-    {
-    if(!kwsysSystem__AppendArgument(local_pointers, &pointer_begin,
-                                    &pointer_end, &pointers_size,
-                                    local_buffer, &buffer_begin,
-                                    &buffer_end, &buffer_size))
-      {
+  if (in_argument) {
+    if (!kwsysSystem__AppendArgument(
+          local_pointers, &pointer_begin, &pointer_end, &pointers_size,
+          local_buffer, &buffer_begin, &buffer_end, &buffer_size)) {
       failed = 1;
       failed = 1;
-      }
     }
     }
+  }
 
 
   /* If we still have memory allocate space for the new command
   /* If we still have memory allocate space for the new command
      buffer.  */
      buffer.  */
-  if(!failed)
-    {
+  if (!failed) {
     kwsysSystem_ptrdiff_t n = pointer_end - pointer_begin;
     kwsysSystem_ptrdiff_t n = pointer_end - pointer_begin;
-    newCommand = (char**)malloc((size_t)(n+1)*sizeof(char*));
-    }
+    newCommand = (char**)malloc((size_t)(n + 1) * sizeof(char*));
+  }
 
 
-  if(newCommand)
-    {
+  if (newCommand) {
     /* Copy the arguments into the new command buffer.  */
     /* Copy the arguments into the new command buffer.  */
     kwsysSystem_ptrdiff_t n = pointer_end - pointer_begin;
     kwsysSystem_ptrdiff_t n = pointer_end - pointer_begin;
-    memcpy(newCommand, pointer_begin, sizeof(char*)*(size_t)(n));
+    memcpy(newCommand, pointer_begin, sizeof(char*) * (size_t)(n));
     newCommand[n] = 0;
     newCommand[n] = 0;
-    }
-  else
-    {
+  } else {
     /* Free arguments already allocated.  */
     /* Free arguments already allocated.  */
-    while(pointer_end != pointer_begin)
-      {
+    while (pointer_end != pointer_begin) {
       free(*(--pointer_end));
       free(*(--pointer_end));
-      }
     }
     }
+  }
 
 
   /* Free temporary buffers.  */
   /* Free temporary buffers.  */
-  if(pointer_begin != local_pointers)
-    {
+  if (pointer_begin != local_pointers) {
     free(pointer_begin);
     free(pointer_begin);
-    }
-  if(buffer_begin != local_buffer)
-    {
+  }
+  if (buffer_begin != local_buffer) {
     free(buffer_begin);
     free(buffer_begin);
-    }
+  }
 
 
   /* The flags argument is currently unused.  */
   /* The flags argument is currently unused.  */
   (void)flags;
   (void)flags;
@@ -291,10 +231,9 @@ static char** kwsysSystem__ParseUnixCommand(const char* command, int flags)
 char** kwsysSystem_Parse_CommandForUnix(const char* command, int flags)
 char** kwsysSystem_Parse_CommandForUnix(const char* command, int flags)
 {
 {
   /* Validate the flags.  */
   /* Validate the flags.  */
-  if(flags != 0)
-    {
+  if (flags != 0) {
     return 0;
     return 0;
-    }
+  }
 
 
   /* Forward to our internal implementation.  */
   /* Forward to our internal implementation.  */
   return kwsysSystem__ParseUnixCommand(command, flags);
   return kwsysSystem__ParseUnixCommand(command, flags);

+ 11 - 21
System.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_System_h
 #ifndef @KWSYS_NAMESPACE@_System_h
 #define @KWSYS_NAMESPACE@_System_h
 #define @KWSYS_NAMESPACE@_System_h
 
 
@@ -19,16 +10,15 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysSystem_Parse_CommandForUnix             kwsys_ns(System_Parse_CommandForUnix)
+#define kwsysSystem_Parse_CommandForUnix kwsys_ns(System_Parse_CommandForUnix)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
@@ -59,11 +49,11 @@ kwsysEXPORT char** kwsysSystem_Parse_CommandForUnix(const char* command,
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysSystem_Parse_CommandForUnix
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysSystem_Parse_CommandForUnix
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

文件差異過大導致無法顯示
+ 343 - 392
SystemInformation.cxx


+ 24 - 37
SystemInformation.hxx.in

@@ -1,23 +1,14 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_SystemInformation_h
 #ifndef @KWSYS_NAMESPACE@_SystemInformation_h
 #define @KWSYS_NAMESPACE@_SystemInformation_h
 #define @KWSYS_NAMESPACE@_SystemInformation_h
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
+
 #include <stddef.h> /* size_t */
 #include <stddef.h> /* size_t */
 #include <string>
 #include <string>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 // forward declare the implementation class
 // forward declare the implementation class
 class SystemInformationImplementation;
 class SystemInformationImplementation;
@@ -29,24 +20,24 @@ class @KWSYS_NAMESPACE@_EXPORT SystemInformation
 #elif @KWSYS_USE___INT64@
 #elif @KWSYS_USE___INT64@
   typedef __int64 LongLong;
   typedef __int64 LongLong;
 #else
 #else
-# error "No Long Long"
+#error "No Long Long"
 #endif
 #endif
   friend class SystemInformationImplementation;
   friend class SystemInformationImplementation;
   SystemInformationImplementation* Implementation;
   SystemInformationImplementation* Implementation;
-public:
 
 
-  SystemInformation ();
-  ~SystemInformation ();
+public:
+  SystemInformation();
+  ~SystemInformation();
 
 
-  const char * GetVendorString();
-  const char * GetVendorID();
+  const char* GetVendorString();
+  const char* GetVendorID();
   std::string GetTypeID();
   std::string GetTypeID();
   std::string GetFamilyID();
   std::string GetFamilyID();
   std::string GetModelID();
   std::string GetModelID();
   std::string GetModelName();
   std::string GetModelName();
   std::string GetSteppingCode();
   std::string GetSteppingCode();
-  const char * GetExtendedProcessorName();
-  const char * GetProcessorSerialNumber();
+  const char* GetExtendedProcessorName();
+  const char* GetProcessorSerialNumber();
   int GetProcessorCacheSize();
   int GetProcessorCacheSize();
   unsigned int GetLogicalProcessorsPerPhysical();
   unsigned int GetLogicalProcessorsPerPhysical();
   float GetProcessorClockFrequency();
   float GetProcessorClockFrequency();
@@ -58,13 +49,13 @@ public:
   // on this system.
   // on this system.
   std::string GetCPUDescription();
   std::string GetCPUDescription();
 
 
-  const char * GetHostname();
+  const char* GetHostname();
   std::string GetFullyQualifiedDomainName();
   std::string GetFullyQualifiedDomainName();
 
 
-  const char * GetOSName();
-  const char * GetOSRelease();
-  const char * GetOSVersion();
-  const char * GetOSPlatform();
+  const char* GetOSName();
+  const char* GetOSRelease();
+  const char* GetOSVersion();
+  const char* GetOSPlatform();
 
 
   int GetOSIsWindows();
   int GetOSIsWindows();
   int GetOSIsLinux();
   int GetOSIsLinux();
@@ -93,9 +84,8 @@ public:
   // returns an informative general description if the installed and
   // returns an informative general description if the installed and
   // available ram on this system. See the  GetHostMmeoryTotal, and
   // available ram on this system. See the  GetHostMmeoryTotal, and
   // Get{Host,Proc}MemoryAvailable methods for more information.
   // Get{Host,Proc}MemoryAvailable methods for more information.
-  std::string GetMemoryDescription(
-        const char *hostLimitEnvVarName=NULL,
-        const char *procLimitEnvVarName=NULL);
+  std::string GetMemoryDescription(const char* hostLimitEnvVarName = NULL,
+                                   const char* procLimitEnvVarName = NULL);
 
 
   // Retrieve amount of physical memory installed on the system in KiB
   // Retrieve amount of physical memory installed on the system in KiB
   // units.
   // units.
@@ -107,7 +97,7 @@ public:
   // parallel. The amount of memory reported may differ from the host
   // parallel. The amount of memory reported may differ from the host
   // total if a host wide resource limit is applied. Such reource limits
   // total if a host wide resource limit is applied. Such reource limits
   // are reported to us via an applicaiton specified environment variable.
   // are reported to us via an applicaiton specified environment variable.
-  LongLong GetHostMemoryAvailable(const char *hostLimitEnvVarName=NULL);
+  LongLong GetHostMemoryAvailable(const char* hostLimitEnvVarName = NULL);
 
 
   // Get total system RAM in units of KiB available to this process.
   // Get total system RAM in units of KiB available to this process.
   // This may differ from the host available if a per-process resource
   // This may differ from the host available if a per-process resource
@@ -115,9 +105,8 @@ public:
   // system via rlimit API. Resource limits that are not imposed via
   // system via rlimit API. Resource limits that are not imposed via
   // rlimit API may be reported to us via an application specified
   // rlimit API may be reported to us via an application specified
   // environment variable.
   // environment variable.
-  LongLong GetProcMemoryAvailable(
-        const char *hostLimitEnvVarName=NULL,
-        const char *procLimitEnvVarName=NULL);
+  LongLong GetProcMemoryAvailable(const char* hostLimitEnvVarName = NULL,
+                                  const char* procLimitEnvVarName = NULL);
 
 
   // Get the system RAM used by all processes on the host, in units of KiB.
   // Get the system RAM used by all processes on the host, in units of KiB.
   LongLong GetHostMemoryUsed();
   LongLong GetHostMemoryUsed();
@@ -132,14 +121,12 @@ public:
   // enable/disable stack trace signal handler. In order to
   // enable/disable stack trace signal handler. In order to
   // produce an informative stack trace the application should
   // produce an informative stack trace the application should
   // be dynamically linked and compiled with debug symbols.
   // be dynamically linked and compiled with debug symbols.
-  static
-  void SetStackTraceOnError(int enable);
+  static void SetStackTraceOnError(int enable);
 
 
   // format and return the current program stack in a string. In
   // format and return the current program stack in a string. In
   // order to produce an informative stack trace the application
   // order to produce an informative stack trace the application
   // should be dynamically linked and compiled with debug symbols.
   // should be dynamically linked and compiled with debug symbols.
-  static
-  std::string GetProgramStack(int firstFrame, int wholePath);
+  static std::string GetProgramStack(int firstFrame, int wholePath);
 
 
   /** Run the different checks */
   /** Run the different checks */
   void RunCPUCheck();
   void RunCPUCheck();

文件差異過大導致無法顯示
+ 262 - 350
SystemTools.cxx


+ 133 - 161
SystemTools.hxx.in

@@ -1,29 +1,20 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_SystemTools_hxx
 #ifndef @KWSYS_NAMESPACE@_SystemTools_hxx
 #define @KWSYS_NAMESPACE@_SystemTools_hxx
 #define @KWSYS_NAMESPACE@_SystemTools_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 
 
 #include <iosfwd>
 #include <iosfwd>
+#include <map>
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
-#include <map>
 
 
 #include <@KWSYS_NAMESPACE@/String.hxx>
 #include <@KWSYS_NAMESPACE@/String.hxx>
 
 
 #include <sys/types.h>
 #include <sys/types.h>
 #if !defined(_WIN32) || defined(__CYGWIN__)
 #if !defined(_WIN32) || defined(__CYGWIN__)
-# include <unistd.h> // For access permissions for use with access()
+#include <unistd.h> // For access permissions for use with access()
 #endif
 #endif
 
 
 // Required for va_list
 // Required for va_list
@@ -36,20 +27,18 @@
 // after stdarg.h does not solve things because we do not have control over
 // after stdarg.h does not solve things because we do not have control over
 // what the user does. This hack solves this problem by moving va_list to our
 // what the user does. This hack solves this problem by moving va_list to our
 // own namespace that is local for kwsys.
 // own namespace that is local for kwsys.
-namespace std {} // Required for platforms that do not have std namespace
-namespace @KWSYS_NAMESPACE@_VA_LIST
-{
-  using namespace std;
-  typedef va_list hack_va_list;
+namespace std {
+} // Required for platforms that do not have std namespace
+namespace @KWSYS_NAMESPACE@_VA_LIST {
+using namespace std;
+typedef va_list hack_va_list;
 }
 }
-namespace @KWSYS_NAMESPACE@
-{
-  typedef @KWSYS_NAMESPACE@_VA_LIST::hack_va_list va_list;
+namespace @KWSYS_NAMESPACE@ {
+typedef @KWSYS_NAMESPACE@_VA_LIST::hack_va_list va_list;
 }
 }
 #endif // va_list
 #endif // va_list
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 class SystemToolsTranslationMap;
 class SystemToolsTranslationMap;
 class SystemToolsPathCaseMap;
 class SystemToolsPathCaseMap;
@@ -76,17 +65,17 @@ static SystemToolsManager SystemToolsManagerInstance;
 // combined using the | operator.
 // combined using the | operator.
 typedef int TestFilePermissions;
 typedef int TestFilePermissions;
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #if defined(_WIN32) && !defined(__CYGWIN__)
-  // On Windows (VC and Borland), no system header defines these constants...
-  static const TestFilePermissions TEST_FILE_OK = 0;
-  static const TestFilePermissions TEST_FILE_READ = 4;
-  static const TestFilePermissions TEST_FILE_WRITE = 2;
-  static const TestFilePermissions TEST_FILE_EXECUTE = 1;
+// On Windows (VC and Borland), no system header defines these constants...
+static const TestFilePermissions TEST_FILE_OK = 0;
+static const TestFilePermissions TEST_FILE_READ = 4;
+static const TestFilePermissions TEST_FILE_WRITE = 2;
+static const TestFilePermissions TEST_FILE_EXECUTE = 1;
 #else
 #else
-  // Standard POSIX constants
-  static const TestFilePermissions TEST_FILE_OK = F_OK;
-  static const TestFilePermissions TEST_FILE_READ = R_OK;
-  static const TestFilePermissions TEST_FILE_WRITE = W_OK;
-  static const TestFilePermissions TEST_FILE_EXECUTE = X_OK;
+// Standard POSIX constants
+static const TestFilePermissions TEST_FILE_OK = F_OK;
+static const TestFilePermissions TEST_FILE_READ = R_OK;
+static const TestFilePermissions TEST_FILE_WRITE = W_OK;
+static const TestFilePermissions TEST_FILE_EXECUTE = X_OK;
 #endif
 #endif
 
 
 /** \class SystemTools
 /** \class SystemTools
@@ -95,7 +84,6 @@ typedef int TestFilePermissions;
 class @KWSYS_NAMESPACE@_EXPORT SystemTools
 class @KWSYS_NAMESPACE@_EXPORT SystemTools
 {
 {
 public:
 public:
-
   /** -----------------------------------------------------------------
   /** -----------------------------------------------------------------
    *               String Manipulation Routines
    *               String Manipulation Routines
    *  -----------------------------------------------------------------
    *  -----------------------------------------------------------------
@@ -118,11 +106,9 @@ public:
   /**
   /**
    * Replace replace all occurences of the string in the source string.
    * Replace replace all occurences of the string in the source string.
    */
    */
-  static void ReplaceString(std::string& source,
-                            const char* replace,
+  static void ReplaceString(std::string& source, const char* replace,
                             const char* with);
                             const char* with);
-  static void ReplaceString(std::string& source,
-                            const std::string& replace,
+  static void ReplaceString(std::string& source, const std::string& replace,
                             const std::string& with);
                             const std::string& with);
 
 
   /**
   /**
@@ -162,7 +148,7 @@ public:
    * Remove some characters from a string.
    * Remove some characters from a string.
    * Return a pointer to the new resulting string (allocated with 'new')
    * Return a pointer to the new resulting string (allocated with 'new')
    */
    */
-  static char* RemoveChars(const char* str, const char *toremove);
+  static char* RemoveChars(const char* str, const char* toremove);
 
 
   /**
   /**
    * Remove remove all but 0->9, A->F characters from a string.
    * Remove remove all but 0->9, A->F characters from a string.
@@ -174,7 +160,8 @@ public:
    * Replace some characters by another character in a string (in-place)
    * Replace some characters by another character in a string (in-place)
    * Return a pointer to string
    * Return a pointer to string
    */
    */
-  static char* ReplaceChars(char* str, const char *toreplace,char replacement);
+  static char* ReplaceChars(char* str, const char* toreplace,
+                            char replacement);
 
 
   /**
   /**
    * Returns true if str1 starts (respectively ends) with str2
    * Returns true if str1 starts (respectively ends) with str2
@@ -200,41 +187,42 @@ public:
    * Return the string cropped to a given length by removing chars in the
    * Return the string cropped to a given length by removing chars in the
    * center of the string and replacing them with an ellipsis (...)
    * center of the string and replacing them with an ellipsis (...)
    */
    */
-  static std::string CropString(const std::string&,size_t max_len);
+  static std::string CropString(const std::string&, size_t max_len);
 
 
   /** split a path by separator into an array of strings, default is /.
   /** split a path by separator into an array of strings, default is /.
       If isPath is true then the string is treated like a path and if
       If isPath is true then the string is treated like a path and if
       s starts with a / then the first element of the returned array will
       s starts with a / then the first element of the returned array will
       be /, so /foo/bar will be [/, foo, bar]
       be /, so /foo/bar will be [/, foo, bar]
   */
   */
-  static std::vector<String> SplitString(const std::string& s, char separator = '/',
-                                               bool isPath = false);
+  static std::vector<String> SplitString(const std::string& s,
+                                         char separator = '/',
+                                         bool isPath = false);
   /**
   /**
    * Perform a case-independent string comparison
    * Perform a case-independent string comparison
    */
    */
-  static int Strucmp(const char *s1, const char *s2);
+  static int Strucmp(const char* s1, const char* s2);
 
 
   /**
   /**
    * Convert a string in __DATE__ or __TIMESTAMP__ format into a time_t.
    * Convert a string in __DATE__ or __TIMESTAMP__ format into a time_t.
    * Return false on error, true on success
    * Return false on error, true on success
    */
    */
-  static bool ConvertDateMacroString(const char *str, time_t *tmt);
-  static bool ConvertTimeStampMacroString(const char *str, time_t *tmt);
+  static bool ConvertDateMacroString(const char* str, time_t* tmt);
+  static bool ConvertTimeStampMacroString(const char* str, time_t* tmt);
 
 
   /**
   /**
    * Split a string on its newlines into multiple lines
    * Split a string on its newlines into multiple lines
    * Return false only if the last line stored had no newline
    * Return false only if the last line stored had no newline
    */
    */
   static bool Split(const std::string& s, std::vector<std::string>& l);
   static bool Split(const std::string& s, std::vector<std::string>& l);
-  static bool Split(const std::string& s, std::vector<std::string>& l, char separator);
+  static bool Split(const std::string& s, std::vector<std::string>& l,
+                    char separator);
 
 
   /**
   /**
    * Return string with space added between capitalized words
    * Return string with space added between capitalized words
    * (i.e. EatMyShorts becomes Eat My Shorts )
    * (i.e. EatMyShorts becomes Eat My Shorts )
    * (note that IEatShorts becomes IEat Shorts)
    * (note that IEatShorts becomes IEat Shorts)
    */
    */
-  static std::string AddSpaceBetweenCapitalizedWords(
-    const std::string&);
+  static std::string AddSpaceBetweenCapitalizedWords(const std::string&);
 
 
   /**
   /**
    * Append two or more strings and produce new one.
    * Append two or more strings and produce new one.
@@ -242,10 +230,9 @@ public:
    * with 'new'.
    * with 'new'.
    * Return 0 if inputs are empty or there was an error
    * Return 0 if inputs are empty or there was an error
    */
    */
-  static char* AppendStrings(
-    const char* str1, const char* str2);
-  static char* AppendStrings(
-    const char* str1, const char* str2, const char* str3);
+  static char* AppendStrings(const char* str1, const char* str2);
+  static char* AppendStrings(const char* str1, const char* str2,
+                             const char* str3);
 
 
   /**
   /**
    * Estimate the length of the string that will be produced
    * Estimate the length of the string that will be produced
@@ -256,13 +243,13 @@ public:
    * you will not be able to use this 'ap' anymore from the beginning.
    * you will not be able to use this 'ap' anymore from the beginning.
    * It's up to you to call va_end though.
    * It's up to you to call va_end though.
    */
    */
-  static int EstimateFormatLength(const char *format, va_list ap);
+  static int EstimateFormatLength(const char* format, va_list ap);
 
 
   /**
   /**
    * Escape specific characters in 'str'.
    * Escape specific characters in 'str'.
    */
    */
-  static std::string EscapeChars(
-    const char *str, const char *chars_to_escape, char escape_char = '\\');
+  static std::string EscapeChars(const char* str, const char* chars_to_escape,
+                                 char escape_char = '\\');
 
 
   /** -----------------------------------------------------------------
   /** -----------------------------------------------------------------
    *               Filename Manipulation Routines
    *               Filename Manipulation Routines
@@ -338,13 +325,13 @@ public:
   static bool TestFileAccess(const std::string& filename,
   static bool TestFileAccess(const std::string& filename,
                              TestFilePermissions permissions);
                              TestFilePermissions permissions);
 
 
-  /**
-   * Converts Cygwin path to Win32 path. Uses dictionary container for
-   * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
-   * for actual translation.  Returns true on success, else false.
-   */
+/**
+ * Converts Cygwin path to Win32 path. Uses dictionary container for
+ * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
+ * for actual translation.  Returns true on success, else false.
+ */
 #ifdef __CYGWIN__
 #ifdef __CYGWIN__
-  static bool PathCygwinToWin32(const char *path, char *win32_path);
+  static bool PathCygwinToWin32(const char* path, char* win32_path);
 #endif
 #endif
 
 
   /**
   /**
@@ -363,8 +350,7 @@ public:
    *  When true is returned, result has -1, 0, +1 for
    *  When true is returned, result has -1, 0, +1 for
    *  f1 older, same, or newer than f2.
    *  f1 older, same, or newer than f2.
    */
    */
-  static bool FileTimeCompare(const std::string& f1,
-                              const std::string& f2,
+  static bool FileTimeCompare(const std::string& f1, const std::string& f2,
                               int* result);
                               int* result);
 
 
   /**
   /**
@@ -388,10 +374,8 @@ public:
    * part, the empty string is returned.
    * part, the empty string is returned.
    */
    */
   static std::string GetProgramPath(const std::string&);
   static std::string GetProgramPath(const std::string&);
-  static bool SplitProgramPath(const std::string& in_name,
-                               std::string& dir,
-                               std::string& file,
-                               bool errorReport = true);
+  static bool SplitProgramPath(const std::string& in_name, std::string& dir,
+                               std::string& file, bool errorReport = true);
 
 
   /**
   /**
    *  Given argv[0] for a unix program find the full path to a running
    *  Given argv[0] for a unix program find the full path to a running
@@ -405,10 +389,8 @@ public:
    *  buildDir is a possibly null path to the build directory.
    *  buildDir is a possibly null path to the build directory.
    *  installPrefix is a possibly null pointer to the install directory.
    *  installPrefix is a possibly null pointer to the install directory.
    */
    */
-  static bool FindProgramPath(const char* argv0,
-                              std::string& pathOut,
-                              std::string& errorMsg,
-                              const char* exeName = 0,
+  static bool FindProgramPath(const char* argv0, std::string& pathOut,
+                              std::string& errorMsg, const char* exeName = 0,
                               const char* buildDir = 0,
                               const char* buildDir = 0,
                               const char* installPrefix = 0);
                               const char* installPrefix = 0);
 
 
@@ -420,9 +402,9 @@ public:
    */
    */
   static std::string CollapseFullPath(const std::string& in_relative);
   static std::string CollapseFullPath(const std::string& in_relative);
   static std::string CollapseFullPath(const std::string& in_relative,
   static std::string CollapseFullPath(const std::string& in_relative,
-                                            const char* in_base);
+                                      const char* in_base);
   static std::string CollapseFullPath(const std::string& in_relative,
   static std::string CollapseFullPath(const std::string& in_relative,
-                                            const std::string& in_base);
+                                      const std::string& in_base);
 
 
   /**
   /**
    * Get the real path for a given path, removing all symlinks.  In
    * Get the real path for a given path, removing all symlinks.  In
@@ -432,7 +414,7 @@ public:
    * contains error description.
    * contains error description.
    */
    */
   static std::string GetRealPath(const std::string& path,
   static std::string GetRealPath(const std::string& path,
-                                       std::string* errorMessage = 0);
+                                 std::string* errorMessage = 0);
 
 
   /**
   /**
    * Split a path name into its root component and the rest of the
    * Split a path name into its root component and the rest of the
@@ -450,7 +432,7 @@ public:
    * given.
    * given.
    */
    */
   static const char* SplitPathRootComponent(const std::string& p,
   static const char* SplitPathRootComponent(const std::string& p,
-                                            std::string* root=0);
+                                            std::string* root = 0);
 
 
   /**
   /**
    * Split a path name into its basic components.  The first component
    * Split a path name into its basic components.  The first component
@@ -470,18 +452,15 @@ public:
    * Join components of a path name into a single string.  See
    * Join components of a path name into a single string.  See
    * SplitPath for the format of the components.
    * SplitPath for the format of the components.
    */
    */
-  static std::string JoinPath(
-    const std::vector<std::string>& components);
-  static std::string JoinPath(
-    std::vector<std::string>::const_iterator first,
-    std::vector<std::string>::const_iterator last);
+  static std::string JoinPath(const std::vector<std::string>& components);
+  static std::string JoinPath(std::vector<std::string>::const_iterator first,
+                              std::vector<std::string>::const_iterator last);
 
 
   /**
   /**
    * Compare a path or components of a path.
    * Compare a path or components of a path.
    */
    */
   static bool ComparePath(const std::string& c1, const std::string& c2);
   static bool ComparePath(const std::string& c1, const std::string& c2);
 
 
-
   /**
   /**
    * Return path of a full filename (no trailing slashes)
    * Return path of a full filename (no trailing slashes)
    */
    */
@@ -495,9 +474,8 @@ public:
   /**
   /**
    * Split a program from its arguments and handle spaces in the paths
    * Split a program from its arguments and handle spaces in the paths
    */
    */
-  static void SplitProgramFromArgs(
-    const std::string& path,
-    std::string& program, std::string& args);
+  static void SplitProgramFromArgs(const std::string& path,
+                                   std::string& program, std::string& args);
 
 
   /**
   /**
    * Return longest file extension of a full filename (dot included)
    * Return longest file extension of a full filename (dot included)
@@ -507,20 +485,17 @@ public:
   /**
   /**
    * Return shortest file extension of a full filename (dot included)
    * Return shortest file extension of a full filename (dot included)
    */
    */
-  static std::string GetFilenameLastExtension(
-    const std::string& filename);
+  static std::string GetFilenameLastExtension(const std::string& filename);
 
 
   /**
   /**
    * Return file name without extension of a full filename
    * Return file name without extension of a full filename
    */
    */
-  static std::string GetFilenameWithoutExtension(
-    const std::string&);
+  static std::string GetFilenameWithoutExtension(const std::string&);
 
 
   /**
   /**
    * Return file name without its last (shortest) extension
    * Return file name without its last (shortest) extension
    */
    */
-  static std::string GetFilenameWithoutLastExtension(
-    const std::string&);
+  static std::string GetFilenameWithoutLastExtension(const std::string&);
 
 
   /**
   /**
    * Return whether the path represents a full path (not relative)
    * Return whether the path represents a full path (not relative)
@@ -541,10 +516,8 @@ public:
    * end-of-file was reached. If the has_newline argument is specified, it will
    * end-of-file was reached. If the has_newline argument is specified, it will
    * be true when the line read had a newline character.
    * be true when the line read had a newline character.
    */
    */
-  static bool GetLineFromStream(std::istream& istr,
-                                std::string& line,
-                                bool* has_newline=0,
-                                long sizeLimit=-1);
+  static bool GetLineFromStream(std::istream& istr, std::string& line,
+                                bool* has_newline = 0, long sizeLimit = -1);
 
 
   /**
   /**
    * Get the parent directory of the directory or file
    * Get the parent directory of the directory or file
@@ -554,7 +527,8 @@ public:
   /**
   /**
    * Check if the given file or directory is in subdirectory of dir
    * Check if the given file or directory is in subdirectory of dir
    */
    */
-  static bool IsSubDirectory(const std::string& fileOrDir, const std::string& dir);
+  static bool IsSubDirectory(const std::string& fileOrDir,
+                             const std::string& dir);
 
 
   /** -----------------------------------------------------------------
   /** -----------------------------------------------------------------
    *               File Manipulation Routines
    *               File Manipulation Routines
@@ -584,7 +558,8 @@ public:
   /**
   /**
    * Compare the contents of two files.  Return true if different
    * Compare the contents of two files.  Return true if different
    */
    */
-  static bool FilesDiffer(const std::string& source, const std::string& destination);
+  static bool FilesDiffer(const std::string& source,
+                          const std::string& destination);
 
 
   /**
   /**
    * Return true if the two files are the same file
    * Return true if the two files are the same file
@@ -594,15 +569,16 @@ public:
   /**
   /**
    * Copy a file.
    * Copy a file.
    */
    */
-  static bool CopyFileAlways(const std::string& source, const std::string& destination);
+  static bool CopyFileAlways(const std::string& source,
+                             const std::string& destination);
 
 
   /**
   /**
    * Copy a file.  If the "always" argument is true the file is always
    * Copy a file.  If the "always" argument is true the file is always
    * copied.  If it is false, the file is copied only if it is new or
    * copied.  If it is false, the file is copied only if it is new or
    * has changed.
    * has changed.
    */
    */
-  static bool CopyAFile(const std::string& source, const std::string& destination,
-                        bool always = true);
+  static bool CopyAFile(const std::string& source,
+                        const std::string& destination, bool always = true);
 
 
   /**
   /**
    * Copy content directory to another directory with all files and
    * Copy content directory to another directory with all files and
@@ -610,7 +586,8 @@ public:
    * always copied.  If it is false, only files that have changed or
    * always copied.  If it is false, only files that have changed or
    * are new are copied.
    * are new are copied.
    */
    */
-  static bool CopyADirectory(const std::string& source, const std::string& destination,
+  static bool CopyADirectory(const std::string& source,
+                             const std::string& destination,
                              bool always = true);
                              bool always = true);
 
 
   /**
   /**
@@ -633,8 +610,7 @@ public:
    */
    */
   static std::string FindFile(
   static std::string FindFile(
     const std::string& name,
     const std::string& name,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
 
 
   /**
   /**
@@ -642,8 +618,7 @@ public:
    */
    */
   static std::string FindDirectory(
   static std::string FindDirectory(
     const std::string& name,
     const std::string& name,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
 
 
   /**
   /**
@@ -651,26 +626,22 @@ public:
    */
    */
   static std::string FindProgram(
   static std::string FindProgram(
     const char* name,
     const char* name,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
   static std::string FindProgram(
   static std::string FindProgram(
     const std::string& name,
     const std::string& name,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
   static std::string FindProgram(
   static std::string FindProgram(
     const std::vector<std::string>& names,
     const std::vector<std::string>& names,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
 
 
   /**
   /**
    * Find a library in the system PATH, with optional extra paths
    * Find a library in the system PATH, with optional extra paths
    */
    */
-  static std::string FindLibrary(
-    const std::string& name,
-    const std::vector<std::string>& path);
+  static std::string FindLibrary(const std::string& name,
+                                 const std::vector<std::string>& path);
 
 
   /**
   /**
    * Return true if the file is a directory
    * Return true if the file is a directory
@@ -685,8 +656,8 @@ public:
   /**
   /**
    * Return true if the file has a given signature (first set of bytes)
    * Return true if the file has a given signature (first set of bytes)
    */
    */
-  static bool FileHasSignature(
-    const char* filename, const char *signature, long offset = 0);
+  static bool FileHasSignature(const char* filename, const char* signature,
+                               long offset = 0);
 
 
   /**
   /**
    * Attempt to detect and return the type of a file.
    * Attempt to detect and return the type of a file.
@@ -703,16 +674,16 @@ public:
     FileTypeBinary,
     FileTypeBinary,
     FileTypeText
     FileTypeText
   };
   };
-  static SystemTools::FileTypeEnum DetectFileType(
-    const char* filename,
-    unsigned long length = 256,
-    double percent_bin = 0.05);
+  static SystemTools::FileTypeEnum DetectFileType(const char* filename,
+                                                  unsigned long length = 256,
+                                                  double percent_bin = 0.05);
 
 
   /**
   /**
    * Create a symbolic link if the platform supports it.  Returns whether
    * Create a symbolic link if the platform supports it.  Returns whether
    * creation succeeded.
    * creation succeeded.
    */
    */
-  static bool CreateSymlink(const std::string& origName, const std::string& newName);
+  static bool CreateSymlink(const std::string& origName,
+                            const std::string& newName);
 
 
   /**
   /**
    * Read the contents of a symbolic link.  Returns whether reading
    * Read the contents of a symbolic link.  Returns whether reading
@@ -735,8 +706,7 @@ public:
    * etc.
    * etc.
    * Return true if the file was found, false otherwise.
    * Return true if the file was found, false otherwise.
    */
    */
-  static bool LocateFileInDir(const char *filename,
-                              const char *dir,
+  static bool LocateFileInDir(const char* filename, const char* dir,
                               std::string& filename_found,
                               std::string& filename_found,
                               int try_filename_dirs = 0);
                               int try_filename_dirs = 0);
 
 
@@ -748,7 +718,8 @@ public:
       /a/b/c/d to /a/b/c1/d1 -> ../../c1/d1
       /a/b/c/d to /a/b/c1/d1 -> ../../c1/d1
       from /usr/src to /usr/src/test/blah/foo.cpp -> test/blah/foo.cpp
       from /usr/src to /usr/src/test/blah/foo.cpp -> test/blah/foo.cpp
   */
   */
-  static std::string RelativePath(const std::string& local, const std::string& remote);
+  static std::string RelativePath(const std::string& local,
+                                  const std::string& remote);
 
 
   /**
   /**
    * Return file's modified time
    * Return file's modified time
@@ -760,12 +731,12 @@ public:
    */
    */
   static long int CreationTime(const std::string& filename);
   static long int CreationTime(const std::string& filename);
 
 
-  /**
-   * Visual C++ does not define mode_t (note that Borland does, however).
-   */
-  #if defined( _MSC_VER )
+/**
+ * Visual C++ does not define mode_t (note that Borland does, however).
+ */
+#if defined(_MSC_VER)
   typedef unsigned short mode_t;
   typedef unsigned short mode_t;
-  #endif
+#endif
 
 
   /**
   /**
    * Get and set permissions of the file.  If honor_umask is set, the umask
    * Get and set permissions of the file.  If honor_umask is set, the umask
@@ -777,8 +748,10 @@ public:
    */
    */
   static bool GetPermissions(const char* file, mode_t& mode);
   static bool GetPermissions(const char* file, mode_t& mode);
   static bool GetPermissions(const std::string& file, mode_t& mode);
   static bool GetPermissions(const std::string& file, mode_t& mode);
-  static bool SetPermissions(const char* file, mode_t mode, bool honor_umask = false);
-  static bool SetPermissions(const std::string& file, mode_t mode, bool honor_umask = false);
+  static bool SetPermissions(const char* file, mode_t mode,
+                             bool honor_umask = false);
+  static bool SetPermissions(const std::string& file, mode_t mode,
+                             bool honor_umask = false);
 
 
   /** -----------------------------------------------------------------
   /** -----------------------------------------------------------------
    *               Time Manipulation Routines
    *               Time Manipulation Routines
@@ -803,7 +776,12 @@ public:
    * registry values.  The default is to match the currently running
    * registry values.  The default is to match the currently running
    * binary type.
    * binary type.
    */
    */
-  enum KeyWOW64 { KeyWOW64_Default, KeyWOW64_32, KeyWOW64_64 };
+  enum KeyWOW64
+  {
+    KeyWOW64_Default,
+    KeyWOW64_32,
+    KeyWOW64_64
+  };
 
 
   /**
   /**
    * Get a list of subkeys.
    * Get a list of subkeys.
@@ -815,13 +793,14 @@ public:
   /**
   /**
    * Read a registry value
    * Read a registry value
    */
    */
-  static bool ReadRegistryValue(const std::string& key, std::string &value,
+  static bool ReadRegistryValue(const std::string& key, std::string& value,
                                 KeyWOW64 view = KeyWOW64_Default);
                                 KeyWOW64 view = KeyWOW64_Default);
 
 
   /**
   /**
    * Write a registry value
    * Write a registry value
    */
    */
-  static bool WriteRegistryValue(const std::string& key, const std::string& value,
+  static bool WriteRegistryValue(const std::string& key,
+                                 const std::string& value,
                                  KeyWOW64 view = KeyWOW64_Default);
                                  KeyWOW64 view = KeyWOW64_Default);
 
 
   /**
   /**
@@ -840,8 +819,7 @@ public:
    *  string vector passed in.  If env is set then the value
    *  string vector passed in.  If env is set then the value
    *  of env will be used instead of PATH.
    *  of env will be used instead of PATH.
    */
    */
-  static void GetPath(std::vector<std::string>& path,
-                      const char* env=0);
+  static void GetPath(std::vector<std::string>& path, const char* env = 0);
 
 
   /**
   /**
    * Read an environment variable
    * Read an environment variable
@@ -864,7 +842,7 @@ public:
   /**
   /**
    * Get current working directory CWD
    * Get current working directory CWD
    */
    */
-  static std::string GetCurrentWorkingDirectory(bool collapse =true);
+  static std::string GetCurrentWorkingDirectory(bool collapse = true);
 
 
   /**
   /**
    * Change directory to the directory specified
    * Change directory to the directory specified
@@ -893,7 +871,8 @@ public:
   /**
   /**
    * Add an entry in the path translation table.
    * Add an entry in the path translation table.
    */
    */
-  static void AddTranslationPath(const std::string& dir, const std::string& refdir);
+  static void AddTranslationPath(const std::string& dir,
+                                 const std::string& refdir);
 
 
   /**
   /**
    * If dir is different after CollapseFullPath is called,
    * If dir is different after CollapseFullPath is called,
@@ -904,7 +883,7 @@ public:
   /**
   /**
    * Update path by going through the Path Translation table;
    * Update path by going through the Path Translation table;
    */
    */
-  static void CheckTranslationPath(std::string & path);
+  static void CheckTranslationPath(std::string& path);
 
 
   /**
   /**
    * Delay the execution for a specified amount of time specified
    * Delay the execution for a specified amount of time specified
@@ -929,9 +908,8 @@ public:
    * and fill protocol as appropriate.
    * and fill protocol as appropriate.
    * Return false if the URL does not have the required form, true otherwise.
    * Return false if the URL does not have the required form, true otherwise.
    */
    */
-   static bool ParseURLProtocol( const std::string& URL,
-                                 std::string& protocol,
-                                 std::string& dataglom );
+  static bool ParseURLProtocol(const std::string& URL, std::string& protocol,
+                               std::string& dataglom);
 
 
   /**
   /**
    * Parse a string (a URL without protocol prefix) with the form:
    * Parse a string (a URL without protocol prefix) with the form:
@@ -940,13 +918,10 @@ public:
    * when values are found.
    * when values are found.
    * Return true if the string matches the format; false otherwise.
    * Return true if the string matches the format; false otherwise.
    */
    */
-  static bool ParseURL( const std::string& URL,
-                        std::string& protocol,
-                        std::string& username,
-                        std::string& password,
-                        std::string& hostname,
-                        std::string& dataport,
-                        std::string& datapath );
+  static bool ParseURL(const std::string& URL, std::string& protocol,
+                       std::string& username, std::string& password,
+                       std::string& hostname, std::string& dataport,
+                       std::string& datapath);
 
 
 private:
 private:
   /**
   /**
@@ -963,17 +938,15 @@ private:
    * This method prevents warning on SGI
    * This method prevents warning on SGI
    */
    */
   SystemToolsManager* GetSystemToolsManager()
   SystemToolsManager* GetSystemToolsManager()
-    {
+  {
     return &SystemToolsManagerInstance;
     return &SystemToolsManagerInstance;
-    }
+  }
 
 
   /**
   /**
    * Actual implementation of ReplaceString.
    * Actual implementation of ReplaceString.
    */
    */
-  static void ReplaceString(std::string& source,
-                            const char* replace,
-                            size_t replaceSize,
-                            const std::string& with);
+  static void ReplaceString(std::string& source, const char* replace,
+                            size_t replaceSize, const std::string& with);
 
 
   /**
   /**
    * Actual implementation of FileIsFullPath.
    * Actual implementation of FileIsFullPath.
@@ -986,8 +959,7 @@ private:
    */
    */
   static std::string FindName(
   static std::string FindName(
     const std::string& name,
     const std::string& name,
-    const std::vector<std::string>& path =
-    std::vector<std::string>(),
+    const std::vector<std::string>& path = std::vector<std::string>(),
     bool no_system_path = false);
     bool no_system_path = false);
 
 
   static const char* GetEnvImpl(const char* key);
   static const char* GetEnvImpl(const char* key);
@@ -996,13 +968,13 @@ private:
    * Path translation table from dir to refdir
    * Path translation table from dir to refdir
    * Each time 'dir' will be found it will be replace by 'refdir'
    * Each time 'dir' will be found it will be replace by 'refdir'
    */
    */
-  static SystemToolsTranslationMap *TranslationMap;
+  static SystemToolsTranslationMap* TranslationMap;
 #ifdef _WIN32
 #ifdef _WIN32
-  static SystemToolsPathCaseMap *PathCaseMap;
-  static SystemToolsEnvMap *EnvMap;
+  static SystemToolsPathCaseMap* PathCaseMap;
+  static SystemToolsEnvMap* EnvMap;
 #endif
 #endif
 #ifdef __CYGWIN__
 #ifdef __CYGWIN__
-  static SystemToolsTranslationMap *Cyg2Win32Map;
+  static SystemToolsTranslationMap* Cyg2Win32Map;
 #endif
 #endif
   friend class SystemToolsManager;
   friend class SystemToolsManager;
 };
 };

+ 140 - 175
Terminal.c

@@ -1,48 +1,39 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Terminal.h)
 #include KWSYS_HEADER(Terminal.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "Terminal.h.in"
+#include "Terminal.h.in"
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Configure support for this platform.  */
 /* Configure support for this platform.  */
 #if defined(_WIN32) || defined(__CYGWIN__)
 #if defined(_WIN32) || defined(__CYGWIN__)
-# define KWSYS_TERMINAL_SUPPORT_CONSOLE
+#define KWSYS_TERMINAL_SUPPORT_CONSOLE
 #endif
 #endif
 #if !defined(_WIN32)
 #if !defined(_WIN32)
-# define KWSYS_TERMINAL_ISATTY_WORKS
+#define KWSYS_TERMINAL_ISATTY_WORKS
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Include needed system APIs.  */
 /* Include needed system APIs.  */
 
 
+#include <stdarg.h> /* va_list */
 #include <stdlib.h> /* getenv */
 #include <stdlib.h> /* getenv */
 #include <string.h> /* strcmp */
 #include <string.h> /* strcmp */
-#include <stdarg.h> /* va_list */
 
 
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
-# include <windows.h> /* SetConsoleTextAttribute */
-# include <io.h>      /* _get_osfhandle */
+#include <io.h>      /* _get_osfhandle */
+#include <windows.h> /* SetConsoleTextAttribute */
 #endif
 #endif
 
 
 #if defined(KWSYS_TERMINAL_ISATTY_WORKS)
 #if defined(KWSYS_TERMINAL_ISATTY_WORKS)
-# include <unistd.h> /* isatty */
+#include <unistd.h> /* isatty */
 #else
 #else
-# include <sys/stat.h> /* fstat */
+#include <sys/stat.h> /* fstat */
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
@@ -53,8 +44,7 @@ static void kwsysTerminalSetVT100Color(FILE* stream, int color);
 static HANDLE kwsysTerminalGetStreamHandle(FILE* stream);
 static HANDLE kwsysTerminalGetStreamHandle(FILE* stream);
 static void kwsysTerminalSetConsoleColor(HANDLE hOut,
 static void kwsysTerminalSetConsoleColor(HANDLE hOut,
                                          CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
                                          CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
-                                         FILE* stream,
-                                         int color);
+                                         FILE* stream, int color);
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
@@ -68,39 +58,35 @@ void kwsysTerminal_cfprintf(int color, FILE* stream, const char* format, ...)
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
   CONSOLE_SCREEN_BUFFER_INFO hOutInfo;
   CONSOLE_SCREEN_BUFFER_INFO hOutInfo;
   HANDLE hOut = kwsysTerminalGetStreamHandle(stream);
   HANDLE hOut = kwsysTerminalGetStreamHandle(stream);
-  if(GetConsoleScreenBufferInfo(hOut, &hOutInfo))
-    {
+  if (GetConsoleScreenBufferInfo(hOut, &hOutInfo)) {
     pipeIsConsole = 1;
     pipeIsConsole = 1;
     kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream, color);
     kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream, color);
-    }
+  }
 #endif
 #endif
-  if(!pipeIsConsole && kwsysTerminalStreamIsVT100(stream,
-                                                  default_vt100, default_tty))
-    {
+  if (!pipeIsConsole &&
+      kwsysTerminalStreamIsVT100(stream, default_vt100, default_tty)) {
     pipeIsVT100 = 1;
     pipeIsVT100 = 1;
     kwsysTerminalSetVT100Color(stream, color);
     kwsysTerminalSetVT100Color(stream, color);
-    }
+  }
 
 
   /* Format the text into the stream.  */
   /* Format the text into the stream.  */
   {
   {
-  va_list var_args;
-  va_start(var_args, format);
-  vfprintf(stream, format, var_args);
-  va_end(var_args);
+    va_list var_args;
+    va_start(var_args, format);
+    vfprintf(stream, format, var_args);
+    va_end(var_args);
   }
   }
 
 
-  /* Restore the normal color state for the stream.  */
+/* Restore the normal color state for the stream.  */
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
-  if(pipeIsConsole)
-    {
+  if (pipeIsConsole) {
     kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream,
     kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream,
                                  kwsysTerminal_Color_Normal);
                                  kwsysTerminal_Color_Normal);
-    }
+  }
 #endif
 #endif
-  if(pipeIsVT100)
-    {
+  if (pipeIsVT100) {
     kwsysTerminalSetVT100Color(stream, kwsysTerminal_Color_Normal);
     kwsysTerminalSetVT100Color(stream, kwsysTerminal_Color_Normal);
-    }
+  }
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
@@ -111,73 +97,68 @@ static int kwsysTerminalStreamIsNotInteractive(FILE* stream)
   /* The given stream is definitely not interactive if it is a regular
   /* The given stream is definitely not interactive if it is a regular
      file.  */
      file.  */
   struct stat stream_stat;
   struct stat stream_stat;
-  if(fstat(fileno(stream), &stream_stat) == 0)
-    {
-    if(stream_stat.st_mode & S_IFREG)
-      {
+  if (fstat(fileno(stream), &stream_stat) == 0) {
+    if (stream_stat.st_mode & S_IFREG) {
       return 1;
       return 1;
-      }
     }
     }
+  }
   return 0;
   return 0;
 }
 }
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* List of terminal names known to support VT100 color escape sequences.  */
 /* List of terminal names known to support VT100 color escape sequences.  */
-static const char* kwsysTerminalVT100Names[] =
-{
-  "Eterm",
-  "ansi",
-  "color-xterm",
-  "con132x25",
-  "con132x30",
-  "con132x43",
-  "con132x60",
-  "con80x25",
-  "con80x28",
-  "con80x30",
-  "con80x43",
-  "con80x50",
-  "con80x60",
-  "cons25",
-  "console",
-  "cygwin",
-  "dtterm",
-  "eterm-color",
-  "gnome",
-  "gnome-256color",
-  "konsole",
-  "konsole-256color",
-  "kterm",
-  "linux",
-  "msys",
-  "linux-c",
-  "mach-color",
-  "mlterm",
-  "putty",
-  "putty-256color",
-  "rxvt",
-  "rxvt-256color",
-  "rxvt-cygwin",
-  "rxvt-cygwin-native",
-  "rxvt-unicode",
-  "rxvt-unicode-256color",
-  "screen",
-  "screen-256color",
-  "screen-256color-bce",
-  "screen-bce",
-  "screen-w",
-  "screen.linux",
-  "vt100",
-  "xterm",
-  "xterm-16color",
-  "xterm-256color",
-  "xterm-88color",
-  "xterm-color",
-  "xterm-debian",
-  "xterm-termite",
-  0
-};
+static const char* kwsysTerminalVT100Names[] = { "Eterm",
+                                                 "ansi",
+                                                 "color-xterm",
+                                                 "con132x25",
+                                                 "con132x30",
+                                                 "con132x43",
+                                                 "con132x60",
+                                                 "con80x25",
+                                                 "con80x28",
+                                                 "con80x30",
+                                                 "con80x43",
+                                                 "con80x50",
+                                                 "con80x60",
+                                                 "cons25",
+                                                 "console",
+                                                 "cygwin",
+                                                 "dtterm",
+                                                 "eterm-color",
+                                                 "gnome",
+                                                 "gnome-256color",
+                                                 "konsole",
+                                                 "konsole-256color",
+                                                 "kterm",
+                                                 "linux",
+                                                 "msys",
+                                                 "linux-c",
+                                                 "mach-color",
+                                                 "mlterm",
+                                                 "putty",
+                                                 "putty-256color",
+                                                 "rxvt",
+                                                 "rxvt-256color",
+                                                 "rxvt-cygwin",
+                                                 "rxvt-cygwin-native",
+                                                 "rxvt-unicode",
+                                                 "rxvt-unicode-256color",
+                                                 "screen",
+                                                 "screen-256color",
+                                                 "screen-256color-bce",
+                                                 "screen-bce",
+                                                 "screen-w",
+                                                 "screen.linux",
+                                                 "vt100",
+                                                 "xterm",
+                                                 "xterm-16color",
+                                                 "xterm-256color",
+                                                 "xterm-88color",
+                                                 "xterm-color",
+                                                 "xterm-debian",
+                                                 "xterm-termite",
+                                                 0 };
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Detect whether a stream is displayed in a VT100-compatible terminal.  */
 /* Detect whether a stream is displayed in a VT100-compatible terminal.  */
@@ -186,10 +167,10 @@ static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
 {
 {
   /* Force color according to http://bixense.com/clicolors/ convention.  */
   /* Force color according to http://bixense.com/clicolors/ convention.  */
   {
   {
-  const char* clicolor_force = getenv("CLICOLOR_FORCE");
-  if (clicolor_force && *clicolor_force && strcmp(clicolor_force, "0") != 0)
-    {
-    return 1;
+    const char* clicolor_force = getenv("CLICOLOR_FORCE");
+    if (clicolor_force && *clicolor_force &&
+        strcmp(clicolor_force, "0") != 0) {
+      return 1;
     }
     }
   }
   }
 
 
@@ -197,38 +178,34 @@ static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
      seem to claim the TERM is xterm even though they do not support
      seem to claim the TERM is xterm even though they do not support
      VT100 escapes.  */
      VT100 escapes.  */
   {
   {
-  const char* emacs = getenv("EMACS");
-  if(emacs && *emacs == 't')
-    {
-    return 0;
+    const char* emacs = getenv("EMACS");
+    if (emacs && *emacs == 't') {
+      return 0;
     }
     }
   }
   }
 
 
   /* Check for a valid terminal.  */
   /* Check for a valid terminal.  */
-  if(!default_vt100)
-    {
+  if (!default_vt100) {
     const char** t = 0;
     const char** t = 0;
     const char* term = getenv("TERM");
     const char* term = getenv("TERM");
-    if(term)
-      {
-      for(t = kwsysTerminalVT100Names; *t && strcmp(term, *t) != 0; ++t) {}
+    if (term) {
+      for (t = kwsysTerminalVT100Names; *t && strcmp(term, *t) != 0; ++t) {
       }
       }
-    if(!(t && *t))
-      {
+    }
+    if (!(t && *t)) {
       return 0;
       return 0;
-      }
     }
     }
+  }
 
 
 #if defined(KWSYS_TERMINAL_ISATTY_WORKS)
 #if defined(KWSYS_TERMINAL_ISATTY_WORKS)
   /* Make sure the stream is a tty. */
   /* Make sure the stream is a tty. */
   (void)default_tty;
   (void)default_tty;
-  return isatty(fileno(stream))? 1:0;
+  return isatty(fileno(stream)) ? 1 : 0;
 #else
 #else
   /* Check for cases in which the stream is definitely not a tty.  */
   /* Check for cases in which the stream is definitely not a tty.  */
-  if(kwsysTerminalStreamIsNotInteractive(stream))
-    {
+  if (kwsysTerminalStreamIsNotInteractive(stream)) {
     return 0;
     return 0;
-    }
+  }
 
 
   /* Use the provided default for whether this is a tty.  */
   /* Use the provided default for whether this is a tty.  */
   return default_tty;
   return default_tty;
@@ -237,40 +214,38 @@ static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* VT100 escape sequence strings.  */
 /* VT100 escape sequence strings.  */
-#define KWSYS_TERMINAL_VT100_NORMAL              "\33[0m"
-#define KWSYS_TERMINAL_VT100_BOLD                "\33[1m"
-#define KWSYS_TERMINAL_VT100_UNDERLINE           "\33[4m"
-#define KWSYS_TERMINAL_VT100_BLINK               "\33[5m"
-#define KWSYS_TERMINAL_VT100_INVERSE             "\33[7m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_BLACK    "\33[30m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_RED      "\33[31m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_GREEN    "\33[32m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_YELLOW   "\33[33m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_BLUE     "\33[34m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_MAGENTA  "\33[35m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_CYAN     "\33[36m"
-#define KWSYS_TERMINAL_VT100_FOREGROUND_WHITE    "\33[37m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_BLACK    "\33[40m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_RED      "\33[41m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_GREEN    "\33[42m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_YELLOW   "\33[43m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_BLUE     "\33[44m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_MAGENTA  "\33[45m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_CYAN     "\33[46m"
-#define KWSYS_TERMINAL_VT100_BACKGROUND_WHITE    "\33[47m"
+#define KWSYS_TERMINAL_VT100_NORMAL "\33[0m"
+#define KWSYS_TERMINAL_VT100_BOLD "\33[1m"
+#define KWSYS_TERMINAL_VT100_UNDERLINE "\33[4m"
+#define KWSYS_TERMINAL_VT100_BLINK "\33[5m"
+#define KWSYS_TERMINAL_VT100_INVERSE "\33[7m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_BLACK "\33[30m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_RED "\33[31m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_GREEN "\33[32m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_YELLOW "\33[33m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_BLUE "\33[34m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_MAGENTA "\33[35m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_CYAN "\33[36m"
+#define KWSYS_TERMINAL_VT100_FOREGROUND_WHITE "\33[37m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_BLACK "\33[40m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_RED "\33[41m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_GREEN "\33[42m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_YELLOW "\33[43m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_BLUE "\33[44m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_MAGENTA "\33[45m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_CYAN "\33[46m"
+#define KWSYS_TERMINAL_VT100_BACKGROUND_WHITE "\33[47m"
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 /* Write VT100 escape sequences to the stream for the given color.  */
 /* Write VT100 escape sequences to the stream for the given color.  */
 static void kwsysTerminalSetVT100Color(FILE* stream, int color)
 static void kwsysTerminalSetVT100Color(FILE* stream, int color)
 {
 {
-  if(color == kwsysTerminal_Color_Normal)
-    {
+  if (color == kwsysTerminal_Color_Normal) {
     fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
     fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
     return;
     return;
-    }
+  }
 
 
-  switch(color & kwsysTerminal_Color_ForegroundMask)
-    {
+  switch (color & kwsysTerminal_Color_ForegroundMask) {
     case kwsysTerminal_Color_Normal:
     case kwsysTerminal_Color_Normal:
       fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
       fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
       break;
       break;
@@ -298,9 +273,8 @@ static void kwsysTerminalSetVT100Color(FILE* stream, int color)
     case kwsysTerminal_Color_ForegroundWhite:
     case kwsysTerminal_Color_ForegroundWhite:
       fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_WHITE);
       fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_WHITE);
       break;
       break;
-    }
-  switch(color & kwsysTerminal_Color_BackgroundMask)
-    {
+  }
+  switch (color & kwsysTerminal_Color_BackgroundMask) {
     case kwsysTerminal_Color_BackgroundBlack:
     case kwsysTerminal_Color_BackgroundBlack:
       fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_BLACK);
       fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_BLACK);
       break;
       break;
@@ -325,19 +299,18 @@ static void kwsysTerminalSetVT100Color(FILE* stream, int color)
     case kwsysTerminal_Color_BackgroundWhite:
     case kwsysTerminal_Color_BackgroundWhite:
       fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_WHITE);
       fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_WHITE);
       break;
       break;
-    }
-  if(color & kwsysTerminal_Color_ForegroundBold)
-    {
+  }
+  if (color & kwsysTerminal_Color_ForegroundBold) {
     fprintf(stream, KWSYS_TERMINAL_VT100_BOLD);
     fprintf(stream, KWSYS_TERMINAL_VT100_BOLD);
-    }
+  }
 }
 }
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
 #if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
 
 
-# define KWSYS_TERMINAL_MASK_FOREGROUND \
+#define KWSYS_TERMINAL_MASK_FOREGROUND                                        \
   (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY)
   (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY)
-# define KWSYS_TERMINAL_MASK_BACKGROUND \
+#define KWSYS_TERMINAL_MASK_BACKGROUND                                        \
   (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)
   (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)
 
 
 /* Get the Windows handle for a FILE stream.  */
 /* Get the Windows handle for a FILE stream.  */
@@ -346,19 +319,16 @@ static HANDLE kwsysTerminalGetStreamHandle(FILE* stream)
   /* Get the C-library file descriptor from the stream.  */
   /* Get the C-library file descriptor from the stream.  */
   int fd = fileno(stream);
   int fd = fileno(stream);
 
 
-# if defined(__CYGWIN__)
+#if defined(__CYGWIN__)
   /* Cygwin seems to have an extra pipe level.  If the file descriptor
   /* Cygwin seems to have an extra pipe level.  If the file descriptor
      corresponds to stdout or stderr then obtain the matching windows
      corresponds to stdout or stderr then obtain the matching windows
      handle directly.  */
      handle directly.  */
-  if(fd == fileno(stdout))
-    {
+  if (fd == fileno(stdout)) {
     return GetStdHandle(STD_OUTPUT_HANDLE);
     return GetStdHandle(STD_OUTPUT_HANDLE);
-    }
-  else if(fd == fileno(stderr))
-    {
+  } else if (fd == fileno(stderr)) {
     return GetStdHandle(STD_ERROR_HANDLE);
     return GetStdHandle(STD_ERROR_HANDLE);
-    }
-# endif
+  }
+#endif
 
 
   /* Get the underlying Windows handle for the descriptor.  */
   /* Get the underlying Windows handle for the descriptor.  */
   return (HANDLE)_get_osfhandle(fd);
   return (HANDLE)_get_osfhandle(fd);
@@ -367,12 +337,10 @@ static HANDLE kwsysTerminalGetStreamHandle(FILE* stream)
 /* Set color attributes in a Windows console.  */
 /* Set color attributes in a Windows console.  */
 static void kwsysTerminalSetConsoleColor(HANDLE hOut,
 static void kwsysTerminalSetConsoleColor(HANDLE hOut,
                                          CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
                                          CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
-                                         FILE* stream,
-                                         int color)
+                                         FILE* stream, int color)
 {
 {
   WORD attributes = 0;
   WORD attributes = 0;
-  switch(color & kwsysTerminal_Color_ForegroundMask)
-    {
+  switch (color & kwsysTerminal_Color_ForegroundMask) {
     case kwsysTerminal_Color_Normal:
     case kwsysTerminal_Color_Normal:
       attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_FOREGROUND;
       attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_FOREGROUND;
       break;
       break;
@@ -400,9 +368,8 @@ static void kwsysTerminalSetConsoleColor(HANDLE hOut,
     case kwsysTerminal_Color_ForegroundWhite:
     case kwsysTerminal_Color_ForegroundWhite:
       attributes |= FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
       attributes |= FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
       break;
       break;
-    }
-  switch(color & kwsysTerminal_Color_BackgroundMask)
-    {
+  }
+  switch (color & kwsysTerminal_Color_BackgroundMask) {
     case kwsysTerminal_Color_Normal:
     case kwsysTerminal_Color_Normal:
       attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_BACKGROUND;
       attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_BACKGROUND;
       break;
       break;
@@ -430,15 +397,13 @@ static void kwsysTerminalSetConsoleColor(HANDLE hOut,
     case kwsysTerminal_Color_BackgroundWhite:
     case kwsysTerminal_Color_BackgroundWhite:
       attributes |= BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
       attributes |= BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
       break;
       break;
-    }
-  if(color & kwsysTerminal_Color_ForegroundBold)
-    {
+  }
+  if (color & kwsysTerminal_Color_ForegroundBold) {
     attributes |= FOREGROUND_INTENSITY;
     attributes |= FOREGROUND_INTENSITY;
-    }
-  if(color & kwsysTerminal_Color_BackgroundBold)
-    {
+  }
+  if (color & kwsysTerminal_Color_BackgroundBold) {
     attributes |= BACKGROUND_INTENSITY;
     attributes |= BACKGROUND_INTENSITY;
-    }
+  }
   fflush(stream);
   fflush(stream);
   SetConsoleTextAttribute(hOut, attributes);
   SetConsoleTextAttribute(hOut, attributes);
 }
 }

+ 101 - 90
Terminal.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_Terminal_h
 #ifndef @KWSYS_NAMESPACE@_Terminal_h
 #define @KWSYS_NAMESPACE@_Terminal_h
 #define @KWSYS_NAMESPACE@_Terminal_h
 
 
@@ -21,41 +12,61 @@
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
    these macros after making changes to the interface.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+#define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
 #endif
 #endif
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-# define kwsysTerminal_cfprintf                kwsys_ns(Terminal_cfprintf)
-# define kwsysTerminal_Color_e                 kwsys_ns(Terminal_Color_e)
-# define kwsysTerminal_Color_Normal            kwsys_ns(Terminal_Color_Normal)
-# define kwsysTerminal_Color_ForegroundBlack   kwsys_ns(Terminal_Color_ForegroundBlack)
-# define kwsysTerminal_Color_ForegroundRed     kwsys_ns(Terminal_Color_ForegroundRed)
-# define kwsysTerminal_Color_ForegroundGreen   kwsys_ns(Terminal_Color_ForegroundGreen)
-# define kwsysTerminal_Color_ForegroundYellow  kwsys_ns(Terminal_Color_ForegroundYellow)
-# define kwsysTerminal_Color_ForegroundBlue    kwsys_ns(Terminal_Color_ForegroundBlue)
-# define kwsysTerminal_Color_ForegroundMagenta kwsys_ns(Terminal_Color_ForegroundMagenta)
-# define kwsysTerminal_Color_ForegroundCyan    kwsys_ns(Terminal_Color_ForegroundCyan)
-# define kwsysTerminal_Color_ForegroundWhite   kwsys_ns(Terminal_Color_ForegroundWhite)
-# define kwsysTerminal_Color_ForegroundMask    kwsys_ns(Terminal_Color_ForegroundMask)
-# define kwsysTerminal_Color_BackgroundBlack   kwsys_ns(Terminal_Color_BackgroundBlack)
-# define kwsysTerminal_Color_BackgroundRed     kwsys_ns(Terminal_Color_BackgroundRed)
-# define kwsysTerminal_Color_BackgroundGreen   kwsys_ns(Terminal_Color_BackgroundGreen)
-# define kwsysTerminal_Color_BackgroundYellow  kwsys_ns(Terminal_Color_BackgroundYellow)
-# define kwsysTerminal_Color_BackgroundBlue    kwsys_ns(Terminal_Color_BackgroundBlue)
-# define kwsysTerminal_Color_BackgroundMagenta kwsys_ns(Terminal_Color_BackgroundMagenta)
-# define kwsysTerminal_Color_BackgroundCyan    kwsys_ns(Terminal_Color_BackgroundCyan)
-# define kwsysTerminal_Color_BackgroundWhite   kwsys_ns(Terminal_Color_BackgroundWhite)
-# define kwsysTerminal_Color_BackgroundMask    kwsys_ns(Terminal_Color_BackgroundMask)
-# define kwsysTerminal_Color_ForegroundBold    kwsys_ns(Terminal_Color_ForegroundBold)
-# define kwsysTerminal_Color_BackgroundBold    kwsys_ns(Terminal_Color_BackgroundBold)
-# define kwsysTerminal_Color_AssumeTTY         kwsys_ns(Terminal_Color_AssumeTTY)
-# define kwsysTerminal_Color_AssumeVT100       kwsys_ns(Terminal_Color_AssumeVT100)
-# define kwsysTerminal_Color_AttributeMask     kwsys_ns(Terminal_Color_AttributeMask)
+#define kwsysTerminal_cfprintf kwsys_ns(Terminal_cfprintf)
+#define kwsysTerminal_Color_e kwsys_ns(Terminal_Color_e)
+#define kwsysTerminal_Color_Normal kwsys_ns(Terminal_Color_Normal)
+#define kwsysTerminal_Color_ForegroundBlack                                   \
+  kwsys_ns(Terminal_Color_ForegroundBlack)
+#define kwsysTerminal_Color_ForegroundRed                                     \
+  kwsys_ns(Terminal_Color_ForegroundRed)
+#define kwsysTerminal_Color_ForegroundGreen                                   \
+  kwsys_ns(Terminal_Color_ForegroundGreen)
+#define kwsysTerminal_Color_ForegroundYellow                                  \
+  kwsys_ns(Terminal_Color_ForegroundYellow)
+#define kwsysTerminal_Color_ForegroundBlue                                    \
+  kwsys_ns(Terminal_Color_ForegroundBlue)
+#define kwsysTerminal_Color_ForegroundMagenta                                 \
+  kwsys_ns(Terminal_Color_ForegroundMagenta)
+#define kwsysTerminal_Color_ForegroundCyan                                    \
+  kwsys_ns(Terminal_Color_ForegroundCyan)
+#define kwsysTerminal_Color_ForegroundWhite                                   \
+  kwsys_ns(Terminal_Color_ForegroundWhite)
+#define kwsysTerminal_Color_ForegroundMask                                    \
+  kwsys_ns(Terminal_Color_ForegroundMask)
+#define kwsysTerminal_Color_BackgroundBlack                                   \
+  kwsys_ns(Terminal_Color_BackgroundBlack)
+#define kwsysTerminal_Color_BackgroundRed                                     \
+  kwsys_ns(Terminal_Color_BackgroundRed)
+#define kwsysTerminal_Color_BackgroundGreen                                   \
+  kwsys_ns(Terminal_Color_BackgroundGreen)
+#define kwsysTerminal_Color_BackgroundYellow                                  \
+  kwsys_ns(Terminal_Color_BackgroundYellow)
+#define kwsysTerminal_Color_BackgroundBlue                                    \
+  kwsys_ns(Terminal_Color_BackgroundBlue)
+#define kwsysTerminal_Color_BackgroundMagenta                                 \
+  kwsys_ns(Terminal_Color_BackgroundMagenta)
+#define kwsysTerminal_Color_BackgroundCyan                                    \
+  kwsys_ns(Terminal_Color_BackgroundCyan)
+#define kwsysTerminal_Color_BackgroundWhite                                   \
+  kwsys_ns(Terminal_Color_BackgroundWhite)
+#define kwsysTerminal_Color_BackgroundMask                                    \
+  kwsys_ns(Terminal_Color_BackgroundMask)
+#define kwsysTerminal_Color_ForegroundBold                                    \
+  kwsys_ns(Terminal_Color_ForegroundBold)
+#define kwsysTerminal_Color_BackgroundBold                                    \
+  kwsys_ns(Terminal_Color_BackgroundBold)
+#define kwsysTerminal_Color_AssumeTTY kwsys_ns(Terminal_Color_AssumeTTY)
+#define kwsysTerminal_Color_AssumeVT100 kwsys_ns(Terminal_Color_AssumeVT100)
+#define kwsysTerminal_Color_AttributeMask                                     \
+  kwsys_ns(Terminal_Color_AttributeMask)
 #endif
 #endif
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
-extern "C"
-{
+extern "C" {
 #endif
 #endif
 
 
 /**
 /**
@@ -88,33 +99,33 @@ enum kwsysTerminal_Color_e
   kwsysTerminal_Color_Normal = 0,
   kwsysTerminal_Color_Normal = 0,
 
 
   /* Foreground Color */
   /* Foreground Color */
-  kwsysTerminal_Color_ForegroundBlack   = 0x1,
-  kwsysTerminal_Color_ForegroundRed     = 0x2,
-  kwsysTerminal_Color_ForegroundGreen   = 0x3,
-  kwsysTerminal_Color_ForegroundYellow  = 0x4,
-  kwsysTerminal_Color_ForegroundBlue    = 0x5,
+  kwsysTerminal_Color_ForegroundBlack = 0x1,
+  kwsysTerminal_Color_ForegroundRed = 0x2,
+  kwsysTerminal_Color_ForegroundGreen = 0x3,
+  kwsysTerminal_Color_ForegroundYellow = 0x4,
+  kwsysTerminal_Color_ForegroundBlue = 0x5,
   kwsysTerminal_Color_ForegroundMagenta = 0x6,
   kwsysTerminal_Color_ForegroundMagenta = 0x6,
-  kwsysTerminal_Color_ForegroundCyan    = 0x7,
-  kwsysTerminal_Color_ForegroundWhite   = 0x8,
-  kwsysTerminal_Color_ForegroundMask    = 0xF,
+  kwsysTerminal_Color_ForegroundCyan = 0x7,
+  kwsysTerminal_Color_ForegroundWhite = 0x8,
+  kwsysTerminal_Color_ForegroundMask = 0xF,
 
 
   /* Background Color */
   /* Background Color */
-  kwsysTerminal_Color_BackgroundBlack   = 0x10,
-  kwsysTerminal_Color_BackgroundRed     = 0x20,
-  kwsysTerminal_Color_BackgroundGreen   = 0x30,
-  kwsysTerminal_Color_BackgroundYellow  = 0x40,
-  kwsysTerminal_Color_BackgroundBlue    = 0x50,
+  kwsysTerminal_Color_BackgroundBlack = 0x10,
+  kwsysTerminal_Color_BackgroundRed = 0x20,
+  kwsysTerminal_Color_BackgroundGreen = 0x30,
+  kwsysTerminal_Color_BackgroundYellow = 0x40,
+  kwsysTerminal_Color_BackgroundBlue = 0x50,
   kwsysTerminal_Color_BackgroundMagenta = 0x60,
   kwsysTerminal_Color_BackgroundMagenta = 0x60,
-  kwsysTerminal_Color_BackgroundCyan    = 0x70,
-  kwsysTerminal_Color_BackgroundWhite   = 0x80,
-  kwsysTerminal_Color_BackgroundMask    = 0xF0,
+  kwsysTerminal_Color_BackgroundCyan = 0x70,
+  kwsysTerminal_Color_BackgroundWhite = 0x80,
+  kwsysTerminal_Color_BackgroundMask = 0xF0,
 
 
   /* Attributes */
   /* Attributes */
   kwsysTerminal_Color_ForegroundBold = 0x100,
   kwsysTerminal_Color_ForegroundBold = 0x100,
   kwsysTerminal_Color_BackgroundBold = 0x200,
   kwsysTerminal_Color_BackgroundBold = 0x200,
-  kwsysTerminal_Color_AssumeTTY      = 0x400,
-  kwsysTerminal_Color_AssumeVT100    = 0x800,
-  kwsysTerminal_Color_AttributeMask  = 0xF00
+  kwsysTerminal_Color_AssumeTTY = 0x400,
+  kwsysTerminal_Color_AssumeVT100 = 0x800,
+  kwsysTerminal_Color_AttributeMask = 0xF00
 };
 };
 
 
 #if defined(__cplusplus)
 #if defined(__cplusplus)
@@ -124,36 +135,36 @@ enum kwsysTerminal_Color_e
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
 /* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
    Otherwise, undefine them to keep the namespace clean.  */
 #if !defined(KWSYS_NAMESPACE)
 #if !defined(KWSYS_NAMESPACE)
-# undef kwsys_ns
-# undef kwsysEXPORT
-# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
-#  undef kwsysTerminal_cfprintf
-#  undef kwsysTerminal_Color_e
-#  undef kwsysTerminal_Color_Normal
-#  undef kwsysTerminal_Color_ForegroundBlack
-#  undef kwsysTerminal_Color_ForegroundRed
-#  undef kwsysTerminal_Color_ForegroundGreen
-#  undef kwsysTerminal_Color_ForegroundYellow
-#  undef kwsysTerminal_Color_ForegroundBlue
-#  undef kwsysTerminal_Color_ForegroundMagenta
-#  undef kwsysTerminal_Color_ForegroundCyan
-#  undef kwsysTerminal_Color_ForegroundWhite
-#  undef kwsysTerminal_Color_ForegroundMask
-#  undef kwsysTerminal_Color_BackgroundBlack
-#  undef kwsysTerminal_Color_BackgroundRed
-#  undef kwsysTerminal_Color_BackgroundGreen
-#  undef kwsysTerminal_Color_BackgroundYellow
-#  undef kwsysTerminal_Color_BackgroundBlue
-#  undef kwsysTerminal_Color_BackgroundMagenta
-#  undef kwsysTerminal_Color_BackgroundCyan
-#  undef kwsysTerminal_Color_BackgroundWhite
-#  undef kwsysTerminal_Color_BackgroundMask
-#  undef kwsysTerminal_Color_ForegroundBold
-#  undef kwsysTerminal_Color_BackgroundBold
-#  undef kwsysTerminal_Color_AssumeTTY
-#  undef kwsysTerminal_Color_AssumeVT100
-#  undef kwsysTerminal_Color_AttributeMask
-# endif
+#undef kwsys_ns
+#undef kwsysEXPORT
+#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#undef kwsysTerminal_cfprintf
+#undef kwsysTerminal_Color_e
+#undef kwsysTerminal_Color_Normal
+#undef kwsysTerminal_Color_ForegroundBlack
+#undef kwsysTerminal_Color_ForegroundRed
+#undef kwsysTerminal_Color_ForegroundGreen
+#undef kwsysTerminal_Color_ForegroundYellow
+#undef kwsysTerminal_Color_ForegroundBlue
+#undef kwsysTerminal_Color_ForegroundMagenta
+#undef kwsysTerminal_Color_ForegroundCyan
+#undef kwsysTerminal_Color_ForegroundWhite
+#undef kwsysTerminal_Color_ForegroundMask
+#undef kwsysTerminal_Color_BackgroundBlack
+#undef kwsysTerminal_Color_BackgroundRed
+#undef kwsysTerminal_Color_BackgroundGreen
+#undef kwsysTerminal_Color_BackgroundYellow
+#undef kwsysTerminal_Color_BackgroundBlue
+#undef kwsysTerminal_Color_BackgroundMagenta
+#undef kwsysTerminal_Color_BackgroundCyan
+#undef kwsysTerminal_Color_BackgroundWhite
+#undef kwsysTerminal_Color_BackgroundMask
+#undef kwsysTerminal_Color_ForegroundBold
+#undef kwsysTerminal_Color_BackgroundBold
+#undef kwsysTerminal_Color_AssumeTTY
+#undef kwsysTerminal_Color_AssumeVT100
+#undef kwsysTerminal_Color_AttributeMask
+#endif
 #endif
 #endif
 
 
 #endif
 #endif

+ 53 - 36
hash_fun.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 /*
 /*
  * Copyright (c) 1996
  * Copyright (c) 1996
  * Silicon Graphics Computer Systems, Inc.
  * Silicon Graphics Computer Systems, Inc.
@@ -38,108 +29,134 @@
 #define @KWSYS_NAMESPACE@_hash_fun_hxx
 #define @KWSYS_NAMESPACE@_hash_fun_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
-#include <stddef.h>        // size_t
+
+#include <stddef.h> // size_t
 #include <string>
 #include <string>
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
-template <class _Key> struct hash { };
+template <class _Key>
+struct hash
+{
+};
 
 
 inline size_t _stl_hash_string(const char* __s)
 inline size_t _stl_hash_string(const char* __s)
 {
 {
   unsigned long __h = 0;
   unsigned long __h = 0;
-  for ( ; *__s; ++__s)
-    __h = 5*__h + *__s;
+  for (; *__s; ++__s)
+    __h = 5 * __h + *__s;
 
 
   return size_t(__h);
   return size_t(__h);
 }
 }
 
 
 template <>
 template <>
-struct hash<char*> {
+struct hash<char*>
+{
   size_t operator()(const char* __s) const { return _stl_hash_string(__s); }
   size_t operator()(const char* __s) const { return _stl_hash_string(__s); }
 };
 };
 
 
 template <>
 template <>
-struct hash<const char*> {
+struct hash<const char*>
+{
   size_t operator()(const char* __s) const { return _stl_hash_string(__s); }
   size_t operator()(const char* __s) const { return _stl_hash_string(__s); }
 };
 };
 
 
 template <>
 template <>
-  struct hash<std::string> {
-  size_t operator()(const std::string & __s) const { return _stl_hash_string(__s.c_str()); }
+struct hash<std::string>
+{
+  size_t operator()(const std::string& __s) const
+  {
+    return _stl_hash_string(__s.c_str());
+  }
 };
 };
 
 
 #if !defined(__BORLANDC__)
 #if !defined(__BORLANDC__)
 template <>
 template <>
-  struct hash<const std::string> {
-  size_t operator()(const std::string & __s) const { return _stl_hash_string(__s.c_str()); }
+struct hash<const std::string>
+{
+  size_t operator()(const std::string& __s) const
+  {
+    return _stl_hash_string(__s.c_str());
+  }
 };
 };
 #endif
 #endif
 
 
 template <>
 template <>
-struct hash<char> {
+struct hash<char>
+{
   size_t operator()(char __x) const { return __x; }
   size_t operator()(char __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<unsigned char> {
+struct hash<unsigned char>
+{
   size_t operator()(unsigned char __x) const { return __x; }
   size_t operator()(unsigned char __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<signed char> {
+struct hash<signed char>
+{
   size_t operator()(unsigned char __x) const { return __x; }
   size_t operator()(unsigned char __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<short> {
+struct hash<short>
+{
   size_t operator()(short __x) const { return __x; }
   size_t operator()(short __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<unsigned short> {
+struct hash<unsigned short>
+{
   size_t operator()(unsigned short __x) const { return __x; }
   size_t operator()(unsigned short __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<int> {
+struct hash<int>
+{
   size_t operator()(int __x) const { return __x; }
   size_t operator()(int __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<unsigned int> {
+struct hash<unsigned int>
+{
   size_t operator()(unsigned int __x) const { return __x; }
   size_t operator()(unsigned int __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<long> {
+struct hash<long>
+{
   size_t operator()(long __x) const { return __x; }
   size_t operator()(long __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<unsigned long> {
+struct hash<unsigned long>
+{
   size_t operator()(unsigned long __x) const { return __x; }
   size_t operator()(unsigned long __x) const { return __x; }
 };
 };
 
 
 // use long long or __int64
 // use long long or __int64
 #if @KWSYS_USE_LONG_LONG@
 #if @KWSYS_USE_LONG_LONG@
 template <>
 template <>
-struct hash<long long> {
+struct hash<long long>
+{
   size_t operator()(long long __x) const { return __x; }
   size_t operator()(long long __x) const { return __x; }
 };
 };
 
 
 template <>
 template <>
-struct hash<unsigned long long> {
+struct hash<unsigned long long>
+{
   size_t operator()(unsigned long long __x) const { return __x; }
   size_t operator()(unsigned long long __x) const { return __x; }
 };
 };
 #elif @KWSYS_USE___INT64@
 #elif @KWSYS_USE___INT64@
 template <>
 template <>
-struct hash<__int64> {
+struct hash<__int64>
+{
   size_t operator()(__int64 __x) const { return __x; }
   size_t operator()(__int64 __x) const { return __x; }
 };
 };
 template <>
 template <>
-struct hash<unsigned __int64> {
+struct hash<unsigned __int64>
+{
   size_t operator()(unsigned __int64 __x) const { return __x; }
   size_t operator()(unsigned __int64 __x) const { return __x; }
 };
 };
 #endif // use long long or __int64
 #endif // use long long or __int64

+ 147 - 99
hash_map.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 /*
 /*
  * Copyright (c) 1996
  * Copyright (c) 1996
  * Silicon Graphics Computer Systems, Inc.
  * Silicon Graphics Computer Systems, Inc.
@@ -38,36 +29,37 @@
 #define @KWSYS_NAMESPACE@_hash_map_hxx
 #define @KWSYS_NAMESPACE@_hash_map_hxx
 
 
 #include <@KWSYS_NAMESPACE@/hashtable.hxx>
 #include <@KWSYS_NAMESPACE@/hashtable.hxx>
+
 #include <@KWSYS_NAMESPACE@/hash_fun.hxx>
 #include <@KWSYS_NAMESPACE@/hash_fun.hxx>
+
 #include <functional> // equal_to
 #include <functional> // equal_to
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (push)
-# pragma warning (disable:4284)
-# pragma warning (disable:4786)
+#pragma warning(push)
+#pragma warning(disable : 4284)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma set woff 1174
-# pragma set woff 1375
+#pragma set woff 1174
+#pragma set woff 1375
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 // select1st is an extension: it is not part of the standard.
 // select1st is an extension: it is not part of the standard.
 template <class T1, class T2>
 template <class T1, class T2>
-struct hash_select1st:
-    public std::unary_function<std::pair<T1, T2>, T1>
+struct hash_select1st : public std::unary_function<std::pair<T1, T2>, T1>
 {
 {
   const T1& operator()(const std::pair<T1, T2>& __x) const
   const T1& operator()(const std::pair<T1, T2>& __x) const
-    { return __x.first; }
+  {
+    return __x.first;
+  }
 };
 };
 
 
 // Forward declaration of equality operator; needed for friend declaration.
 // Forward declaration of equality operator; needed for friend declaration.
 
 
-template <class _Key, class _Tp,
-          class _HashFcn  = hash<_Key>,
+template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
           class _EqualKey = std::equal_to<_Key>,
           class _EqualKey = std::equal_to<_Key>,
           class _Alloc = std::allocator<char> >
           class _Alloc = std::allocator<char> >
 class hash_map;
 class hash_map;
@@ -76,13 +68,13 @@ template <class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
 bool operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&,
 bool operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&,
                 const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&);
                 const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&);
 
 
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
-          class _Alloc>
+template <class _Key, class _Tp, class _HashFcn, class _EqualKey, class _Alloc>
 class hash_map
 class hash_map
 {
 {
 private:
 private:
-  typedef hashtable<std::pair<const _Key,_Tp>,_Key,_HashFcn,
-                    hash_select1st<const _Key,_Tp>,_EqualKey,_Alloc> _Ht;
+  typedef hashtable<std::pair<const _Key, _Tp>, _Key, _HashFcn,
+                    hash_select1st<const _Key, _Tp>, _EqualKey, _Alloc>
+    _Ht;
   _Ht _M_ht;
   _Ht _M_ht;
 
 
 public:
 public:
@@ -110,34 +102,51 @@ public:
   allocator_type get_allocator() const { return _M_ht.get_allocator(); }
   allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 
 
 public:
 public:
-  hash_map() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+  hash_map()
+    : _M_ht(100, hasher(), key_equal(), allocator_type())
+  {
+  }
   explicit hash_map(size_type __n)
   explicit hash_map(size_type __n)
-    : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(__n, hasher(), key_equal(), allocator_type())
+  {
+  }
   hash_map(size_type __n, const hasher& __hf)
   hash_map(size_type __n, const hasher& __hf)
-    : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+    : _M_ht(__n, __hf, key_equal(), allocator_type())
+  {
+  }
   hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
   hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
            const allocator_type& __a = allocator_type())
            const allocator_type& __a = allocator_type())
-    : _M_ht(__n, __hf, __eql, __a) {}
+    : _M_ht(__n, __hf, __eql, __a)
+  {
+  }
 
 
   template <class _InputIterator>
   template <class _InputIterator>
   hash_map(_InputIterator __f, _InputIterator __l)
   hash_map(_InputIterator __f, _InputIterator __l)
     : _M_ht(100, hasher(), key_equal(), allocator_type())
     : _M_ht(100, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
            const hasher& __hf)
            const hasher& __hf)
     : _M_ht(__n, __hf, key_equal(), allocator_type())
     : _M_ht(__n, __hf, key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
            const hasher& __hf, const key_equal& __eql,
            const hasher& __hf, const key_equal& __eql,
            const allocator_type& __a = allocator_type())
            const allocator_type& __a = allocator_type())
     : _M_ht(__n, __hf, __eql, __a)
     : _M_ht(__n, __hf, __eql, __a)
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
 
 
 public:
 public:
   size_type size() const { return _M_ht.size(); }
   size_type size() const { return _M_ht.size(); }
@@ -145,8 +154,7 @@ public:
   bool empty() const { return _M_ht.empty(); }
   bool empty() const { return _M_ht.empty(); }
   void swap(hash_map& __hs) { _M_ht.swap(__hs._M_ht); }
   void swap(hash_map& __hs) { _M_ht.swap(__hs._M_ht); }
 
 
-  friend bool operator==<>(const hash_map&,
-                           const hash_map&);
+  friend bool operator==<>(const hash_map&, const hash_map&);
 
 
   iterator begin() { return _M_ht.begin(); }
   iterator begin() { return _M_ht.begin(); }
   iterator end() { return _M_ht.end(); }
   iterator end() { return _M_ht.end(); }
@@ -154,31 +162,44 @@ public:
   const_iterator end() const { return _M_ht.end(); }
   const_iterator end() const { return _M_ht.end(); }
 
 
 public:
 public:
-  std::pair<iterator,bool> insert(const value_type& __obj)
-    { return _M_ht.insert_unique(__obj); }
+  std::pair<iterator, bool> insert(const value_type& __obj)
+  {
+    return _M_ht.insert_unique(__obj);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   void insert(_InputIterator __f, _InputIterator __l)
   void insert(_InputIterator __f, _InputIterator __l)
-    { _M_ht.insert_unique(__f,__l); }
-  std::pair<iterator,bool> insert_noresize(const value_type& __obj)
-    { return _M_ht.insert_unique_noresize(__obj); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
+  std::pair<iterator, bool> insert_noresize(const value_type& __obj)
+  {
+    return _M_ht.insert_unique_noresize(__obj);
+  }
 
 
   iterator find(const key_type& __key) { return _M_ht.find(__key); }
   iterator find(const key_type& __key) { return _M_ht.find(__key); }
   const_iterator find(const key_type& __key) const
   const_iterator find(const key_type& __key) const
-    { return _M_ht.find(__key); }
+  {
+    return _M_ht.find(__key);
+  }
 
 
-  _Tp& operator[](const key_type& __key) {
+  _Tp& operator[](const key_type& __key)
+  {
     return _M_ht.find_or_insert(value_type(__key, _Tp())).second;
     return _M_ht.find_or_insert(value_type(__key, _Tp())).second;
   }
   }
 
 
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
 
 
   std::pair<iterator, iterator> equal_range(const key_type& __key)
   std::pair<iterator, iterator> equal_range(const key_type& __key)
-    { return _M_ht.equal_range(__key); }
-  std::pair<const_iterator, const_iterator>
-  equal_range(const key_type& __key) const
-    { return _M_ht.equal_range(__key); }
+  {
+    return _M_ht.equal_range(__key);
+  }
+  std::pair<const_iterator, const_iterator> equal_range(
+    const key_type& __key) const
+  {
+    return _M_ht.equal_range(__key);
+  }
 
 
-  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+  size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void clear() { _M_ht.clear(); }
   void clear() { _M_ht.clear(); }
@@ -187,53 +208,51 @@ public:
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type elems_in_bucket(size_type __n) const
   size_type elems_in_bucket(size_type __n) const
-    { return _M_ht.elems_in_bucket(__n); }
+  {
+    return _M_ht.elems_in_bucket(__n);
+  }
 };
 };
 
 
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-bool
-operator==(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
-           const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+bool operator==(const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+                const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
 {
 {
   return __hm1._M_ht == __hm2._M_ht;
   return __hm1._M_ht == __hm2._M_ht;
 }
 }
 
 
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline bool
-operator!=(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
-           const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2) {
+inline bool operator!=(
+  const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+  const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
+{
   return !(__hm1 == __hm2);
   return !(__hm1 == __hm2);
 }
 }
 
 
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
-     hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+inline void swap(hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+                 hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
 {
 {
   __hm1.swap(__hm2);
   __hm1.swap(__hm2);
 }
 }
 
 
 // Forward declaration of equality operator; needed for friend declaration.
 // Forward declaration of equality operator; needed for friend declaration.
 
 
-template <class _Key, class _Tp,
-          class _HashFcn  = hash<_Key>,
+template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
           class _EqualKey = std::equal_to<_Key>,
           class _EqualKey = std::equal_to<_Key>,
           class _Alloc = std::allocator<char> >
           class _Alloc = std::allocator<char> >
 class hash_multimap;
 class hash_multimap;
 
 
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-bool
-operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
-           const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2);
+bool operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+                const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2);
 
 
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
-          class _Alloc>
+template <class _Key, class _Tp, class _HashFcn, class _EqualKey, class _Alloc>
 class hash_multimap
 class hash_multimap
 {
 {
 private:
 private:
   typedef hashtable<std::pair<const _Key, _Tp>, _Key, _HashFcn,
   typedef hashtable<std::pair<const _Key, _Tp>, _Key, _HashFcn,
                     hash_select1st<const _Key, _Tp>, _EqualKey, _Alloc>
                     hash_select1st<const _Key, _Tp>, _EqualKey, _Alloc>
-          _Ht;
+    _Ht;
   _Ht _M_ht;
   _Ht _M_ht;
 
 
 public:
 public:
@@ -261,34 +280,51 @@ public:
   allocator_type get_allocator() const { return _M_ht.get_allocator(); }
   allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 
 
 public:
 public:
-  hash_multimap() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+  hash_multimap()
+    : _M_ht(100, hasher(), key_equal(), allocator_type())
+  {
+  }
   explicit hash_multimap(size_type __n)
   explicit hash_multimap(size_type __n)
-    : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(__n, hasher(), key_equal(), allocator_type())
+  {
+  }
   hash_multimap(size_type __n, const hasher& __hf)
   hash_multimap(size_type __n, const hasher& __hf)
-    : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+    : _M_ht(__n, __hf, key_equal(), allocator_type())
+  {
+  }
   hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
   hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
                 const allocator_type& __a = allocator_type())
                 const allocator_type& __a = allocator_type())
-    : _M_ht(__n, __hf, __eql, __a) {}
+    : _M_ht(__n, __hf, __eql, __a)
+  {
+  }
 
 
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multimap(_InputIterator __f, _InputIterator __l)
   hash_multimap(_InputIterator __f, _InputIterator __l)
     : _M_ht(100, hasher(), key_equal(), allocator_type())
     : _M_ht(100, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
                 const hasher& __hf)
                 const hasher& __hf)
     : _M_ht(__n, __hf, key_equal(), allocator_type())
     : _M_ht(__n, __hf, key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
                 const hasher& __hf, const key_equal& __eql,
                 const hasher& __hf, const key_equal& __eql,
                 const allocator_type& __a = allocator_type())
                 const allocator_type& __a = allocator_type())
     : _M_ht(__n, __hf, __eql, __a)
     : _M_ht(__n, __hf, __eql, __a)
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
 
 
 public:
 public:
   size_type size() const { return _M_ht.size(); }
   size_type size() const { return _M_ht.size(); }
@@ -296,8 +332,7 @@ public:
   bool empty() const { return _M_ht.empty(); }
   bool empty() const { return _M_ht.empty(); }
   void swap(hash_multimap& __hs) { _M_ht.swap(__hs._M_ht); }
   void swap(hash_multimap& __hs) { _M_ht.swap(__hs._M_ht); }
 
 
-  friend bool operator==<>(const hash_multimap&,
-                           const hash_multimap&);
+  friend bool operator==<>(const hash_multimap&, const hash_multimap&);
 
 
   iterator begin() { return _M_ht.begin(); }
   iterator begin() { return _M_ht.begin(); }
   iterator end() { return _M_ht.end(); }
   iterator end() { return _M_ht.end(); }
@@ -306,26 +341,38 @@ public:
 
 
 public:
 public:
   iterator insert(const value_type& __obj)
   iterator insert(const value_type& __obj)
-    { return _M_ht.insert_equal(__obj); }
+  {
+    return _M_ht.insert_equal(__obj);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   void insert(_InputIterator __f, _InputIterator __l)
   void insert(_InputIterator __f, _InputIterator __l)
-    { _M_ht.insert_equal(__f,__l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   iterator insert_noresize(const value_type& __obj)
   iterator insert_noresize(const value_type& __obj)
-    { return _M_ht.insert_equal_noresize(__obj); }
+  {
+    return _M_ht.insert_equal_noresize(__obj);
+  }
 
 
   iterator find(const key_type& __key) { return _M_ht.find(__key); }
   iterator find(const key_type& __key) { return _M_ht.find(__key); }
   const_iterator find(const key_type& __key) const
   const_iterator find(const key_type& __key) const
-    { return _M_ht.find(__key); }
+  {
+    return _M_ht.find(__key);
+  }
 
 
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
 
 
   std::pair<iterator, iterator> equal_range(const key_type& __key)
   std::pair<iterator, iterator> equal_range(const key_type& __key)
-    { return _M_ht.equal_range(__key); }
-  std::pair<const_iterator, const_iterator>
-  equal_range(const key_type& __key) const
-    { return _M_ht.equal_range(__key); }
+  {
+    return _M_ht.equal_range(__key);
+  }
+  std::pair<const_iterator, const_iterator> equal_range(
+    const key_type& __key) const
+  {
+    return _M_ht.equal_range(__key);
+  }
 
 
-  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+  size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void clear() { _M_ht.clear(); }
   void clear() { _M_ht.clear(); }
@@ -335,28 +382,29 @@ public:
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type elems_in_bucket(size_type __n) const
   size_type elems_in_bucket(size_type __n) const
-    { return _M_ht.elems_in_bucket(__n); }
+  {
+    return _M_ht.elems_in_bucket(__n);
+  }
 };
 };
 
 
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-bool
-operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
-           const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2)
+bool operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+                const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
 {
 {
   return __hm1._M_ht == __hm2._M_ht;
   return __hm1._M_ht == __hm2._M_ht;
 }
 }
 
 
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
 template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-inline bool
-operator!=(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
-           const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2) {
+inline bool operator!=(
+  const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
+  const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
+{
   return !(__hm1 == __hm2);
   return !(__hm1 == __hm2);
 }
 }
 
 
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
 template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
-     hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
+inline void swap(hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1,
+                 hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2)
 {
 {
   __hm1.swap(__hm2);
   __hm1.swap(__hm2);
 }
 }
@@ -364,12 +412,12 @@ swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@
 
 
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma reset woff 1174
-# pragma reset woff 1375
+#pragma reset woff 1174
+#pragma reset woff 1375
 #endif
 #endif
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (pop)
+#pragma warning(pop)
 #endif
 #endif
 
 
 #endif
 #endif

+ 125 - 92
hash_set.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 /*
 /*
  * Copyright (c) 1996
  * Copyright (c) 1996
  * Silicon Graphics Computer Systems, Inc.
  * Silicon Graphics Computer Systems, Inc.
@@ -38,49 +29,49 @@
 #define @KWSYS_NAMESPACE@_hash_set_hxx
 #define @KWSYS_NAMESPACE@_hash_set_hxx
 
 
 #include <@KWSYS_NAMESPACE@/hashtable.hxx>
 #include <@KWSYS_NAMESPACE@/hashtable.hxx>
+
 #include <@KWSYS_NAMESPACE@/hash_fun.hxx>
 #include <@KWSYS_NAMESPACE@/hash_fun.hxx>
+
 #include <functional> // equal_to
 #include <functional> // equal_to
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (push)
-# pragma warning (disable:4284)
-# pragma warning (disable:4786)
+#pragma warning(push)
+#pragma warning(disable : 4284)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma set woff 1174
-# pragma set woff 1375
+#pragma set woff 1174
+#pragma set woff 1375
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 // identity is an extension: it is not part of the standard.
 // identity is an extension: it is not part of the standard.
 template <class _Tp>
 template <class _Tp>
-struct _Identity : public std::unary_function<_Tp,_Tp>
+struct _Identity : public std::unary_function<_Tp, _Tp>
 {
 {
   const _Tp& operator()(const _Tp& __x) const { return __x; }
   const _Tp& operator()(const _Tp& __x) const { return __x; }
 };
 };
 
 
 // Forward declaration of equality operator; needed for friend declaration.
 // Forward declaration of equality operator; needed for friend declaration.
 
 
-template <class _Value,
-          class _HashFcn  = hash<_Value>,
+template <class _Value, class _HashFcn = hash<_Value>,
           class _EqualKey = std::equal_to<_Value>,
           class _EqualKey = std::equal_to<_Value>,
           class _Alloc = std::allocator<char> >
           class _Alloc = std::allocator<char> >
 class hash_set;
 class hash_set;
 
 
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
-bool
-operator==(const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs2);
+bool operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2);
 
 
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 class hash_set
 class hash_set
 {
 {
 private:
 private:
-  typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
-                    _EqualKey, _Alloc> _Ht;
+  typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, _EqualKey,
+                    _Alloc>
+    _Ht;
   _Ht _M_ht;
   _Ht _M_ht;
 
 
 public:
 public:
@@ -107,34 +98,50 @@ public:
 
 
 public:
 public:
   hash_set()
   hash_set()
-    : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(100, hasher(), key_equal(), allocator_type())
+  {
+  }
   explicit hash_set(size_type __n)
   explicit hash_set(size_type __n)
-    : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(__n, hasher(), key_equal(), allocator_type())
+  {
+  }
   hash_set(size_type __n, const hasher& __hf)
   hash_set(size_type __n, const hasher& __hf)
-    : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+    : _M_ht(__n, __hf, key_equal(), allocator_type())
+  {
+  }
   hash_set(size_type __n, const hasher& __hf, const key_equal& __eql,
   hash_set(size_type __n, const hasher& __hf, const key_equal& __eql,
            const allocator_type& __a = allocator_type())
            const allocator_type& __a = allocator_type())
-    : _M_ht(__n, __hf, __eql, __a) {}
+    : _M_ht(__n, __hf, __eql, __a)
+  {
+  }
 
 
   template <class _InputIterator>
   template <class _InputIterator>
   hash_set(_InputIterator __f, _InputIterator __l)
   hash_set(_InputIterator __f, _InputIterator __l)
     : _M_ht(100, hasher(), key_equal(), allocator_type())
     : _M_ht(100, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n)
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n)
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
            const hasher& __hf)
            const hasher& __hf)
     : _M_ht(__n, __hf, key_equal(), allocator_type())
     : _M_ht(__n, __hf, key_equal(), allocator_type())
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
            const hasher& __hf, const key_equal& __eql,
            const hasher& __hf, const key_equal& __eql,
            const allocator_type& __a = allocator_type())
            const allocator_type& __a = allocator_type())
     : _M_ht(__n, __hf, __eql, __a)
     : _M_ht(__n, __hf, __eql, __a)
-    { _M_ht.insert_unique(__f, __l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
 
 
 public:
 public:
   size_type size() const { return _M_ht.size(); }
   size_type size() const { return _M_ht.size(); }
@@ -142,27 +149,27 @@ public:
   bool empty() const { return _M_ht.empty(); }
   bool empty() const { return _M_ht.empty(); }
   void swap(hash_set& __hs) { _M_ht.swap(__hs._M_ht); }
   void swap(hash_set& __hs) { _M_ht.swap(__hs._M_ht); }
 
 
-  friend bool operator==<>(const hash_set&,
-                           const hash_set&);
+  friend bool operator==<>(const hash_set&, const hash_set&);
 
 
   iterator begin() const { return _M_ht.begin(); }
   iterator begin() const { return _M_ht.begin(); }
   iterator end() const { return _M_ht.end(); }
   iterator end() const { return _M_ht.end(); }
 
 
 public:
 public:
   std::pair<iterator, bool> insert(const value_type& __obj)
   std::pair<iterator, bool> insert(const value_type& __obj)
-    {
-      typedef typename _Ht::iterator _Ht_iterator;
-      std::pair<_Ht_iterator, bool> __p = _M_ht.insert_unique(__obj);
-      return std::pair<iterator,bool>(__p.first, __p.second);
-    }
+  {
+    typedef typename _Ht::iterator _Ht_iterator;
+    std::pair<_Ht_iterator, bool> __p = _M_ht.insert_unique(__obj);
+    return std::pair<iterator, bool>(__p.first, __p.second);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   void insert(_InputIterator __f, _InputIterator __l)
   void insert(_InputIterator __f, _InputIterator __l)
-    { _M_ht.insert_unique(__f,__l); }
+  {
+    _M_ht.insert_unique(__f, __l);
+  }
   std::pair<iterator, bool> insert_noresize(const value_type& __obj)
   std::pair<iterator, bool> insert_noresize(const value_type& __obj)
   {
   {
     typedef typename _Ht::iterator _Ht_iterator;
     typedef typename _Ht::iterator _Ht_iterator;
-    std::pair<_Ht_iterator, bool> __p =
-      _M_ht.insert_unique_noresize(__obj);
+    std::pair<_Ht_iterator, bool> __p = _M_ht.insert_unique_noresize(__obj);
     return std::pair<iterator, bool>(__p.first, __p.second);
     return std::pair<iterator, bool>(__p.first, __p.second);
   }
   }
 
 
@@ -171,9 +178,11 @@ public:
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
 
 
   std::pair<iterator, iterator> equal_range(const key_type& __key) const
   std::pair<iterator, iterator> equal_range(const key_type& __key) const
-    { return _M_ht.equal_range(__key); }
+  {
+    return _M_ht.equal_range(__key);
+  }
 
 
-  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+  size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void clear() { _M_ht.clear(); }
   void clear() { _M_ht.clear(); }
@@ -183,50 +192,49 @@ public:
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type elems_in_bucket(size_type __n) const
   size_type elems_in_bucket(size_type __n) const
-    { return _M_ht.elems_in_bucket(__n); }
+  {
+    return _M_ht.elems_in_bucket(__n);
+  }
 };
 };
 
 
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
-bool
-operator==(const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs2)
+bool operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2)
 {
 {
   return __hs1._M_ht == __hs2._M_ht;
   return __hs1._M_ht == __hs2._M_ht;
 }
 }
 
 
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
-inline bool
-operator!=(const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs2) {
+inline bool operator!=(
+  const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
+  const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2)
+{
   return !(__hs1 == __hs2);
   return !(__hs1 == __hs2);
 }
 }
 
 
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline void
-swap(hash_set<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
-     hash_set<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2)
+inline void swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                 hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
 {
 {
   __hs1.swap(__hs2);
   __hs1.swap(__hs2);
 }
 }
 
 
-template <class _Value,
-          class _HashFcn = hash<_Value>,
+template <class _Value, class _HashFcn = hash<_Value>,
           class _EqualKey = std::equal_to<_Value>,
           class _EqualKey = std::equal_to<_Value>,
           class _Alloc = std::allocator<char> >
           class _Alloc = std::allocator<char> >
 class hash_multiset;
 class hash_multiset;
 
 
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-bool
-operator==(const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2);
-
+bool operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2);
 
 
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
 class hash_multiset
 class hash_multiset
 {
 {
 private:
 private:
-  typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
-                    _EqualKey, _Alloc> _Ht;
+  typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, _EqualKey,
+                    _Alloc>
+    _Ht;
   _Ht _M_ht;
   _Ht _M_ht;
 
 
 public:
 public:
@@ -253,34 +261,50 @@ public:
 
 
 public:
 public:
   hash_multiset()
   hash_multiset()
-    : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(100, hasher(), key_equal(), allocator_type())
+  {
+  }
   explicit hash_multiset(size_type __n)
   explicit hash_multiset(size_type __n)
-    : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
+    : _M_ht(__n, hasher(), key_equal(), allocator_type())
+  {
+  }
   hash_multiset(size_type __n, const hasher& __hf)
   hash_multiset(size_type __n, const hasher& __hf)
-    : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
+    : _M_ht(__n, __hf, key_equal(), allocator_type())
+  {
+  }
   hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql,
   hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql,
                 const allocator_type& __a = allocator_type())
                 const allocator_type& __a = allocator_type())
-    : _M_ht(__n, __hf, __eql, __a) {}
+    : _M_ht(__n, __hf, __eql, __a)
+  {
+  }
 
 
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multiset(_InputIterator __f, _InputIterator __l)
   hash_multiset(_InputIterator __f, _InputIterator __l)
     : _M_ht(100, hasher(), key_equal(), allocator_type())
     : _M_ht(100, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n)
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n)
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
     : _M_ht(__n, hasher(), key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
                 const hasher& __hf)
                 const hasher& __hf)
     : _M_ht(__n, __hf, key_equal(), allocator_type())
     : _M_ht(__n, __hf, key_equal(), allocator_type())
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
   hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
                 const hasher& __hf, const key_equal& __eql,
                 const hasher& __hf, const key_equal& __eql,
                 const allocator_type& __a = allocator_type())
                 const allocator_type& __a = allocator_type())
     : _M_ht(__n, __hf, __eql, __a)
     : _M_ht(__n, __hf, __eql, __a)
-    { _M_ht.insert_equal(__f, __l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
 
 
 public:
 public:
   size_type size() const { return _M_ht.size(); }
   size_type size() const { return _M_ht.size(); }
@@ -288,29 +312,36 @@ public:
   bool empty() const { return _M_ht.empty(); }
   bool empty() const { return _M_ht.empty(); }
   void swap(hash_multiset& hs) { _M_ht.swap(hs._M_ht); }
   void swap(hash_multiset& hs) { _M_ht.swap(hs._M_ht); }
 
 
-  friend bool operator==<>(const hash_multiset&,
-                           const hash_multiset&);
+  friend bool operator==<>(const hash_multiset&, const hash_multiset&);
 
 
   iterator begin() const { return _M_ht.begin(); }
   iterator begin() const { return _M_ht.begin(); }
   iterator end() const { return _M_ht.end(); }
   iterator end() const { return _M_ht.end(); }
 
 
 public:
 public:
   iterator insert(const value_type& __obj)
   iterator insert(const value_type& __obj)
-    { return _M_ht.insert_equal(__obj); }
+  {
+    return _M_ht.insert_equal(__obj);
+  }
   template <class _InputIterator>
   template <class _InputIterator>
   void insert(_InputIterator __f, _InputIterator __l)
   void insert(_InputIterator __f, _InputIterator __l)
-    { _M_ht.insert_equal(__f,__l); }
+  {
+    _M_ht.insert_equal(__f, __l);
+  }
   iterator insert_noresize(const value_type& __obj)
   iterator insert_noresize(const value_type& __obj)
-    { return _M_ht.insert_equal_noresize(__obj); }
+  {
+    return _M_ht.insert_equal_noresize(__obj);
+  }
 
 
   iterator find(const key_type& __key) const { return _M_ht.find(__key); }
   iterator find(const key_type& __key) const { return _M_ht.find(__key); }
 
 
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
   size_type count(const key_type& __key) const { return _M_ht.count(__key); }
 
 
   std::pair<iterator, iterator> equal_range(const key_type& __key) const
   std::pair<iterator, iterator> equal_range(const key_type& __key) const
-    { return _M_ht.equal_range(__key); }
+  {
+    return _M_ht.equal_range(__key);
+  }
 
 
-  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
+  size_type erase(const key_type& __key) { return _M_ht.erase(__key); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __it) { _M_ht.erase(__it); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
   void clear() { _M_ht.clear(); }
   void clear() { _M_ht.clear(); }
@@ -320,40 +351,42 @@ public:
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type bucket_count() const { return _M_ht.bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
   size_type elems_in_bucket(size_type __n) const
   size_type elems_in_bucket(size_type __n) const
-    { return _M_ht.elems_in_bucket(__n); }
+  {
+    return _M_ht.elems_in_bucket(__n);
+  }
 };
 };
 
 
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-bool
-operator==(const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2)
+bool operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
 {
 {
   return __hs1._M_ht == __hs2._M_ht;
   return __hs1._M_ht == __hs2._M_ht;
 }
 }
 
 
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline bool
-operator!=(const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
-           const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2) {
+inline bool operator!=(
+  const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+  const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+{
   return !(__hs1 == __hs2);
   return !(__hs1 == __hs2);
 }
 }
 
 
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
 template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline void
-swap(hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
-     hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2) {
+inline void swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
+                 hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
+{
   __hs1.swap(__hs2);
   __hs1.swap(__hs2);
 }
 }
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@
 
 
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
 #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-# pragma reset woff 1174
-# pragma reset woff 1375
+#pragma reset woff 1174
+#pragma reset woff 1375
 #endif
 #endif
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (pop)
+#pragma warning(pop)
 #endif
 #endif
 
 
 #endif
 #endif

+ 241 - 245
hashtable.hxx.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 /*
 /*
  * Copyright (c) 1996
  * Copyright (c) 1996
  * Silicon Graphics Computer Systems, Inc.
  * Silicon Graphics Computer Systems, Inc.
@@ -35,31 +26,31 @@
  *
  *
  */
  */
 #ifdef __BORLANDC__
 #ifdef __BORLANDC__
-# pragma warn -8027 /* 'for' not inlined.  */
-# pragma warn -8026 /* 'exception' not inlined.  */
-#endif 
+#pragma warn - 8027 /* 'for' not inlined.  */
+#pragma warn - 8026 /* 'exception' not inlined.  */
+#endif
 
 
 #ifndef @KWSYS_NAMESPACE@_hashtable_hxx
 #ifndef @KWSYS_NAMESPACE@_hashtable_hxx
 #define @KWSYS_NAMESPACE@_hashtable_hxx
 #define @KWSYS_NAMESPACE@_hashtable_hxx
 
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
 
 
-#include <stddef.h>   // size_t
 #include <algorithm>  // lower_bound
 #include <algorithm>  // lower_bound
 #include <functional> // unary_function
 #include <functional> // unary_function
 #include <iterator>   // iterator_traits
 #include <iterator>   // iterator_traits
 #include <memory>     // allocator
 #include <memory>     // allocator
+#include <stddef.h>   // size_t
 #include <utility>    // pair
 #include <utility>    // pair
 #include <vector>     // vector
 #include <vector>     // vector
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (push)
-# pragma warning (disable:4284)
-# pragma warning (disable:4786)
-# pragma warning (disable:4512) /* no assignment operator for class */
+#pragma warning(push)
+#pragma warning(disable : 4284)
+#pragma warning(disable : 4786)
+#pragma warning(disable : 4512) /* no assignment operator for class */
 #endif
 #endif
 #if defined(__sgi) && !defined(__GNUC__)
 #if defined(__sgi) && !defined(__GNUC__)
-# pragma set woff 3970 /* pointer to int conversion */ 3321 3968
+#pragma set woff 3970 /* pointer to int conversion */ 3321 3968
 #endif
 #endif
 
 
 // In C++11, clang will warn about using dynamic exception specifications
 // In C++11, clang will warn about using dynamic exception specifications
@@ -67,14 +58,13 @@
 // mimic unordered_set and unordered_map, we want to keep the 'throw()'
 // mimic unordered_set and unordered_map, we want to keep the 'throw()'
 // decorations below.  So we suppress the warning.
 // decorations below.  So we suppress the warning.
 #if defined(__clang__) && defined(__has_warning)
 #if defined(__clang__) && defined(__has_warning)
-# if __has_warning("-Wdeprecated")
-#  pragma clang diagnostic push
-#  pragma clang diagnostic ignored "-Wdeprecated"
-# endif
+#if __has_warning("-Wdeprecated")
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+#endif
 #endif
 #endif
 
 
-namespace @KWSYS_NAMESPACE@
-{
+namespace @KWSYS_NAMESPACE@ {
 
 
 template <class _Val>
 template <class _Val>
 struct _Hashtable_node
 struct _Hashtable_node
@@ -82,34 +72,35 @@ struct _Hashtable_node
   _Hashtable_node* _M_next;
   _Hashtable_node* _M_next;
   _Val _M_val;
   _Val _M_val;
   void public_method_to_quiet_warning_about_all_methods_private();
   void public_method_to_quiet_warning_about_all_methods_private();
+
 private:
 private:
   void operator=(_Hashtable_node<_Val> const&); // poison node assignment
   void operator=(_Hashtable_node<_Val> const&); // poison node assignment
 };
 };
 
 
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey,
-          class _Alloc = std::allocator<char> >
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc = std::allocator<char> >
 class hashtable;
 class hashtable;
 
 
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey, class _Alloc>
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc>
 struct _Hashtable_iterator;
 struct _Hashtable_iterator;
 
 
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey, class _Alloc>
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc>
 struct _Hashtable_const_iterator;
 struct _Hashtable_const_iterator;
 
 
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_iterator {
-  typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
-          _Hashtable;
-  typedef _Hashtable_iterator<_Val, _Key, _HashFcn,
-                              _ExtractKey, _EqualKey, _Alloc>
-          iterator;
-  typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
-                                    _ExtractKey, _EqualKey, _Alloc>
-          const_iterator;
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc>
+struct _Hashtable_iterator
+{
+  typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>
+    _Hashtable;
+  typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey,
+                              _Alloc>
+    iterator;
+  typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+                                    _EqualKey, _Alloc>
+    const_iterator;
   typedef _Hashtable_node<_Val> _Node;
   typedef _Hashtable_node<_Val> _Node;
 
 
   typedef std::forward_iterator_tag iterator_category;
   typedef std::forward_iterator_tag iterator_category;
@@ -123,30 +114,31 @@ struct _Hashtable_iterator {
   _Hashtable* _M_ht;
   _Hashtable* _M_ht;
 
 
   _Hashtable_iterator(_Node* __n, _Hashtable* __tab)
   _Hashtable_iterator(_Node* __n, _Hashtable* __tab)
-    : _M_cur(__n), _M_ht(__tab) {}
+    : _M_cur(__n)
+    , _M_ht(__tab)
+  {
+  }
   _Hashtable_iterator() {}
   _Hashtable_iterator() {}
   reference operator*() const { return _M_cur->_M_val; }
   reference operator*() const { return _M_cur->_M_val; }
   pointer operator->() const { return &(operator*()); }
   pointer operator->() const { return &(operator*()); }
   iterator& operator++();
   iterator& operator++();
   iterator operator++(int);
   iterator operator++(int);
-  bool operator==(const iterator& __it) const
-    { return _M_cur == __it._M_cur; }
-  bool operator!=(const iterator& __it) const
-    { return _M_cur != __it._M_cur; }
+  bool operator==(const iterator& __it) const { return _M_cur == __it._M_cur; }
+  bool operator!=(const iterator& __it) const { return _M_cur != __it._M_cur; }
 };
 };
 
 
-
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_const_iterator {
-  typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
-          _Hashtable;
-  typedef _Hashtable_iterator<_Val,_Key,_HashFcn,
-                              _ExtractKey,_EqualKey,_Alloc>
-          iterator;
-  typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
-                                    _ExtractKey, _EqualKey, _Alloc>
-          const_iterator;
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc>
+struct _Hashtable_const_iterator
+{
+  typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>
+    _Hashtable;
+  typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey,
+                              _Alloc>
+    iterator;
+  typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+                                    _EqualKey, _Alloc>
+    const_iterator;
   typedef _Hashtable_node<_Val> _Node;
   typedef _Hashtable_node<_Val> _Node;
 
 
   typedef std::forward_iterator_tag iterator_category;
   typedef std::forward_iterator_tag iterator_category;
@@ -160,39 +152,53 @@ struct _Hashtable_const_iterator {
   const _Hashtable* _M_ht;
   const _Hashtable* _M_ht;
 
 
   _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab)
   _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab)
-    : _M_cur(__n), _M_ht(__tab) {}
+    : _M_cur(__n)
+    , _M_ht(__tab)
+  {
+  }
   _Hashtable_const_iterator() {}
   _Hashtable_const_iterator() {}
   _Hashtable_const_iterator(const iterator& __it)
   _Hashtable_const_iterator(const iterator& __it)
-    : _M_cur(__it._M_cur), _M_ht(__it._M_ht) {}
+    : _M_cur(__it._M_cur)
+    , _M_ht(__it._M_ht)
+  {
+  }
   reference operator*() const { return _M_cur->_M_val; }
   reference operator*() const { return _M_cur->_M_val; }
   pointer operator->() const { return &(operator*()); }
   pointer operator->() const { return &(operator*()); }
   const_iterator& operator++();
   const_iterator& operator++();
   const_iterator operator++(int);
   const_iterator operator++(int);
   bool operator==(const const_iterator& __it) const
   bool operator==(const const_iterator& __it) const
-    { return _M_cur == __it._M_cur; }
+  {
+    return _M_cur == __it._M_cur;
+  }
   bool operator!=(const const_iterator& __it) const
   bool operator!=(const const_iterator& __it) const
-    { return _M_cur != __it._M_cur; }
+  {
+    return _M_cur != __it._M_cur;
+  }
 };
 };
 
 
 // Note: assumes long is at least 32 bits.
 // Note: assumes long is at least 32 bits.
-enum { _stl_num_primes = 31 };
+enum
+{
+  _stl_num_primes = 31
+};
 
 
 // create a function with a static local to that function that returns
 // create a function with a static local to that function that returns
 // the static
 // the static
-static inline const unsigned long* get_stl_prime_list() {
-
-static const unsigned long _stl_prime_list[_stl_num_primes] =
+static inline const unsigned long* get_stl_prime_list()
 {
 {
-  5ul,          11ul,         23ul,
-  53ul,         97ul,         193ul,       389ul,       769ul,
-  1543ul,       3079ul,       6151ul,      12289ul,     24593ul,
-  49157ul,      98317ul,      196613ul,    393241ul,    786433ul,
-  1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul,
-  50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul,
-  1610612741ul, 3221225473ul, 4294967291ul
-};
 
 
-return &_stl_prime_list[0]; }
+  static const unsigned long _stl_prime_list[_stl_num_primes] = {
+    5ul,         11ul,        23ul,        53ul,         97ul,
+    193ul,       389ul,       769ul,       1543ul,       3079ul,
+    6151ul,      12289ul,     24593ul,     49157ul,      98317ul,
+    196613ul,    393241ul,    786433ul,    1572869ul,    3145739ul,
+    6291469ul,   12582917ul,  25165843ul,  50331653ul,   100663319ul,
+    201326611ul, 402653189ul, 805306457ul, 1610612741ul, 3221225473ul,
+    4294967291ul
+  };
+
+  return &_stl_prime_list[0];
+}
 
 
 static inline size_t _stl_next_prime(size_t __n)
 static inline size_t _stl_next_prime(size_t __n)
 {
 {
@@ -208,8 +214,8 @@ template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 class hashtable;
 class hashtable;
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
-                const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2);
+bool operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+                const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2);
 
 
 // Hashtables handle allocators a bit differently than other containers
 // Hashtables handle allocators a bit differently than other containers
 //  do.  If we're using standard-conforming allocators, then a hashtable
 //  do.  If we're using standard-conforming allocators, then a hashtable
@@ -219,20 +225,21 @@ bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
 //  Additionally, a base class wouldn't serve any other purposes; it
 //  Additionally, a base class wouldn't serve any other purposes; it
 //  wouldn't, for example, simplify the exception-handling code.
 //  wouldn't, for example, simplify the exception-handling code.
 
 
-template <class _Val, class _Key, class _HashFcn,
-          class _ExtractKey, class _EqualKey, class _Alloc>
-class hashtable {
+template <class _Val, class _Key, class _HashFcn, class _ExtractKey,
+          class _EqualKey, class _Alloc>
+class hashtable
+{
 public:
 public:
   typedef _Key key_type;
   typedef _Key key_type;
   typedef _Val value_type;
   typedef _Val value_type;
   typedef _HashFcn hasher;
   typedef _HashFcn hasher;
   typedef _EqualKey key_equal;
   typedef _EqualKey key_equal;
 
 
-  typedef size_t            size_type;
-  typedef ptrdiff_t         difference_type;
-  typedef value_type*       pointer;
+  typedef size_t size_type;
+  typedef ptrdiff_t difference_type;
+  typedef value_type* pointer;
   typedef const value_type* const_pointer;
   typedef const value_type* const_pointer;
-  typedef value_type&       reference;
+  typedef value_type& reference;
   typedef const value_type& const_reference;
   typedef const value_type& const_reference;
 
 
   hasher hash_funct() const { return _M_hash; }
   hasher hash_funct() const { return _M_hash; }
@@ -245,75 +252,74 @@ public:
   typedef typename _Alloc::template rebind<_Val>::other allocator_type;
   typedef typename _Alloc::template rebind<_Val>::other allocator_type;
   allocator_type get_allocator() const { return _M_node_allocator; }
   allocator_type get_allocator() const { return _M_node_allocator; }
 private:
 private:
-  typedef typename _Alloc::template rebind<_Node>::other _M_node_allocator_type;
-  typedef typename _Alloc::template rebind<_Node*>::other _M_node_ptr_allocator_type;
-  typedef std::vector<_Node*,_M_node_ptr_allocator_type> _M_buckets_type;
+  typedef
+    typename _Alloc::template rebind<_Node>::other _M_node_allocator_type;
+  typedef
+    typename _Alloc::template rebind<_Node*>::other _M_node_ptr_allocator_type;
+  typedef std::vector<_Node*, _M_node_ptr_allocator_type> _M_buckets_type;
 
 
 private:
 private:
   _M_node_allocator_type _M_node_allocator;
   _M_node_allocator_type _M_node_allocator;
-  hasher                 _M_hash;
-  key_equal              _M_equals;
-  _ExtractKey            _M_get_key;
-  _M_buckets_type        _M_buckets;
-  size_type              _M_num_elements;
+  hasher _M_hash;
+  key_equal _M_equals;
+  _ExtractKey _M_get_key;
+  _M_buckets_type _M_buckets;
+  size_type _M_num_elements;
 
 
   _Node* _M_get_node() { return _M_node_allocator.allocate(1); }
   _Node* _M_get_node() { return _M_node_allocator.allocate(1); }
   void _M_put_node(_Node* __p) { _M_node_allocator.deallocate(__p, 1); }
   void _M_put_node(_Node* __p) { _M_node_allocator.deallocate(__p, 1); }
 
 
 public:
 public:
-  typedef _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
-          iterator;
-  typedef _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,
-                                    _Alloc>
-          const_iterator;
-
-  friend struct
-  _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
-  friend struct
-  _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
+  typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey,
+                              _Alloc>
+    iterator;
+  typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+                                    _EqualKey, _Alloc>
+    const_iterator;
+
+  friend struct _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+                                    _EqualKey, _Alloc>;
+  friend struct _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey,
+                                          _EqualKey, _Alloc>;
 
 
 public:
 public:
-  hashtable(size_type __n,
-            const _HashFcn&    __hf,
-            const _EqualKey&   __eql,
+  hashtable(size_type __n, const _HashFcn& __hf, const _EqualKey& __eql,
             const _ExtractKey& __ext,
             const _ExtractKey& __ext,
             const allocator_type& __a = allocator_type())
             const allocator_type& __a = allocator_type())
-    : _M_node_allocator(__a),
-      _M_hash(__hf),
-      _M_equals(__eql),
-      _M_get_key(__ext),
-      _M_buckets(__a),
-      _M_num_elements(0)
+    : _M_node_allocator(__a)
+    , _M_hash(__hf)
+    , _M_equals(__eql)
+    , _M_get_key(__ext)
+    , _M_buckets(__a)
+    , _M_num_elements(0)
   {
   {
     _M_initialize_buckets(__n);
     _M_initialize_buckets(__n);
   }
   }
 
 
-  hashtable(size_type __n,
-            const _HashFcn&    __hf,
-            const _EqualKey&   __eql,
+  hashtable(size_type __n, const _HashFcn& __hf, const _EqualKey& __eql,
             const allocator_type& __a = allocator_type())
             const allocator_type& __a = allocator_type())
-    : _M_node_allocator(__a),
-      _M_hash(__hf),
-      _M_equals(__eql),
-      _M_get_key(_ExtractKey()),
-      _M_buckets(__a),
-      _M_num_elements(0)
+    : _M_node_allocator(__a)
+    , _M_hash(__hf)
+    , _M_equals(__eql)
+    , _M_get_key(_ExtractKey())
+    , _M_buckets(__a)
+    , _M_num_elements(0)
   {
   {
     _M_initialize_buckets(__n);
     _M_initialize_buckets(__n);
   }
   }
 
 
   hashtable(const hashtable& __ht)
   hashtable(const hashtable& __ht)
-    : _M_node_allocator(__ht.get_allocator()),
-      _M_hash(__ht._M_hash),
-      _M_equals(__ht._M_equals),
-      _M_get_key(__ht._M_get_key),
-      _M_buckets(__ht.get_allocator()),
-      _M_num_elements(0)
+    : _M_node_allocator(__ht.get_allocator())
+    , _M_hash(__ht._M_hash)
+    , _M_equals(__ht._M_equals)
+    , _M_get_key(__ht._M_get_key)
+    , _M_buckets(__ht.get_allocator())
+    , _M_num_elements(0)
   {
   {
     _M_copy_from(__ht);
     _M_copy_from(__ht);
   }
   }
 
 
-  hashtable& operator= (const hashtable& __ht)
+  hashtable& operator=(const hashtable& __ht)
   {
   {
     if (&__ht != this) {
     if (&__ht != this) {
       clear();
       clear();
@@ -360,15 +366,15 @@ public:
 
 
   const_iterator end() const { return const_iterator(0, this); }
   const_iterator end() const { return const_iterator(0, this); }
 
 
-  friend bool operator==<>(const hashtable&,
-                           const hashtable&);
+  friend bool operator==<>(const hashtable&, const hashtable&);
 
 
 public:
 public:
-
   size_type bucket_count() const { return _M_buckets.size(); }
   size_type bucket_count() const { return _M_buckets.size(); }
 
 
   size_type max_bucket_count() const
   size_type max_bucket_count() const
-    { return get_stl_prime_list()[(int)_stl_num_primes - 1]; }
+  {
+    return get_stl_prime_list()[(int)_stl_num_primes - 1];
+  }
 
 
   size_type elems_in_bucket(size_type __bucket) const
   size_type elems_in_bucket(size_type __bucket) const
   {
   {
@@ -396,14 +402,16 @@ public:
   template <class _InputIterator>
   template <class _InputIterator>
   void insert_unique(_InputIterator __f, _InputIterator __l)
   void insert_unique(_InputIterator __f, _InputIterator __l)
   {
   {
-    insert_unique(__f, __l,
+    insert_unique(
+      __f, __l,
       typename std::iterator_traits<_InputIterator>::iterator_category());
       typename std::iterator_traits<_InputIterator>::iterator_category());
   }
   }
 
 
   template <class _InputIterator>
   template <class _InputIterator>
   void insert_equal(_InputIterator __f, _InputIterator __l)
   void insert_equal(_InputIterator __f, _InputIterator __l)
   {
   {
-    insert_equal(__f, __l,
+    insert_equal(
+      __f, __l,
       typename std::iterator_traits<_InputIterator>::iterator_category());
       typename std::iterator_traits<_InputIterator>::iterator_category());
   }
   }
 
 
@@ -411,7 +419,7 @@ public:
   void insert_unique(_InputIterator __f, _InputIterator __l,
   void insert_unique(_InputIterator __f, _InputIterator __l,
                      std::input_iterator_tag)
                      std::input_iterator_tag)
   {
   {
-    for ( ; __f != __l; ++__f)
+    for (; __f != __l; ++__f)
       insert_unique(*__f);
       insert_unique(*__f);
   }
   }
 
 
@@ -419,7 +427,7 @@ public:
   void insert_equal(_InputIterator __f, _InputIterator __l,
   void insert_equal(_InputIterator __f, _InputIterator __l,
                     std::input_iterator_tag)
                     std::input_iterator_tag)
   {
   {
-    for ( ; __f != __l; ++__f)
+    for (; __f != __l; ++__f)
       insert_equal(*__f);
       insert_equal(*__f);
   }
   }
 
 
@@ -430,7 +438,7 @@ public:
     size_type __n = 0;
     size_type __n = 0;
     std::distance(__f, __l, __n);
     std::distance(__f, __l, __n);
     resize(_M_num_elements + __n);
     resize(_M_num_elements + __n);
-    for ( ; __n > 0; --__n, ++__f)
+    for (; __n > 0; --__n, ++__f)
       insert_unique_noresize(*__f);
       insert_unique_noresize(*__f);
   }
   }
 
 
@@ -441,7 +449,7 @@ public:
     size_type __n = 0;
     size_type __n = 0;
     std::distance(__f, __l, __n);
     std::distance(__f, __l, __n);
     resize(_M_num_elements + __n);
     resize(_M_num_elements + __n);
-    for ( ; __n > 0; --__n, ++__f)
+    for (; __n > 0; --__n, ++__f)
       insert_equal_noresize(*__f);
       insert_equal_noresize(*__f);
   }
   }
 
 
@@ -451,10 +459,10 @@ public:
   {
   {
     size_type __n = _M_bkt_num_key(__key);
     size_type __n = _M_bkt_num_key(__key);
     _Node* __first;
     _Node* __first;
-    for ( __first = _M_buckets[__n];
-          __first && !_M_equals(_M_get_key(__first->_M_val), __key);
-          __first = __first->_M_next)
-      {}
+    for (__first = _M_buckets[__n];
+         __first && !_M_equals(_M_get_key(__first->_M_val), __key);
+         __first = __first->_M_next) {
+    }
     return iterator(__first, this);
     return iterator(__first, this);
   }
   }
 
 
@@ -462,10 +470,10 @@ public:
   {
   {
     size_type __n = _M_bkt_num_key(__key);
     size_type __n = _M_bkt_num_key(__key);
     const _Node* __first;
     const _Node* __first;
-    for ( __first = _M_buckets[__n];
-          __first && !_M_equals(_M_get_key(__first->_M_val), __key);
-          __first = __first->_M_next)
-      {}
+    for (__first = _M_buckets[__n];
+         __first && !_M_equals(_M_get_key(__first->_M_val), __key);
+         __first = __first->_M_next) {
+    }
     return const_iterator(__first, this);
     return const_iterator(__first, this);
   }
   }
 
 
@@ -480,11 +488,10 @@ public:
     return __result;
     return __result;
   }
   }
 
 
-  std::pair<iterator, iterator>
-  equal_range(const key_type& __key);
+  std::pair<iterator, iterator> equal_range(const key_type& __key);
 
 
-  std::pair<const_iterator, const_iterator>
-  equal_range(const key_type& __key) const;
+  std::pair<const_iterator, const_iterator> equal_range(
+    const key_type& __key) const;
 
 
   size_type erase(const key_type& __key);
   size_type erase(const key_type& __key);
   void erase(const iterator& __it);
   void erase(const iterator& __it);
@@ -497,14 +504,13 @@ public:
   void clear();
   void clear();
 
 
 private:
 private:
-  size_type _M_next_size(size_type __n) const
-    { return _stl_next_prime(__n); }
+  size_type _M_next_size(size_type __n) const { return _stl_next_prime(__n); }
 
 
   void _M_initialize_buckets(size_type __n)
   void _M_initialize_buckets(size_type __n)
   {
   {
     const size_type __n_buckets = _M_next_size(__n);
     const size_type __n_buckets = _M_next_size(__n);
     _M_buckets.reserve(__n_buckets);
     _M_buckets.reserve(__n_buckets);
-    _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0);
+    _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*)0);
     _M_num_elements = 0;
     _M_num_elements = 0;
   }
   }
 
 
@@ -528,15 +534,12 @@ private:
     return _M_bkt_num_key(_M_get_key(__obj), __n);
     return _M_bkt_num_key(_M_get_key(__obj), __n);
   }
   }
 
 
-  void construct(_Val* p, const _Val& v)
-    {
-    new (p) _Val(v);
-    }
+  void construct(_Val* p, const _Val& v) { new (p) _Val(v); }
   void destroy(_Val* p)
   void destroy(_Val* p)
-    {
+  {
     (void)p;
     (void)p;
     p->~_Val();
     p->~_Val();
-    }
+  }
 
 
   _Node* _M_new_node(const value_type& __obj)
   _Node* _M_new_node(const value_type& __obj)
   {
   {
@@ -545,8 +548,10 @@ private:
     try {
     try {
       construct(&__n->_M_val, __obj);
       construct(&__n->_M_val, __obj);
       return __n;
       return __n;
+    } catch (...) {
+      _M_put_node(__n);
+      throw;
     }
     }
-    catch(...) {_M_put_node(__n); throw;}
   }
   }
 
 
   void _M_delete_node(_Node* __n)
   void _M_delete_node(_Node* __n)
@@ -559,13 +564,12 @@ private:
   void _M_erase_bucket(const size_type __n, _Node* __last);
   void _M_erase_bucket(const size_type __n, _Node* __last);
 
 
   void _M_copy_from(const hashtable& __ht);
   void _M_copy_from(const hashtable& __ht);
-
 };
 };
 
 
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
           class _All>
           class _All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
+_Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>&
+  _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::operator++()
 {
 {
   const _Node* __old = _M_cur;
   const _Node* __old = _M_cur;
   _M_cur = _M_cur->_M_next;
   _M_cur = _M_cur->_M_next;
@@ -579,8 +583,8 @@ _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
 
 
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
           class _All>
           class _All>
-inline _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
+inline _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>
+  _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::operator++(int)
 {
 {
   iterator __tmp = *this;
   iterator __tmp = *this;
   ++*this;
   ++*this;
@@ -589,8 +593,8 @@ _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
 
 
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
           class _All>
           class _All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
+_Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>&
+  _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::operator++()
 {
 {
   const _Node* __old = _M_cur;
   const _Node* __old = _M_cur;
   _M_cur = _M_cur->_M_next;
   _M_cur = _M_cur->_M_next;
@@ -604,8 +608,8 @@ _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
 
 
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
 template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
           class _All>
           class _All>
-inline _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
+inline _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>
+  _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>::operator++(int)
 {
 {
   const_iterator __tmp = *this;
   const_iterator __tmp = *this;
   ++*this;
   ++*this;
@@ -613,18 +617,18 @@ _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
-                const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2)
+bool operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+                const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2)
 {
 {
-  typedef typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::_Node _Node;
+  typedef typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_Node _Node;
   if (__ht1._M_buckets.size() != __ht2._M_buckets.size())
   if (__ht1._M_buckets.size() != __ht2._M_buckets.size())
     return false;
     return false;
   for (int __n = 0; __n < __ht1._M_buckets.size(); ++__n) {
   for (int __n = 0; __n < __ht1._M_buckets.size(); ++__n) {
     _Node* __cur1 = __ht1._M_buckets[__n];
     _Node* __cur1 = __ht1._M_buckets[__n];
     _Node* __cur2 = __ht2._M_buckets[__n];
     _Node* __cur2 = __ht2._M_buckets[__n];
-    for ( ; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
-          __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
-      {}
+    for (; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
+         __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next) {
+    }
     if (__cur1 || __cur2)
     if (__cur1 || __cur2)
       return false;
       return false;
   }
   }
@@ -632,22 +636,24 @@ bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline bool operator!=(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
-                       const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2) {
+inline bool operator!=(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1,
+                       const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2)
+{
   return !(__ht1 == __ht2);
   return !(__ht1 == __ht2);
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Extract, class _EqKey,
 template <class _Val, class _Key, class _HF, class _Extract, class _EqKey,
           class _All>
           class _All>
 inline void swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1,
 inline void swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1,
-                 hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) {
+                 hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2)
+{
   __ht1.swap(__ht2);
   __ht1.swap(__ht2);
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-std::pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator, bool>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::insert_unique_noresize(const value_type& __obj)
+std::pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator, bool>
+hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::insert_unique_noresize(
+  const value_type& __obj)
 {
 {
   const size_type __n = _M_bkt_num(__obj);
   const size_type __n = _M_bkt_num(__obj);
   _Node* __first = _M_buckets[__n];
   _Node* __first = _M_buckets[__n];
@@ -664,9 +670,9 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::insert_equal_noresize(const value_type& __obj)
+typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator
+hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::insert_equal_noresize(
+  const value_type& __obj)
 {
 {
   const size_type __n = _M_bkt_num(__obj);
   const size_type __n = _M_bkt_num(__obj);
   _Node* __first = _M_buckets[__n];
   _Node* __first = _M_buckets[__n];
@@ -688,8 +694,8 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::reference
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::find_or_insert(const value_type& __obj)
+typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::reference hashtable<
+  _Val, _Key, _HF, _Ex, _Eq, _All>::find_or_insert(const value_type& __obj)
 {
 {
   resize(_M_num_elements + 1);
   resize(_M_num_elements + 1);
 
 
@@ -708,9 +714,9 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::find_or_insert(const value_type& __obj)
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-std::pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator,
-          typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::equal_range(const key_type& __key)
+std::pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator,
+          typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator>
+hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::equal_range(const key_type& __key)
 {
 {
   typedef std::pair<iterator, iterator> _Pii;
   typedef std::pair<iterator, iterator> _Pii;
   const size_type __n = _M_bkt_num_key(__key);
   const size_type __n = _M_bkt_num_key(__key);
@@ -723,27 +729,25 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::equal_range(const key_type& __key)
       for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
       for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
         if (_M_buckets[__m])
         if (_M_buckets[__m])
           return _Pii(iterator(__first, this),
           return _Pii(iterator(__first, this),
-                     iterator(_M_buckets[__m], this));
+                      iterator(_M_buckets[__m], this));
       return _Pii(iterator(__first, this), end());
       return _Pii(iterator(__first, this), end());
     }
     }
   return _Pii(end(), end());
   return _Pii(end(), end());
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-std::pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator,
-          typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::equal_range(const key_type& __key) const
+std::pair<typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator,
+          typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator>
+hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::equal_range(
+  const key_type& __key) const
 {
 {
   typedef std::pair<const_iterator, const_iterator> _Pii;
   typedef std::pair<const_iterator, const_iterator> _Pii;
   const size_type __n = _M_bkt_num_key(__key);
   const size_type __n = _M_bkt_num_key(__key);
 
 
-  for (const _Node* __first = _M_buckets[__n] ;
-       __first;
+  for (const _Node* __first = _M_buckets[__n]; __first;
        __first = __first->_M_next) {
        __first = __first->_M_next) {
     if (_M_equals(_M_get_key(__first->_M_val), __key)) {
     if (_M_equals(_M_get_key(__first->_M_val), __key)) {
-      for (const _Node* __cur = __first->_M_next;
-           __cur;
+      for (const _Node* __cur = __first->_M_next; __cur;
            __cur = __cur->_M_next)
            __cur = __cur->_M_next)
         if (!_M_equals(_M_get_key(__cur->_M_val), __key))
         if (!_M_equals(_M_get_key(__cur->_M_val), __key))
           return _Pii(const_iterator(__first, this),
           return _Pii(const_iterator(__first, this),
@@ -759,8 +763,8 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::size_type
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const key_type& __key)
+typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::size_type
+hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::erase(const key_type& __key)
 {
 {
   const size_type __n = _M_bkt_num_key(__key);
   const size_type __n = _M_bkt_num_key(__key);
   _Node* __first = _M_buckets[__n];
   _Node* __first = _M_buckets[__n];
@@ -776,8 +780,7 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const key_type& __key)
         __next = __cur->_M_next;
         __next = __cur->_M_next;
         ++__erased;
         ++__erased;
         --_M_num_elements;
         --_M_num_elements;
-      }
-      else {
+      } else {
         __cur = __next;
         __cur = __next;
         __next = __cur->_M_next;
         __next = __cur->_M_next;
       }
       }
@@ -793,7 +796,7 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const key_type& __key)
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::erase(const iterator& __it)
 {
 {
   _Node* __p = __it._M_cur;
   _Node* __p = __it._M_cur;
   if (__p) {
   if (__p) {
@@ -804,8 +807,7 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
       _M_buckets[__n] = __cur->_M_next;
       _M_buckets[__n] = __cur->_M_next;
       _M_delete_node(__cur);
       _M_delete_node(__cur);
       --_M_num_elements;
       --_M_num_elements;
-    }
-    else {
+    } else {
       _Node* __next = __cur->_M_next;
       _Node* __next = __cur->_M_next;
       while (__next) {
       while (__next) {
         if (__next == __p) {
         if (__next == __p) {
@@ -813,8 +815,7 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
           _M_delete_node(__next);
           _M_delete_node(__next);
           --_M_num_elements;
           --_M_num_elements;
           break;
           break;
-        }
-        else {
+        } else {
           __cur = __next;
           __cur = __next;
           __next = __cur->_M_next;
           __next = __cur->_M_next;
         }
         }
@@ -824,13 +825,13 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::erase(iterator __first, iterator __last)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::erase(iterator __first,
+                                                       iterator __last)
 {
 {
-  size_type __f_bucket = __first._M_cur ?
-    _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
-  size_type __l_bucket = __last._M_cur ?
-    _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
+  size_type __f_bucket =
+    __first._M_cur ? _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
+  size_type __l_bucket =
+    __last._M_cur ? _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
 
 
   if (__first._M_cur == __last._M_cur)
   if (__first._M_cur == __last._M_cur)
     return;
     return;
@@ -846,9 +847,8 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const_iterator __first,
-                                             const_iterator __last)
+inline void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::erase(
+  const_iterator __first, const_iterator __last)
 {
 {
   erase(iterator(const_cast<_Node*>(__first._M_cur),
   erase(iterator(const_cast<_Node*>(__first._M_cur),
                  const_cast<hashtable*>(__first._M_ht)),
                  const_cast<hashtable*>(__first._M_ht)),
@@ -857,24 +857,22 @@ hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const_iterator __first,
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const const_iterator& __it)
+inline void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::erase(
+  const const_iterator& __it)
 {
 {
   erase(iterator(const_cast<_Node*>(__it._M_cur),
   erase(iterator(const_cast<_Node*>(__it._M_cur),
                  const_cast<hashtable*>(__it._M_ht)));
                  const_cast<hashtable*>(__it._M_ht)));
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::resize(size_type __num_elements_hint)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::resize(
+  size_type __num_elements_hint)
 {
 {
   const size_type __old_n = _M_buckets.size();
   const size_type __old_n = _M_buckets.size();
   if (__num_elements_hint > __old_n) {
   if (__num_elements_hint > __old_n) {
     const size_type __n = _M_next_size(__num_elements_hint);
     const size_type __n = _M_next_size(__num_elements_hint);
     if (__n > __old_n) {
     if (__n > __old_n) {
-      _M_buckets_type __tmp(
-        __n, (_Node*)(0),
-        _M_buckets.get_allocator());
+      _M_buckets_type __tmp(__n, (_Node*)(0), _M_buckets.get_allocator());
       try {
       try {
         for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
         for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
           _Node* __first = _M_buckets[__bucket];
           _Node* __first = _M_buckets[__bucket];
@@ -887,8 +885,7 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
           }
           }
         }
         }
         _M_buckets.swap(__tmp);
         _M_buckets.swap(__tmp);
-      }
-      catch(...) {
+      } catch (...) {
         for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
         for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
           while (__tmp[__bucket]) {
           while (__tmp[__bucket]) {
             _Node* __next = __tmp[__bucket]->_M_next;
             _Node* __next = __tmp[__bucket]->_M_next;
@@ -903,16 +900,15 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::_M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_M_erase_bucket(
+  const size_type __n, _Node* __first, _Node* __last)
 {
 {
   _Node* __cur = _M_buckets[__n];
   _Node* __cur = _M_buckets[__n];
   if (__cur == __first)
   if (__cur == __first)
     _M_erase_bucket(__n, __last);
     _M_erase_bucket(__n, __last);
   else {
   else {
     _Node* __next;
     _Node* __next;
-    for (__next = __cur->_M_next;
-         __next != __first;
+    for (__next = __cur->_M_next; __next != __first;
          __cur = __next, __next = __cur->_M_next)
          __cur = __next, __next = __cur->_M_next)
       ;
       ;
     while (__next != __last) {
     while (__next != __last) {
@@ -925,8 +921,8 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::_M_erase_bucket(const size_type __n, _Node* __last)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_M_erase_bucket(
+  const size_type __n, _Node* __last)
 {
 {
   _Node* __cur = _M_buckets[__n];
   _Node* __cur = _M_buckets[__n];
   while (__cur != __last) {
   while (__cur != __last) {
@@ -939,7 +935,7 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
 }
 }
 
 
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::clear()
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::clear()
 {
 {
   for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
   for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
     _Node* __cur = _M_buckets[__i];
     _Node* __cur = _M_buckets[__i];
@@ -953,14 +949,13 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::clear()
   _M_num_elements = 0;
   _M_num_elements = 0;
 }
 }
 
 
-
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
 template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
-  ::_M_copy_from(const hashtable& __ht)
+void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_M_copy_from(
+  const hashtable& __ht)
 {
 {
   _M_buckets.clear();
   _M_buckets.clear();
   _M_buckets.reserve(__ht._M_buckets.size());
   _M_buckets.reserve(__ht._M_buckets.size());
-  _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0);
+  _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*)0);
   try {
   try {
     for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
     for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
       const _Node* __cur = __ht._M_buckets[__i];
       const _Node* __cur = __ht._M_buckets[__i];
@@ -968,8 +963,7 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
         _Node* __copy = _M_new_node(__cur->_M_val);
         _Node* __copy = _M_new_node(__cur->_M_val);
         _M_buckets[__i] = __copy;
         _M_buckets[__i] = __copy;
 
 
-        for (_Node* __next = __cur->_M_next;
-             __next;
+        for (_Node *__next = __cur->_M_next; __next;
              __cur = __next, __next = __cur->_M_next) {
              __cur = __next, __next = __cur->_M_next) {
           __copy->_M_next = _M_new_node(__next->_M_val);
           __copy->_M_next = _M_new_node(__next->_M_val);
           __copy = __copy->_M_next;
           __copy = __copy->_M_next;
@@ -977,21 +971,23 @@ void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
       }
       }
     }
     }
     _M_num_elements = __ht._M_num_elements;
     _M_num_elements = __ht._M_num_elements;
+  } catch (...) {
+    clear();
+    throw;
   }
   }
-  catch(...) {clear(); throw;}
 }
 }
 
 
 } // namespace @KWSYS_NAMESPACE@
 } // namespace @KWSYS_NAMESPACE@
 
 
 // Undo warning suppression.
 // Undo warning suppression.
 #if defined(__clang__) && defined(__has_warning)
 #if defined(__clang__) && defined(__has_warning)
-# if __has_warning("-Wdeprecated")
-#  pragma clang diagnostic pop
-# endif
+#if __has_warning("-Wdeprecated")
+#pragma clang diagnostic pop
+#endif
 #endif
 #endif
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (pop)
+#pragma warning(pop)
 #endif
 #endif
 
 
 #endif
 #endif

+ 2 - 11
kwsysHeaderDump.pl

@@ -1,15 +1,6 @@
 #!/usr/bin/perl
 #!/usr/bin/perl
-#=============================================================================
-# KWSys - Kitware System Library
-# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing#kwsys for details.
 
 
 if ( $#ARGV+1 < 2 )
 if ( $#ARGV+1 < 2 )
 {
 {

+ 3 - 11
kwsysPlatformTests.cmake

@@ -1,14 +1,6 @@
-#=============================================================================
-# KWSys - Kitware System Library
-# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing#kwsys for details.
+
 SET(KWSYS_PLATFORM_TEST_FILE_C kwsysPlatformTestsC.c)
 SET(KWSYS_PLATFORM_TEST_FILE_C kwsysPlatformTestsC.c)
 SET(KWSYS_PLATFORM_TEST_FILE_CXX kwsysPlatformTestsCXX.cxx)
 SET(KWSYS_PLATFORM_TEST_FILE_CXX kwsysPlatformTestsCXX.cxx)
 
 

+ 24 - 28
kwsysPlatformTestsC.c

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 /*
 /*
   Macros to define main() in a cross-platform way.
   Macros to define main() in a cross-platform way.
 
 
@@ -26,21 +17,23 @@
     }
     }
 */
 */
 #if defined(__CLASSIC_C__)
 #if defined(__CLASSIC_C__)
-# define KWSYS_PLATFORM_TEST_C_MAIN() \
-  main()
-# define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv) \
-  main(argc,argv) int argc; char* argv[];
+#define KWSYS_PLATFORM_TEST_C_MAIN() main()
+#define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv)                           \
+  main(argc, argv) int argc;                                                  \
+  char* argv[];
 #else
 #else
-# define KWSYS_PLATFORM_TEST_C_MAIN() \
-  main(void)
-# define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv) \
+#define KWSYS_PLATFORM_TEST_C_MAIN() main(void)
+#define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv)                           \
   main(int argc, char* argv[])
   main(int argc, char* argv[])
 #endif
 #endif
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 #ifdef TEST_KWSYS_C_HAS_PTRDIFF_T
 #ifdef TEST_KWSYS_C_HAS_PTRDIFF_T
 #include <stddef.h>
 #include <stddef.h>
-int f(ptrdiff_t n) { return n > 0; }
+int f(ptrdiff_t n)
+{
+  return n > 0;
+}
 int KWSYS_PLATFORM_TEST_C_MAIN()
 int KWSYS_PLATFORM_TEST_C_MAIN()
 {
 {
   char* p = 0;
   char* p = 0;
@@ -53,7 +46,10 @@ int KWSYS_PLATFORM_TEST_C_MAIN()
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 #ifdef TEST_KWSYS_C_HAS_SSIZE_T
 #ifdef TEST_KWSYS_C_HAS_SSIZE_T
 #include <unistd.h>
 #include <unistd.h>
-int f(ssize_t n) { return (int)n; }
+int f(ssize_t n)
+{
+  return (int)n;
+}
 int KWSYS_PLATFORM_TEST_C_MAIN()
 int KWSYS_PLATFORM_TEST_C_MAIN()
 {
 {
   ssize_t n = 0;
   ssize_t n = 0;
@@ -65,28 +61,28 @@ int KWSYS_PLATFORM_TEST_C_MAIN()
 #ifdef TEST_KWSYS_C_TYPE_MACROS
 #ifdef TEST_KWSYS_C_TYPE_MACROS
 char* info_macros =
 char* info_macros =
 #if defined(__SIZEOF_SHORT__)
 #if defined(__SIZEOF_SHORT__)
-"INFO:macro[__SIZEOF_SHORT__]\n"
+  "INFO:macro[__SIZEOF_SHORT__]\n"
 #endif
 #endif
 #if defined(__SIZEOF_INT__)
 #if defined(__SIZEOF_INT__)
-"INFO:macro[__SIZEOF_INT__]\n"
+  "INFO:macro[__SIZEOF_INT__]\n"
 #endif
 #endif
 #if defined(__SIZEOF_LONG__)
 #if defined(__SIZEOF_LONG__)
-"INFO:macro[__SIZEOF_LONG__]\n"
+  "INFO:macro[__SIZEOF_LONG__]\n"
 #endif
 #endif
 #if defined(__SIZEOF_LONG_LONG__)
 #if defined(__SIZEOF_LONG_LONG__)
-"INFO:macro[__SIZEOF_LONG_LONG__]\n"
+  "INFO:macro[__SIZEOF_LONG_LONG__]\n"
 #endif
 #endif
 #if defined(__SHORT_MAX__)
 #if defined(__SHORT_MAX__)
-"INFO:macro[__SHORT_MAX__]\n"
+  "INFO:macro[__SHORT_MAX__]\n"
 #endif
 #endif
 #if defined(__INT_MAX__)
 #if defined(__INT_MAX__)
-"INFO:macro[__INT_MAX__]\n"
+  "INFO:macro[__INT_MAX__]\n"
 #endif
 #endif
 #if defined(__LONG_MAX__)
 #if defined(__LONG_MAX__)
-"INFO:macro[__LONG_MAX__]\n"
+  "INFO:macro[__LONG_MAX__]\n"
 #endif
 #endif
 #if defined(__LONG_LONG_MAX__)
 #if defined(__LONG_LONG_MAX__)
-"INFO:macro[__LONG_LONG_MAX__]\n"
+  "INFO:macro[__LONG_LONG_MAX__]\n"
 #endif
 #endif
   "";
   "";
 
 

+ 81 - 66
kwsysPlatformTestsCXX.cxx

@@ -1,21 +1,18 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifdef TEST_KWSYS_CXX_HAS_CSTDIO
 #ifdef TEST_KWSYS_CXX_HAS_CSTDIO
 #include <cstdio>
 #include <cstdio>
-int main() { return 0; }
+int main()
+{
+  return 0;
+}
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_LONG_LONG
 #ifdef TEST_KWSYS_CXX_HAS_LONG_LONG
-long long f(long long n) { return n; }
+long long f(long long n)
+{
+  return n;
+}
 int main()
 int main()
 {
 {
   long long n = 0;
   long long n = 0;
@@ -24,7 +21,10 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS___INT64
 #ifdef TEST_KWSYS_CXX_HAS___INT64
-__int64 f(__int64 n) { return n; }
+__int64 f(__int64 n)
+{
+  return n;
+}
 int main()
 int main()
 {
 {
   __int64 n = 0;
   __int64 n = 0;
@@ -34,6 +34,7 @@ int main()
 
 
 #ifdef TEST_KWSYS_CXX_STAT_HAS_ST_MTIM
 #ifdef TEST_KWSYS_CXX_STAT_HAS_ST_MTIM
 #include <sys/types.h>
 #include <sys/types.h>
+
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
 int main()
 int main()
@@ -47,6 +48,7 @@ int main()
 
 
 #ifdef TEST_KWSYS_CXX_STAT_HAS_ST_MTIMESPEC
 #ifdef TEST_KWSYS_CXX_STAT_HAS_ST_MTIMESPEC
 #include <sys/types.h>
 #include <sys/types.h>
+
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
 int main()
 int main()
@@ -59,7 +61,9 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_SAME_LONG_AND___INT64
 #ifdef TEST_KWSYS_CXX_SAME_LONG_AND___INT64
-void function(long**) {}
+void function(long**)
+{
+}
 int main()
 int main()
 {
 {
   __int64** p = 0;
   __int64** p = 0;
@@ -69,7 +73,9 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_SAME_LONG_LONG_AND___INT64
 #ifdef TEST_KWSYS_CXX_SAME_LONG_LONG_AND___INT64
-void function(long long**) {}
+void function(long long**)
+{
+}
 int main()
 int main()
 {
 {
   __int64** p = 0;
   __int64** p = 0;
@@ -79,10 +85,10 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_IOS_HAS_ISTREAM_LONG_LONG
 #ifdef TEST_KWSYS_IOS_HAS_ISTREAM_LONG_LONG
-# include <iostream>
+#include <iostream>
 int test_istream(std::istream& is, long long& x)
 int test_istream(std::istream& is, long long& x)
 {
 {
-  return (is >> x)? 1:0;
+  return (is >> x) ? 1 : 0;
 }
 }
 int main()
 int main()
 {
 {
@@ -92,10 +98,10 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_IOS_HAS_OSTREAM_LONG_LONG
 #ifdef TEST_KWSYS_IOS_HAS_OSTREAM_LONG_LONG
-# include <iostream>
+#include <iostream>
 int test_ostream(std::ostream& os, long long x)
 int test_ostream(std::ostream& os, long long x)
 {
 {
-  return (os << x)? 1:0;
+  return (os << x) ? 1 : 0;
 }
 }
 int main()
 int main()
 {
 {
@@ -105,10 +111,10 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_IOS_HAS_ISTREAM___INT64
 #ifdef TEST_KWSYS_IOS_HAS_ISTREAM___INT64
-# include <iostream>
+#include <iostream>
 int test_istream(std::istream& is, __int64& x)
 int test_istream(std::istream& is, __int64& x)
 {
 {
-  return (is >> x)? 1:0;
+  return (is >> x) ? 1 : 0;
 }
 }
 int main()
 int main()
 {
 {
@@ -118,10 +124,10 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_IOS_HAS_OSTREAM___INT64
 #ifdef TEST_KWSYS_IOS_HAS_OSTREAM___INT64
-# include <iostream>
+#include <iostream>
 int test_ostream(std::ostream& os, __int64 x)
 int test_ostream(std::ostream& os, __int64 x)
 {
 {
-  return (os << x)? 1:0;
+  return (os << x) ? 1 : 0;
 }
 }
 int main()
 int main()
 {
 {
@@ -137,30 +143,31 @@ int main()
 #define _LARGE_FILES
 #define _LARGE_FILES
 #define _FILE_OFFSET_BITS 64
 #define _FILE_OFFSET_BITS 64
 #include <sys/types.h>
 #include <sys/types.h>
-#include <sys/stat.h>
+
 #include <assert.h>
 #include <assert.h>
+#include <sys/stat.h>
 #if KWSYS_CXX_HAS_CSTDIO
 #if KWSYS_CXX_HAS_CSTDIO
-# include <cstdio>
+#include <cstdio>
 #endif
 #endif
 #include <stdio.h>
 #include <stdio.h>
 
 
-int main(int, char **argv)
+int main(int, char** argv)
 {
 {
-  /* check that off_t can hold 2^63 - 1 and perform basic operations... */
-#define OFF_T_64 (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+/* check that off_t can hold 2^63 - 1 and perform basic operations... */
+#define OFF_T_64 (((off_t)1 << 62) - 1 + ((off_t)1 << 62))
   if (OFF_T_64 % 2147483647 != 1)
   if (OFF_T_64 % 2147483647 != 1)
     return 1;
     return 1;
 
 
   // stat breaks on SCO OpenServer
   // stat breaks on SCO OpenServer
   struct stat buf;
   struct stat buf;
-  stat( argv[0], &buf );
+  stat(argv[0], &buf);
   if (!S_ISREG(buf.st_mode))
   if (!S_ISREG(buf.st_mode))
     return 2;
     return 2;
 
 
-  FILE *file = fopen( argv[0], "r" );
-  off_t offset = ftello( file );
-  fseek( file, offset, SEEK_CUR );
-  fclose( file );
+  FILE* file = fopen(argv[0], "r");
+  off_t offset = ftello(file);
+  fseek(file, offset, SEEK_CUR);
+  fclose(file);
   return 0;
   return 0;
 }
 }
 #endif
 #endif
@@ -187,14 +194,14 @@ int main()
 int main()
 int main()
 {
 {
   char* e = environ[0];
   char* e = environ[0];
-  return e? 0:1;
+  return e ? 0 : 1;
 }
 }
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_GETLOADAVG
 #ifdef TEST_KWSYS_CXX_HAS_GETLOADAVG
 // Match feature definitions from SystemInformation.cxx
 // Match feature definitions from SystemInformation.cxx
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
+#define _GNU_SOURCE
 #endif
 #endif
 #include <stdlib.h>
 #include <stdlib.h>
 int main()
 int main()
@@ -205,17 +212,17 @@ int main()
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_RLIMIT64
 #ifdef TEST_KWSYS_CXX_HAS_RLIMIT64
-# if defined(KWSYS_HAS_LFS)
-#  define _LARGEFILE_SOURCE
-#  define _LARGEFILE64_SOURCE
-#  define _LARGE_FILES
-#  define _FILE_OFFSET_BITS 64
-# endif
-# include <sys/resource.h>
+#if defined(KWSYS_HAS_LFS)
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _LARGE_FILES
+#define _FILE_OFFSET_BITS 64
+#endif
+#include <sys/resource.h>
 int main()
 int main()
 {
 {
   struct rlimit64 rlim;
   struct rlimit64 rlim;
-  return getrlimit64(0,&rlim);
+  return getrlimit64(0, &rlim);
 }
 }
 #endif
 #endif
 
 
@@ -223,7 +230,7 @@ int main()
 #include <stdlib.h>
 #include <stdlib.h>
 int main()
 int main()
 {
 {
-  const char *str="1024";
+  const char* str = "1024";
   return static_cast<int>(atoll(str));
   return static_cast<int>(atoll(str));
 }
 }
 #endif
 #endif
@@ -232,7 +239,7 @@ int main()
 #include <stdlib.h>
 #include <stdlib.h>
 int main()
 int main()
 {
 {
-  const char *str="1024";
+  const char* str = "1024";
   return static_cast<int>(atol(str));
   return static_cast<int>(atol(str));
 }
 }
 #endif
 #endif
@@ -241,7 +248,7 @@ int main()
 #include <stdlib.h>
 #include <stdlib.h>
 int main()
 int main()
 {
 {
-  const char *str="1024";
+  const char* str = "1024";
   return static_cast<int>(_atoi64(str));
   return static_cast<int>(_atoi64(str));
 }
 }
 #endif
 #endif
@@ -260,58 +267,58 @@ int main()
 #include <sys/stat.h>
 #include <sys/stat.h>
 int main()
 int main()
 {
 {
-  struct timespec times[2] = {{0,UTIME_OMIT},{0,UTIME_NOW}};
+  struct timespec times[2] = { { 0, UTIME_OMIT }, { 0, UTIME_NOW } };
   return utimensat(AT_FDCWD, "/example", times, AT_SYMLINK_NOFOLLOW);
   return utimensat(AT_FDCWD, "/example", times, AT_SYMLINK_NOFOLLOW);
 }
 }
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_BACKTRACE
 #ifdef TEST_KWSYS_CXX_HAS_BACKTRACE
-#if defined(__PATHSCALE__) || defined(__PATHCC__) \
-  || (defined(__LSB_VERSION__) && (__LSB_VERSION__ < 41))
+#if defined(__PATHSCALE__) || defined(__PATHCC__) ||                          \
+  (defined(__LSB_VERSION__) && (__LSB_VERSION__ < 41))
 backtrace doesnt work with this compiler or os
 backtrace doesnt work with this compiler or os
 #endif
 #endif
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
+#define _GNU_SOURCE
 #endif
 #endif
 #include <execinfo.h>
 #include <execinfo.h>
 int main()
 int main()
 {
 {
-  void *stackSymbols[256];
-  backtrace(stackSymbols,256);
-  backtrace_symbols(&stackSymbols[0],1);
+  void* stackSymbols[256];
+  backtrace(stackSymbols, 256);
+  backtrace_symbols(&stackSymbols[0], 1);
   return 0;
   return 0;
 }
 }
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_DLADDR
 #ifdef TEST_KWSYS_CXX_HAS_DLADDR
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
+#define _GNU_SOURCE
 #endif
 #endif
 #include <dlfcn.h>
 #include <dlfcn.h>
 int main()
 int main()
 {
 {
   Dl_info info;
   Dl_info info;
-  int ierr=dladdr((void*)main,&info);
+  int ierr = dladdr((void*)main, &info);
   return 0;
   return 0;
 }
 }
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_CXXABI
 #ifdef TEST_KWSYS_CXX_HAS_CXXABI
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
 #if (defined(__GNUC__) || defined(__PGI)) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
+#define _GNU_SOURCE
 #endif
 #endif
-#if defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5130 \
-     && __linux && __SUNPRO_CC_COMPAT == 'G'
-#  include <iostream>
+#if defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5130 && __linux &&               \
+  __SUNPRO_CC_COMPAT == 'G'
+#include <iostream>
 #endif
 #endif
 #include <cxxabi.h>
 #include <cxxabi.h>
 int main()
 int main()
 {
 {
   int status = 0;
   int status = 0;
   size_t bufferLen = 512;
   size_t bufferLen = 512;
-  char buffer[512] = {'\0'};
-  const char *function="_ZN5kwsys17SystemInformation15GetProgramStackEii";
-  char *demangledFunction =
+  char buffer[512] = { '\0' };
+  const char* function = "_ZN5kwsys17SystemInformation15GetProgramStackEii";
+  char* demangledFunction =
     abi::__cxa_demangle(function, buffer, &bufferLen, &status);
     abi::__cxa_demangle(function, buffer, &bufferLen, &status);
   return status;
   return status;
 }
 }
@@ -346,11 +353,19 @@ int main()
 
 
 #ifdef TEST_KWSYS_STL_HAS_WSTRING
 #ifdef TEST_KWSYS_STL_HAS_WSTRING
 #include <string>
 #include <string>
-void f(std ::wstring*) {}
-int main() { return 0; }
+void f(std::wstring*)
+{
+}
+int main()
+{
+  return 0;
+}
 #endif
 #endif
 
 
 #ifdef TEST_KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H
 #ifdef TEST_KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H
 #include <ext/stdio_filebuf.h>
 #include <ext/stdio_filebuf.h>
-int main() { return 0; }
+int main()
+{
+  return 0;
+}
 #endif
 #endif

+ 6 - 13
kwsysPrivate.h

@@ -1,16 +1,7 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef KWSYS_NAMESPACE
 #ifndef KWSYS_NAMESPACE
-# error "Do not include kwsysPrivate.h outside of kwsys c and cxx files."
+#error "Do not include kwsysPrivate.h outside of kwsys c and cxx files."
 #endif
 #endif
 
 
 #ifndef _kwsysPrivate_h
 #ifndef _kwsysPrivate_h
@@ -24,7 +15,9 @@
   #include KWSYS_HEADER(Directory.hxx)
   #include KWSYS_HEADER(Directory.hxx)
   #include KWSYS_HEADER(std/vector)
   #include KWSYS_HEADER(std/vector)
 */
 */
+/* clang-format off */
 #define KWSYS_HEADER(x) KWSYS_HEADER0(KWSYS_NAMESPACE/x)
 #define KWSYS_HEADER(x) KWSYS_HEADER0(KWSYS_NAMESPACE/x)
+/* clang-format on */
 #define KWSYS_HEADER0(x) KWSYS_HEADER1(x)
 #define KWSYS_HEADER0(x) KWSYS_HEADER1(x)
 #define KWSYS_HEADER1(x) <x>
 #define KWSYS_HEADER1(x) <x>
 
 
@@ -37,5 +30,5 @@
 #define KWSYS_NAMESPACE_STRING1(x) #x
 #define KWSYS_NAMESPACE_STRING1(x) #x
 
 
 #else
 #else
-# error "kwsysPrivate.h included multiple times."
+#error "kwsysPrivate.h included multiple times."
 #endif
 #endif

+ 111 - 90
testCommandLineArguments.cxx

@@ -1,21 +1,12 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "CommandLineArguments.hxx.in"
+#include "CommandLineArguments.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
@@ -28,33 +19,45 @@ static void* random_ptr = reinterpret_cast<void*>(0x123);
 
 
 static int argument(const char* arg, const char* value, void* call_data)
 static int argument(const char* arg, const char* value, void* call_data)
 {
 {
-  std::cout << "Got argument: \"" << arg << "\" value: \"" << (value?value:"(null)") << "\"" << std::endl;
-  if ( call_data != random_ptr )
-    {
+  std::cout << "Got argument: \"" << arg << "\" value: \""
+            << (value ? value : "(null)") << "\"" << std::endl;
+  if (call_data != random_ptr) {
     std::cerr << "Problem processing call_data" << std::endl;
     std::cerr << "Problem processing call_data" << std::endl;
     return 0;
     return 0;
-    }
+  }
   return 1;
   return 1;
 }
 }
 
 
 static int unknown_argument(const char* argument, void* call_data)
 static int unknown_argument(const char* argument, void* call_data)
 {
 {
   std::cout << "Got unknown argument: \"" << argument << "\"" << std::endl;
   std::cout << "Got unknown argument: \"" << argument << "\"" << std::endl;
-  if ( call_data != random_ptr )
-    {
+  if (call_data != random_ptr) {
     std::cerr << "Problem processing call_data" << std::endl;
     std::cerr << "Problem processing call_data" << std::endl;
     return 0;
     return 0;
-    }
+  }
   return 1;
   return 1;
 }
 }
 
 
-static bool CompareTwoItemsOnList(bool i1, bool i2) { return i1 == i2; }
-static bool CompareTwoItemsOnList(int i1, int i2) { return i1 == i2; }
-static bool CompareTwoItemsOnList(double i1, double i2) { return i1 == i2; }
-static bool CompareTwoItemsOnList(const char* i1,
-  const char* i2) { return strcmp(i1, i2) == 0; }
-static bool CompareTwoItemsOnList(const std::string& i1,
-  const std::string& i2) { return i1 == i2; }
+static bool CompareTwoItemsOnList(bool i1, bool i2)
+{
+  return i1 == i2;
+}
+static bool CompareTwoItemsOnList(int i1, int i2)
+{
+  return i1 == i2;
+}
+static bool CompareTwoItemsOnList(double i1, double i2)
+{
+  return i1 == i2;
+}
+static bool CompareTwoItemsOnList(const char* i1, const char* i2)
+{
+  return strcmp(i1, i2) == 0;
+}
+static bool CompareTwoItemsOnList(const std::string& i1, const std::string& i2)
+{
+  return i1 == i2;
+}
 
 
 int testCommandLineArguments(int argc, char* argv[])
 int testCommandLineArguments(int argc, char* argv[])
 {
 {
@@ -97,73 +100,89 @@ int testCommandLineArguments(int argc, char* argv[])
 
 
   typedef kwsys::CommandLineArguments argT;
   typedef kwsys::CommandLineArguments argT;
 
 
-  arg.AddArgument("--some-int-variable", argT::SPACE_ARGUMENT, &some_int_variable, "Set some random int variable");
-  arg.AddArgument("--some-double-variable", argT::CONCAT_ARGUMENT, &some_double_variable, "Set some random double variable");
-  arg.AddArgument("--some-string-variable", argT::EQUAL_ARGUMENT, &some_string_variable, "Set some random string variable");
-  arg.AddArgument("--some-stl-string-variable", argT::EQUAL_ARGUMENT, &some_stl_string_variable, "Set some random stl string variable");
-  arg.AddArgument("--some-bool-variable", argT::EQUAL_ARGUMENT, &some_bool_variable, "Set some random bool variable");
-  arg.AddArgument("--another-bool-variable", argT::NO_ARGUMENT, &some_bool_variable1, "Set some random bool variable 1");
-  arg.AddBooleanArgument("--set-bool-arg1", &bool_arg1, "Test AddBooleanArgument 1");
-  arg.AddBooleanArgument("--set-bool-arg2", &bool_arg2, "Test AddBooleanArgument 2");
-  arg.AddArgument("--some-multi-argument", argT::MULTI_ARGUMENT, &numbers_argument, "Some multiple values variable");
-  arg.AddArgument("-N", argT::SPACE_ARGUMENT, &doubles_argument, "Some explicit multiple values variable");
-  arg.AddArgument("-BB", argT::CONCAT_ARGUMENT, &bools_argument, "Some explicit multiple values variable");
-  arg.AddArgument("-SS", argT::EQUAL_ARGUMENT, &strings_argument, "Some explicit multiple values variable");
-  arg.AddArgument("-SSS", argT::MULTI_ARGUMENT, &stl_strings_argument, "Some explicit multiple values variable");
-
-  arg.AddCallback("-A", argT::NO_ARGUMENT, argument, random_ptr, "Some option -A. This option has a multiline comment. It should demonstrate how the code splits lines.");
-  arg.AddCallback("-B", argT::SPACE_ARGUMENT, argument, random_ptr, "Option -B takes argument with space");
-  arg.AddCallback("-C", argT::EQUAL_ARGUMENT, argument, random_ptr, "Option -C takes argument after =");
-  arg.AddCallback("-D", argT::CONCAT_ARGUMENT, argument, random_ptr, "This option takes concatinated argument");
+  arg.AddArgument("--some-int-variable", argT::SPACE_ARGUMENT,
+                  &some_int_variable, "Set some random int variable");
+  arg.AddArgument("--some-double-variable", argT::CONCAT_ARGUMENT,
+                  &some_double_variable, "Set some random double variable");
+  arg.AddArgument("--some-string-variable", argT::EQUAL_ARGUMENT,
+                  &some_string_variable, "Set some random string variable");
+  arg.AddArgument("--some-stl-string-variable", argT::EQUAL_ARGUMENT,
+                  &some_stl_string_variable,
+                  "Set some random stl string variable");
+  arg.AddArgument("--some-bool-variable", argT::EQUAL_ARGUMENT,
+                  &some_bool_variable, "Set some random bool variable");
+  arg.AddArgument("--another-bool-variable", argT::NO_ARGUMENT,
+                  &some_bool_variable1, "Set some random bool variable 1");
+  arg.AddBooleanArgument("--set-bool-arg1", &bool_arg1,
+                         "Test AddBooleanArgument 1");
+  arg.AddBooleanArgument("--set-bool-arg2", &bool_arg2,
+                         "Test AddBooleanArgument 2");
+  arg.AddArgument("--some-multi-argument", argT::MULTI_ARGUMENT,
+                  &numbers_argument, "Some multiple values variable");
+  arg.AddArgument("-N", argT::SPACE_ARGUMENT, &doubles_argument,
+                  "Some explicit multiple values variable");
+  arg.AddArgument("-BB", argT::CONCAT_ARGUMENT, &bools_argument,
+                  "Some explicit multiple values variable");
+  arg.AddArgument("-SS", argT::EQUAL_ARGUMENT, &strings_argument,
+                  "Some explicit multiple values variable");
+  arg.AddArgument("-SSS", argT::MULTI_ARGUMENT, &stl_strings_argument,
+                  "Some explicit multiple values variable");
+
+  arg.AddCallback("-A", argT::NO_ARGUMENT, argument, random_ptr,
+                  "Some option -A. This option has a multiline comment. It "
+                  "should demonstrate how the code splits lines.");
+  arg.AddCallback("-B", argT::SPACE_ARGUMENT, argument, random_ptr,
+                  "Option -B takes argument with space");
+  arg.AddCallback("-C", argT::EQUAL_ARGUMENT, argument, random_ptr,
+                  "Option -C takes argument after =");
+  arg.AddCallback("-D", argT::CONCAT_ARGUMENT, argument, random_ptr,
+                  "This option takes concatinated argument");
   arg.AddCallback("--long1", argT::NO_ARGUMENT, argument, random_ptr, "-A");
   arg.AddCallback("--long1", argT::NO_ARGUMENT, argument, random_ptr, "-A");
   arg.AddCallback("--long2", argT::SPACE_ARGUMENT, argument, random_ptr, "-B");
   arg.AddCallback("--long2", argT::SPACE_ARGUMENT, argument, random_ptr, "-B");
-  arg.AddCallback("--long3", argT::EQUAL_ARGUMENT, argument, random_ptr, "Same as -C but a bit different");
-  arg.AddCallback("--long4", argT::CONCAT_ARGUMENT, argument, random_ptr, "-C");
+  arg.AddCallback("--long3", argT::EQUAL_ARGUMENT, argument, random_ptr,
+                  "Same as -C but a bit different");
+  arg.AddCallback("--long4", argT::CONCAT_ARGUMENT, argument, random_ptr,
+                  "-C");
 
 
-  if ( !arg.Parse() )
-    {
+  if (!arg.Parse()) {
     std::cerr << "Problem parsing arguments" << std::endl;
     std::cerr << "Problem parsing arguments" << std::endl;
     res = 1;
     res = 1;
-    }
+  }
   std::cout << "Help: " << arg.GetHelp() << std::endl;
   std::cout << "Help: " << arg.GetHelp() << std::endl;
 
 
-  std::cout << "Some int variable was set to: " << some_int_variable << std::endl;
-  std::cout << "Some double variable was set to: " << some_double_variable << std::endl;
-  if ( some_string_variable && strcmp(some_string_variable, "test string with space") == 0)
-    {
-    std::cout << "Some string variable was set to: " << some_string_variable << std::endl;
-    delete [] some_string_variable;
-    }
-  else
-    {
+  std::cout << "Some int variable was set to: " << some_int_variable
+            << std::endl;
+  std::cout << "Some double variable was set to: " << some_double_variable
+            << std::endl;
+  if (some_string_variable &&
+      strcmp(some_string_variable, "test string with space") == 0) {
+    std::cout << "Some string variable was set to: " << some_string_variable
+              << std::endl;
+    delete[] some_string_variable;
+  } else {
     std::cerr << "Problem setting string variable" << std::endl;
     std::cerr << "Problem setting string variable" << std::endl;
     res = 1;
     res = 1;
-    }
+  }
   size_t cc;
   size_t cc;
-#define CompareTwoLists(list1, list_valid, lsize) \
-  if ( list1.size() != lsize ) \
-    { \
-    std::cerr << "Problem setting " #list1 ". Size is: " << list1.size() \
-     << " should be: " << lsize << std::endl; \
-    res = 1; \
-    } \
-  else \
-    { \
-    std::cout << #list1 " argument set:"; \
-    for ( cc =0; cc < lsize; ++ cc ) \
-      { \
-      std::cout << " " << list1[cc]; \
-      if ( !CompareTwoItemsOnList(list1[cc], list_valid[cc]) ) \
-        { \
-        std::cerr << "Problem setting " #list1 ". Value of " \
-        << cc << " is: [" << list1[cc] << "] <> [" \
-        << list_valid[cc] << "]" << std::endl; \
-        res = 1; \
-        break; \
-        } \
-      } \
-    std::cout << std::endl; \
-    }
+#define CompareTwoLists(list1, list_valid, lsize)                             \
+  if (list1.size() != lsize) {                                                \
+    std::cerr << "Problem setting " #list1 ". Size is: " << list1.size()      \
+              << " should be: " << lsize << std::endl;                        \
+    res = 1;                                                                  \
+  } else {                                                                    \
+    std::cout << #list1 " argument set:";                                     \
+    for (cc = 0; cc < lsize; ++cc) {                                          \
+      std::cout << " " << list1[cc];                                          \
+      if (!CompareTwoItemsOnList(list1[cc], list_valid[cc])) {                \
+        std::cerr << "Problem setting " #list1 ". Value of " << cc            \
+                  << " is: [" << list1[cc] << "] <> [" << list_valid[cc]      \
+                  << "]" << std::endl;                                        \
+        res = 1;                                                              \
+        break;                                                                \
+      }                                                                       \
+    }                                                                         \
+    std::cout << std::endl;                                                   \
+  }
 
 
   CompareTwoLists(numbers_argument, valid_numbers, 10);
   CompareTwoLists(numbers_argument, valid_numbers, 10);
   CompareTwoLists(doubles_argument, valid_doubles, 3);
   CompareTwoLists(doubles_argument, valid_doubles, 3);
@@ -171,17 +190,19 @@ int testCommandLineArguments(int argc, char* argv[])
   CompareTwoLists(strings_argument, valid_strings, 4);
   CompareTwoLists(strings_argument, valid_strings, 4);
   CompareTwoLists(stl_strings_argument, valid_stl_strings, 4);
   CompareTwoLists(stl_strings_argument, valid_stl_strings, 4);
 
 
-  std::cout << "Some STL String variable was set to: " << some_stl_string_variable << std::endl;
-  std::cout << "Some bool variable was set to: " << some_bool_variable << std::endl;
-  std::cout << "Some bool variable was set to: " << some_bool_variable1 << std::endl;
+  std::cout << "Some STL String variable was set to: "
+            << some_stl_string_variable << std::endl;
+  std::cout << "Some bool variable was set to: " << some_bool_variable
+            << std::endl;
+  std::cout << "Some bool variable was set to: " << some_bool_variable1
+            << std::endl;
   std::cout << "bool_arg1 variable was set to: " << bool_arg1 << std::endl;
   std::cout << "bool_arg1 variable was set to: " << bool_arg1 << std::endl;
   std::cout << "bool_arg2 variable was set to: " << bool_arg2 << std::endl;
   std::cout << "bool_arg2 variable was set to: " << bool_arg2 << std::endl;
   std::cout << std::endl;
   std::cout << std::endl;
 
 
-  for ( cc = 0; cc < strings_argument.size(); ++ cc )
-    {
-    delete [] strings_argument[cc];
+  for (cc = 0; cc < strings_argument.size(); ++cc) {
+    delete[] strings_argument[cc];
     strings_argument[cc] = 0;
     strings_argument[cc] = 0;
-    }
+  }
   return res;
   return res;
 }
 }

+ 34 - 49
testCommandLineArguments1.cxx

@@ -1,21 +1,12 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 #include KWSYS_HEADER(CommandLineArguments.hxx)
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "CommandLineArguments.hxx.in"
+#include "CommandLineArguments.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
@@ -41,68 +32,62 @@ int testCommandLineArguments1(int argc, char* argv[])
 
 
   arg.StoreUnusedArguments(true);
   arg.StoreUnusedArguments(true);
 
 
-  if ( !arg.Parse() )
-    {
+  if (!arg.Parse()) {
     std::cerr << "Problem parsing arguments" << std::endl;
     std::cerr << "Problem parsing arguments" << std::endl;
     res = 1;
     res = 1;
-    }
-  if ( n != 24 )
-    {
+  }
+  if (n != 24) {
     std::cout << "Problem setting N. Value of N: " << n << std::endl;
     std::cout << "Problem setting N. Value of N: " << n << std::endl;
     res = 1;
     res = 1;
-    }
-  if ( !m || strcmp(m, "test value") != 0 )
-    {
+  }
+  if (!m || strcmp(m, "test value") != 0) {
     std::cout << "Problem setting M. Value of M: " << m << std::endl;
     std::cout << "Problem setting M. Value of M: " << m << std::endl;
     res = 1;
     res = 1;
-    }
-  if ( p != "1" )
-    {
+  }
+  if (p != "1") {
     std::cout << "Problem setting P. Value of P: " << p << std::endl;
     std::cout << "Problem setting P. Value of P: " << p << std::endl;
     res = 1;
     res = 1;
-    }
+  }
   std::cout << "Value of N: " << n << std::endl;
   std::cout << "Value of N: " << n << std::endl;
   std::cout << "Value of M: " << m << std::endl;
   std::cout << "Value of M: " << m << std::endl;
   std::cout << "Value of P: " << p << std::endl;
   std::cout << "Value of P: " << p << std::endl;
-  if ( m )
-    {
-    delete [] m;
-    }
+  if (m) {
+    delete[] m;
+  }
 
 
   char** newArgv = 0;
   char** newArgv = 0;
   int newArgc = 0;
   int newArgc = 0;
   arg.GetUnusedArguments(&newArgc, &newArgv);
   arg.GetUnusedArguments(&newArgc, &newArgv);
   int cc;
   int cc;
-  const char* valid_unused_args[9] = {
-    0, "--ignored", "--second-ignored", "third-ignored",
-    "some", "junk", "at", "the", "end"
-  };
-  if ( newArgc != 9 )
-    {
+  const char* valid_unused_args[9] = { 0,
+                                       "--ignored",
+                                       "--second-ignored",
+                                       "third-ignored",
+                                       "some",
+                                       "junk",
+                                       "at",
+                                       "the",
+                                       "end" };
+  if (newArgc != 9) {
     std::cerr << "Bad number of unused arguments: " << newArgc << std::endl;
     std::cerr << "Bad number of unused arguments: " << newArgc << std::endl;
     res = 1;
     res = 1;
-    }
-  for ( cc = 0; cc < newArgc; ++ cc )
-    {
+  }
+  for (cc = 0; cc < newArgc; ++cc) {
     assert(newArgv[cc]); /* Quiet Clang scan-build. */
     assert(newArgv[cc]); /* Quiet Clang scan-build. */
     std::cout << "Unused argument[" << cc << "] = [" << newArgv[cc] << "]"
     std::cout << "Unused argument[" << cc << "] = [" << newArgv[cc] << "]"
-      << std::endl;
-    if ( cc >= 9 )
-      {
+              << std::endl;
+    if (cc >= 9) {
       std::cerr << "Too many unused arguments: " << cc << std::endl;
       std::cerr << "Too many unused arguments: " << cc << std::endl;
       res = 1;
       res = 1;
-      }
-    else if ( valid_unused_args[cc] &&
-      strcmp(valid_unused_args[cc], newArgv[cc]) != 0 )
-      {
-      std::cerr << "Bad unused argument [" << cc << "] \""
-        << newArgv[cc] << "\" should be: \"" << valid_unused_args[cc] << "\""
-        << std::endl;
+    } else if (valid_unused_args[cc] &&
+               strcmp(valid_unused_args[cc], newArgv[cc]) != 0) {
+      std::cerr << "Bad unused argument [" << cc << "] \"" << newArgv[cc]
+                << "\" should be: \"" << valid_unused_args[cc] << "\""
+                << std::endl;
       res = 1;
       res = 1;
-      }
     }
     }
+  }
   arg.DeleteRemainingArguments(newArgc, &newArgv);
   arg.DeleteRemainingArguments(newArgc, &newArgv);
 
 
   return res;
   return res;
 }
 }
- 

+ 233 - 179
testConsoleBuf.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2016 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 
 
 // Ignore Windows version levels defined by command-line flags.  This
 // Ignore Windows version levels defined by command-line flags.  This
@@ -22,24 +13,26 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Encoding.hxx.in"
+#include "Encoding.hxx.in"
 #endif
 #endif
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
 
 
-#include <windows.h>
-#include <string.h>
-#include <wchar.h>
-#include <iostream>
 #include <iomanip>
 #include <iomanip>
+#include <iostream>
 #include <stdexcept>
 #include <stdexcept>
+#include <string.h>
+#include <wchar.h>
+#include <windows.h>
+
 #include "testConsoleBuf.hxx"
 #include "testConsoleBuf.hxx"
 
 
 #if defined(_MSC_VER) && _MSC_VER >= 1800
 #if defined(_MSC_VER) && _MSC_VER >= 1800
-# define KWSYS_WINDOWS_DEPRECATED_GetVersion
+#define KWSYS_WINDOWS_DEPRECATED_GetVersion
 #endif
 #endif
 // يونيكود
 // يونيكود
-static const WCHAR UnicodeInputTestString[] = L"\u064A\u0648\u0646\u064A\u0643\u0648\u062F!";
+static const WCHAR UnicodeInputTestString[] =
+  L"\u064A\u0648\u0646\u064A\u0643\u0648\u062F!";
 static UINT TestCodepage = KWSYS_ENCODING_DEFAULT_CODEPAGE;
 static UINT TestCodepage = KWSYS_ENCODING_DEFAULT_CODEPAGE;
 
 
 static const DWORD waitTimeout = 10 * 1000;
 static const DWORD waitTimeout = 10 * 1000;
@@ -50,55 +43,62 @@ static HANDLE afterOutputEvent;
 static std::string encodedInputTestString;
 static std::string encodedInputTestString;
 static std::string encodedTestString;
 static std::string encodedTestString;
 
 
-static void displayError(DWORD errorCode) {
+static void displayError(DWORD errorCode)
+{
   std::cerr.setf(std::ios::hex, std::ios::basefield);
   std::cerr.setf(std::ios::hex, std::ios::basefield);
   std::cerr << "Failed with error: 0x" << errorCode << "!" << std::endl;
   std::cerr << "Failed with error: 0x" << errorCode << "!" << std::endl;
   LPWSTR message;
   LPWSTR message;
-  if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
-                     NULL,
-                     errorCode,
-                     0,
-                     (LPWSTR)&message, 0,
-                     NULL)
-  ) {
-    std::cerr << "Error message: " << kwsys::Encoding::ToNarrow(message) << std::endl;
+  if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+                       FORMAT_MESSAGE_FROM_SYSTEM,
+                     NULL, errorCode, 0, (LPWSTR)&message, 0, NULL)) {
+    std::cerr << "Error message: " << kwsys::Encoding::ToNarrow(message)
+              << std::endl;
     HeapFree(GetProcessHeap(), 0, message);
     HeapFree(GetProcessHeap(), 0, message);
   } else {
   } else {
-    std::cerr << "FormatMessage() failed with error: 0x" << GetLastError() << "!" << std::endl;
+    std::cerr << "FormatMessage() failed with error: 0x" << GetLastError()
+              << "!" << std::endl;
   }
   }
   std::cerr.unsetf(std::ios::hex);
   std::cerr.unsetf(std::ios::hex);
 }
 }
 
 
-std::basic_streambuf<char> *errstream(const char *unused) {
+std::basic_streambuf<char>* errstream(const char* unused)
+{
   static_cast<void>(unused);
   static_cast<void>(unused);
   return std::cerr.rdbuf();
   return std::cerr.rdbuf();
 }
 }
 
 
-std::basic_streambuf<wchar_t> *errstream(const wchar_t *unused) {
+std::basic_streambuf<wchar_t>* errstream(const wchar_t* unused)
+{
   static_cast<void>(unused);
   static_cast<void>(unused);
   return std::wcerr.rdbuf();
   return std::wcerr.rdbuf();
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-template<typename T>
-static void dumpBuffers(const T *expected, const T *received, size_t size) {
+template <typename T>
+static void dumpBuffers(const T* expected, const T* received, size_t size)
+{
   std::basic_ostream<T> err(errstream(expected));
   std::basic_ostream<T> err(errstream(expected));
-  err << "Expected output: '" << std::basic_string<T>(expected, size) << "'" << std::endl;
+  err << "Expected output: '" << std::basic_string<T>(expected, size) << "'"
+      << std::endl;
   if (err.fail()) {
   if (err.fail()) {
     err.clear();
     err.clear();
     err << "--- Error while outputting ---" << std::endl;
     err << "--- Error while outputting ---" << std::endl;
   }
   }
-  err << "Received output: '" << std::basic_string<T>(received, size) << "'" << std::endl;
+  err << "Received output: '" << std::basic_string<T>(received, size) << "'"
+      << std::endl;
   if (err.fail()) {
   if (err.fail()) {
     err.clear();
     err.clear();
     err << "--- Error while outputting ---" << std::endl;
     err << "--- Error while outputting ---" << std::endl;
   }
   }
   std::cerr << "Expected output | Received output" << std::endl;
   std::cerr << "Expected output | Received output" << std::endl;
   for (size_t i = 0; i < size; i++) {
   for (size_t i = 0; i < size; i++) {
-    std::cerr << std::setbase(16) << std::setfill('0') << "     " <<
-    "0x" << std::setw(8) << static_cast<unsigned int>(expected[i]) << " | " <<
-    "0x" << std::setw(8) << static_cast<unsigned int>(received[i]);
-    if (static_cast<unsigned int>(expected[i]) != static_cast<unsigned int>(received[i])) {
+    std::cerr << std::setbase(16) << std::setfill('0') << "     "
+              << "0x" << std::setw(8) << static_cast<unsigned int>(expected[i])
+              << " | "
+              << "0x" << std::setw(8)
+              << static_cast<unsigned int>(received[i]);
+    if (static_cast<unsigned int>(expected[i]) !=
+        static_cast<unsigned int>(received[i])) {
       std::cerr << "   MISMATCH!";
       std::cerr << "   MISMATCH!";
     }
     }
     std::cerr << std::endl;
     std::cerr << std::endl;
@@ -129,25 +129,29 @@ static bool createProcess(HANDLE hIn, HANDLE hOut, HANDLE hErr)
     std::cerr << "GetModuleFileName failed!" << std::endl;
     std::cerr << "GetModuleFileName failed!" << std::endl;
     return false;
     return false;
   }
   }
-  WCHAR *p = cmd + wcslen(cmd);
-  while (p > cmd && *p != L'\\') p--;
-  *(p+1) = 0;
+  WCHAR* p = cmd + wcslen(cmd);
+  while (p > cmd && *p != L'\\')
+    p--;
+  *(p + 1) = 0;
   wcscat(cmd, cmdConsoleBufChild);
   wcscat(cmd, cmdConsoleBufChild);
   wcscat(cmd, L".exe");
   wcscat(cmd, L".exe");
 
 
-  bool success = CreateProcessW(NULL,             // No module name (use command line)
-                                cmd,              // Command line
-                                NULL,             // Process handle not inheritable
-                                NULL,             // Thread handle not inheritable
-                                bInheritHandles,  // Set handle inheritance
-                                dwCreationFlags,
-                                NULL,             // Use parent's environment block
-                                NULL,             // Use parent's starting directory
-                                &startupInfo,     // Pointer to STARTUPINFO structure
-                                &processInfo) != 0; // Pointer to PROCESS_INFORMATION structure
+  bool success =
+    CreateProcessW(NULL,            // No module name (use command line)
+                   cmd,             // Command line
+                   NULL,            // Process handle not inheritable
+                   NULL,            // Thread handle not inheritable
+                   bInheritHandles, // Set handle inheritance
+                   dwCreationFlags,
+                   NULL,         // Use parent's environment block
+                   NULL,         // Use parent's starting directory
+                   &startupInfo, // Pointer to STARTUPINFO structure
+                   &processInfo) !=
+    0; // Pointer to PROCESS_INFORMATION structure
   if (!success) {
   if (!success) {
     DWORD lastError = GetLastError();
     DWORD lastError = GetLastError();
-    std::cerr << "CreateProcess(" << kwsys::Encoding::ToNarrow(cmd) << ")" << std::endl;
+    std::cerr << "CreateProcess(" << kwsys::Encoding::ToNarrow(cmd) << ")"
+              << std::endl;
     displayError(lastError);
     displayError(lastError);
   }
   }
   return success;
   return success;
@@ -157,8 +161,8 @@ static bool createProcess(HANDLE hIn, HANDLE hOut, HANDLE hErr)
 static void finishProcess(bool success)
 static void finishProcess(bool success)
 {
 {
   if (success) {
   if (success) {
-    success = WaitForSingleObject(processInfo.hProcess, waitTimeout)
-              == WAIT_OBJECT_0;
+    success =
+      WaitForSingleObject(processInfo.hProcess, waitTimeout) == WAIT_OBJECT_0;
   };
   };
   if (!success) {
   if (!success) {
     TerminateProcess(processInfo.hProcess, 1);
     TerminateProcess(processInfo.hProcess, 1);
@@ -174,8 +178,8 @@ static bool createPipe(PHANDLE readPipe, PHANDLE writePipe)
   securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
   securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
   securityAttributes.bInheritHandle = TRUE;
   securityAttributes.bInheritHandle = TRUE;
   securityAttributes.lpSecurityDescriptor = NULL;
   securityAttributes.lpSecurityDescriptor = NULL;
-  return CreatePipe(readPipe, writePipe, &securityAttributes, 0) == 0
-         ? false : true;
+  return CreatePipe(readPipe, writePipe, &securityAttributes, 0) == 0 ? false
+                                                                      : true;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -197,16 +201,17 @@ static HANDLE createFile(LPCWSTR fileName)
   securityAttributes.bInheritHandle = TRUE;
   securityAttributes.bInheritHandle = TRUE;
   securityAttributes.lpSecurityDescriptor = NULL;
   securityAttributes.lpSecurityDescriptor = NULL;
 
 
-  HANDLE file = CreateFileW(fileName,
-                            GENERIC_READ | GENERIC_WRITE,
-                            0,                    // do not share
-                            &securityAttributes,
-                            CREATE_ALWAYS,        // overwrite existing
-                            FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
-                            NULL);                // no template
+  HANDLE file =
+    CreateFileW(fileName, GENERIC_READ | GENERIC_WRITE,
+                0, // do not share
+                &securityAttributes,
+                CREATE_ALWAYS, // overwrite existing
+                FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
+                NULL); // no template
   if (file == INVALID_HANDLE_VALUE) {
   if (file == INVALID_HANDLE_VALUE) {
     DWORD lastError = GetLastError();
     DWORD lastError = GetLastError();
-    std::cerr << "CreateFile(" << kwsys::Encoding::ToNarrow(fileName) << ")" << std::endl;
+    std::cerr << "CreateFile(" << kwsys::Encoding::ToNarrow(fileName) << ")"
+              << std::endl;
     displayError(lastError);
     displayError(lastError);
   }
   }
   return file;
   return file;
@@ -223,7 +228,7 @@ static void finishFile(HANDLE file)
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 
 
 #ifndef MAPVK_VK_TO_VSC
 #ifndef MAPVK_VK_TO_VSC
-#  define MAPVK_VK_TO_VSC  (0)
+#define MAPVK_VK_TO_VSC (0)
 #endif
 #endif
 
 
 static void writeInputKeyEvent(INPUT_RECORD inputBuffer[], WCHAR chr)
 static void writeInputKeyEvent(INPUT_RECORD inputBuffer[], WCHAR chr)
@@ -238,9 +243,8 @@ static void writeInputKeyEvent(INPUT_RECORD inputBuffer[], WCHAR chr)
     keyCode = 'K';
     keyCode = 'K';
   }
   }
   inputBuffer[0].Event.KeyEvent.wVirtualKeyCode = LOBYTE(keyCode);
   inputBuffer[0].Event.KeyEvent.wVirtualKeyCode = LOBYTE(keyCode);
-  inputBuffer[0].Event.KeyEvent.wVirtualScanCode =
-      MapVirtualKey(inputBuffer[0].Event.KeyEvent.wVirtualKeyCode,
-                    MAPVK_VK_TO_VSC);
+  inputBuffer[0].Event.KeyEvent.wVirtualScanCode = MapVirtualKey(
+    inputBuffer[0].Event.KeyEvent.wVirtualKeyCode, MAPVK_VK_TO_VSC);
   inputBuffer[0].Event.KeyEvent.uChar.UnicodeChar = chr;
   inputBuffer[0].Event.KeyEvent.uChar.UnicodeChar = chr;
   inputBuffer[0].Event.KeyEvent.dwControlKeyState = 0;
   inputBuffer[0].Event.KeyEvent.dwControlKeyState = 0;
   if ((HIBYTE(keyCode) & 1) == 1) {
   if ((HIBYTE(keyCode) & 1) == 1) {
@@ -255,12 +259,12 @@ static void writeInputKeyEvent(INPUT_RECORD inputBuffer[], WCHAR chr)
   inputBuffer[1].EventType = inputBuffer[0].EventType;
   inputBuffer[1].EventType = inputBuffer[0].EventType;
   inputBuffer[1].Event.KeyEvent.bKeyDown = FALSE;
   inputBuffer[1].Event.KeyEvent.bKeyDown = FALSE;
   inputBuffer[1].Event.KeyEvent.wRepeatCount = 1;
   inputBuffer[1].Event.KeyEvent.wRepeatCount = 1;
-  inputBuffer[1].Event.KeyEvent.wVirtualKeyCode   = inputBuffer[0].Event.
-                                                      KeyEvent.wVirtualKeyCode;
-  inputBuffer[1].Event.KeyEvent.wVirtualScanCode  = inputBuffer[0].Event.
-                                                      KeyEvent.wVirtualScanCode;
-  inputBuffer[1].Event.KeyEvent.uChar.UnicodeChar = inputBuffer[0].Event.
-                                                      KeyEvent.uChar.UnicodeChar;
+  inputBuffer[1].Event.KeyEvent.wVirtualKeyCode =
+    inputBuffer[0].Event.KeyEvent.wVirtualKeyCode;
+  inputBuffer[1].Event.KeyEvent.wVirtualScanCode =
+    inputBuffer[0].Event.KeyEvent.wVirtualScanCode;
+  inputBuffer[1].Event.KeyEvent.uChar.UnicodeChar =
+    inputBuffer[0].Event.KeyEvent.uChar.UnicodeChar;
   inputBuffer[1].Event.KeyEvent.dwControlKeyState = 0;
   inputBuffer[1].Event.KeyEvent.dwControlKeyState = 0;
 }
 }
 
 
@@ -292,29 +296,33 @@ static int testPipe()
 
 
     DWORD bytesWritten = 0;
     DWORD bytesWritten = 0;
     if (!WriteFile(inPipeWrite, encodedInputTestString.c_str(),
     if (!WriteFile(inPipeWrite, encodedInputTestString.c_str(),
-                   (DWORD)encodedInputTestString.size(), &bytesWritten, NULL)
-        || bytesWritten == 0) {
+                   (DWORD)encodedInputTestString.size(), &bytesWritten,
+                   NULL) ||
+        bytesWritten == 0) {
       throw std::runtime_error("WriteFile failed!");
       throw std::runtime_error("WriteFile failed!");
     }
     }
 
 
     if (createProcess(inPipeRead, outPipeWrite, errPipeWrite)) {
     if (createProcess(inPipeRead, outPipeWrite, errPipeWrite)) {
       try {
       try {
         DWORD status;
         DWORD status;
-        if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) != WAIT_OBJECT_0) {
+        if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) !=
+            WAIT_OBJECT_0) {
           std::cerr.setf(std::ios::hex, std::ios::basefield);
           std::cerr.setf(std::ios::hex, std::ios::basefield);
-          std::cerr << "WaitForSingleObject returned unexpected status 0x" << status << std::endl;
+          std::cerr << "WaitForSingleObject returned unexpected status 0x"
+                    << status << std::endl;
           std::cerr.unsetf(std::ios::hex);
           std::cerr.unsetf(std::ios::hex);
           throw std::runtime_error("WaitForSingleObject failed!");
           throw std::runtime_error("WaitForSingleObject failed!");
         }
         }
         DWORD bytesRead = 0;
         DWORD bytesRead = 0;
-        if (!ReadFile(outPipeRead, buffer, sizeof(buffer), &bytesRead, NULL)
-            || bytesRead == 0) {
+        if (!ReadFile(outPipeRead, buffer, sizeof(buffer), &bytesRead, NULL) ||
+            bytesRead == 0) {
           throw std::runtime_error("ReadFile#1 failed!");
           throw std::runtime_error("ReadFile#1 failed!");
         }
         }
-        if ((bytesRead < encodedTestString.size() + 1 + encodedInputTestString.size()
-             && !ReadFile(outPipeRead, buffer + bytesRead,
-                          sizeof(buffer) - bytesRead, &bytesRead, NULL))
-            || bytesRead == 0) {
+        if ((bytesRead <
+               encodedTestString.size() + 1 + encodedInputTestString.size() &&
+             !ReadFile(outPipeRead, buffer + bytesRead,
+                       sizeof(buffer) - bytesRead, &bytesRead, NULL)) ||
+            bytesRead == 0) {
           throw std::runtime_error("ReadFile#2 failed!");
           throw std::runtime_error("ReadFile#2 failed!");
         }
         }
         if (memcmp(buffer, encodedTestString.c_str(),
         if (memcmp(buffer, encodedTestString.c_str(),
@@ -323,31 +331,37 @@ static int testPipe()
                    encodedInputTestString.c_str(),
                    encodedInputTestString.c_str(),
                    encodedInputTestString.size()) == 0) {
                    encodedInputTestString.size()) == 0) {
           bytesRead = 0;
           bytesRead = 0;
-          if (!ReadFile(errPipeRead, buffer2, sizeof(buffer2), &bytesRead, NULL)
-              || bytesRead == 0) {
+          if (!ReadFile(errPipeRead, buffer2, sizeof(buffer2), &bytesRead,
+                        NULL) ||
+              bytesRead == 0) {
             throw std::runtime_error("ReadFile#3 failed!");
             throw std::runtime_error("ReadFile#3 failed!");
           }
           }
           buffer2[bytesRead - 1] = 0;
           buffer2[bytesRead - 1] = 0;
           didFail = encodedTestString.compare(buffer2) == 0 ? 0 : 1;
           didFail = encodedTestString.compare(buffer2) == 0 ? 0 : 1;
         }
         }
         if (didFail != 0) {
         if (didFail != 0) {
-          std::cerr << "Pipe's output didn't match expected output!" << std::endl;
-          dumpBuffers<char>(encodedTestString.c_str(), buffer, encodedTestString.size());
-          dumpBuffers<char>(encodedInputTestString.c_str(), buffer + encodedTestString.size() + 1, encodedInputTestString.size());
-          dumpBuffers<char>(encodedTestString.c_str(), buffer2, encodedTestString.size());
+          std::cerr << "Pipe's output didn't match expected output!"
+                    << std::endl;
+          dumpBuffers<char>(encodedTestString.c_str(), buffer,
+                            encodedTestString.size());
+          dumpBuffers<char>(encodedInputTestString.c_str(),
+                            buffer + encodedTestString.size() + 1,
+                            encodedInputTestString.size());
+          dumpBuffers<char>(encodedTestString.c_str(), buffer2,
+                            encodedTestString.size());
         }
         }
-      } catch (const std::runtime_error &ex) {
+      } catch (const std::runtime_error& ex) {
         DWORD lastError = GetLastError();
         DWORD lastError = GetLastError();
-        std::cerr << "In function testPipe, line " <<  __LINE__ << ": "
+        std::cerr << "In function testPipe, line " << __LINE__ << ": "
                   << ex.what() << std::endl;
                   << ex.what() << std::endl;
         displayError(lastError);
         displayError(lastError);
       }
       }
       finishProcess(didFail == 0);
       finishProcess(didFail == 0);
     }
     }
-  } catch (const std::runtime_error &ex) {
+  } catch (const std::runtime_error& ex) {
     DWORD lastError = GetLastError();
     DWORD lastError = GetLastError();
-    std::cerr << "In function testPipe, line " <<  __LINE__ << ": "
-              << ex.what() << std::endl;
+    std::cerr << "In function testPipe, line " << __LINE__ << ": " << ex.what()
+              << std::endl;
     displayError(lastError);
     displayError(lastError);
   }
   }
   finishPipe(inPipeRead, inPipeWrite);
   finishPipe(inPipeRead, inPipeWrite);
@@ -375,14 +389,14 @@ static int testFile()
     char buffer2[200];
     char buffer2[200];
 
 
     int length;
     int length;
-    if ((length = WideCharToMultiByte(TestCodepage, 0, UnicodeInputTestString, -1,
-                                      buffer, sizeof(buffer),
-                                      NULL, NULL)) == 0) {
+    if ((length =
+           WideCharToMultiByte(TestCodepage, 0, UnicodeInputTestString, -1,
+                               buffer, sizeof(buffer), NULL, NULL)) == 0) {
       throw std::runtime_error("WideCharToMultiByte failed!");
       throw std::runtime_error("WideCharToMultiByte failed!");
     }
     }
     buffer[length - 1] = '\n';
     buffer[length - 1] = '\n';
-    if (!WriteFile(inFile, buffer, length, &bytesWritten, NULL)
-        || bytesWritten == 0) {
+    if (!WriteFile(inFile, buffer, length, &bytesWritten, NULL) ||
+        bytesWritten == 0) {
       throw std::runtime_error("WriteFile failed!");
       throw std::runtime_error("WriteFile failed!");
     }
     }
     if (SetFilePointer(inFile, 0, 0, FILE_BEGIN) == INVALID_SET_FILE_POINTER) {
     if (SetFilePointer(inFile, 0, 0, FILE_BEGIN) == INVALID_SET_FILE_POINTER) {
@@ -393,18 +407,20 @@ static int testFile()
       DWORD bytesRead = 0;
       DWORD bytesRead = 0;
       try {
       try {
         DWORD status;
         DWORD status;
-        if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) != WAIT_OBJECT_0) {
+        if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) !=
+            WAIT_OBJECT_0) {
           std::cerr.setf(std::ios::hex, std::ios::basefield);
           std::cerr.setf(std::ios::hex, std::ios::basefield);
-          std::cerr << "WaitForSingleObject returned unexpected status 0x" << status << std::endl;
+          std::cerr << "WaitForSingleObject returned unexpected status 0x"
+                    << status << std::endl;
           std::cerr.unsetf(std::ios::hex);
           std::cerr.unsetf(std::ios::hex);
           throw std::runtime_error("WaitForSingleObject failed!");
           throw std::runtime_error("WaitForSingleObject failed!");
         }
         }
-        if (SetFilePointer(outFile, 0, 0, FILE_BEGIN)
-            == INVALID_SET_FILE_POINTER) {
+        if (SetFilePointer(outFile, 0, 0, FILE_BEGIN) ==
+            INVALID_SET_FILE_POINTER) {
           throw std::runtime_error("SetFilePointer#1 failed!");
           throw std::runtime_error("SetFilePointer#1 failed!");
         }
         }
-        if (!ReadFile(outFile, buffer, sizeof(buffer), &bytesRead, NULL)
-            || bytesRead == 0) {
+        if (!ReadFile(outFile, buffer, sizeof(buffer), &bytesRead, NULL) ||
+            bytesRead == 0) {
           throw std::runtime_error("ReadFile#1 failed!");
           throw std::runtime_error("ReadFile#1 failed!");
         }
         }
         buffer[bytesRead - 1] = 0;
         buffer[bytesRead - 1] = 0;
@@ -414,35 +430,40 @@ static int testFile()
                    encodedInputTestString.c_str(),
                    encodedInputTestString.c_str(),
                    encodedInputTestString.size() - 1) == 0) {
                    encodedInputTestString.size() - 1) == 0) {
           bytesRead = 0;
           bytesRead = 0;
-          if (SetFilePointer(errFile, 0, 0, FILE_BEGIN)
-              == INVALID_SET_FILE_POINTER) {
+          if (SetFilePointer(errFile, 0, 0, FILE_BEGIN) ==
+              INVALID_SET_FILE_POINTER) {
             throw std::runtime_error("SetFilePointer#2 failed!");
             throw std::runtime_error("SetFilePointer#2 failed!");
           }
           }
-          if (!ReadFile(errFile, buffer2, sizeof(buffer2), &bytesRead, NULL)
-              || bytesRead == 0) {
+          if (!ReadFile(errFile, buffer2, sizeof(buffer2), &bytesRead, NULL) ||
+              bytesRead == 0) {
             throw std::runtime_error("ReadFile#2 failed!");
             throw std::runtime_error("ReadFile#2 failed!");
           }
           }
           buffer2[bytesRead - 1] = 0;
           buffer2[bytesRead - 1] = 0;
           didFail = encodedTestString.compare(buffer2) == 0 ? 0 : 1;
           didFail = encodedTestString.compare(buffer2) == 0 ? 0 : 1;
         }
         }
         if (didFail != 0) {
         if (didFail != 0) {
-          std::cerr << "File's output didn't match expected output!" << std::endl;
-          dumpBuffers<char>(encodedTestString.c_str(), buffer, encodedTestString.size());
-          dumpBuffers<char>(encodedInputTestString.c_str(), buffer + encodedTestString.size() + 1, encodedInputTestString.size() - 1);
-          dumpBuffers<char>(encodedTestString.c_str(), buffer2, encodedTestString.size());
+          std::cerr << "File's output didn't match expected output!"
+                    << std::endl;
+          dumpBuffers<char>(encodedTestString.c_str(), buffer,
+                            encodedTestString.size());
+          dumpBuffers<char>(encodedInputTestString.c_str(),
+                            buffer + encodedTestString.size() + 1,
+                            encodedInputTestString.size() - 1);
+          dumpBuffers<char>(encodedTestString.c_str(), buffer2,
+                            encodedTestString.size());
         }
         }
-      } catch (const std::runtime_error &ex) {
+      } catch (const std::runtime_error& ex) {
         DWORD lastError = GetLastError();
         DWORD lastError = GetLastError();
-        std::cerr << "In function testFile, line " <<  __LINE__ << ": "
+        std::cerr << "In function testFile, line " << __LINE__ << ": "
                   << ex.what() << std::endl;
                   << ex.what() << std::endl;
         displayError(lastError);
         displayError(lastError);
       }
       }
       finishProcess(didFail == 0);
       finishProcess(didFail == 0);
     }
     }
-  } catch (const std::runtime_error &ex) {
+  } catch (const std::runtime_error& ex) {
     DWORD lastError = GetLastError();
     DWORD lastError = GetLastError();
-    std::cerr << "In function testFile, line " <<  __LINE__ << ": "
-              << ex.what() << std::endl;
+    std::cerr << "In function testFile, line " << __LINE__ << ": " << ex.what()
+              << std::endl;
     displayError(lastError);
     displayError(lastError);
   }
   }
   finishFile(inFile);
   finishFile(inFile);
@@ -452,7 +473,7 @@ static int testFile()
 }
 }
 
 
 #ifndef _WIN32_WINNT_VISTA
 #ifndef _WIN32_WINNT_VISTA
-# define _WIN32_WINNT_VISTA 0x0600
+#define _WIN32_WINNT_VISTA 0x0600
 #endif
 #endif
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -478,16 +499,17 @@ static int testConsole()
   DWORD FontFamily = TestFontFamily;
   DWORD FontFamily = TestFontFamily;
   DWORD FontSize = TestFontSize;
   DWORD FontSize = TestFontSize;
 #ifdef KWSYS_WINDOWS_DEPRECATED_GetVersion
 #ifdef KWSYS_WINDOWS_DEPRECATED_GetVersion
-# pragma warning (push)
-# ifdef __INTEL_COMPILER
-#  pragma warning (disable:1478)
-# else
-#  pragma warning (disable:4996)
-# endif
+#pragma warning(push)
+#ifdef __INTEL_COMPILER
+#pragma warning(disable : 1478)
+#else
+#pragma warning(disable : 4996)
+#endif
 #endif
 #endif
-  const bool isVistaOrGreater = LOBYTE(LOWORD(GetVersion())) >= HIBYTE(_WIN32_WINNT_VISTA);
+  const bool isVistaOrGreater =
+    LOBYTE(LOWORD(GetVersion())) >= HIBYTE(_WIN32_WINNT_VISTA);
 #ifdef KWSYS_WINDOWS_DEPRECATED_GetVersion
 #ifdef KWSYS_WINDOWS_DEPRECATED_GetVersion
-# pragma warning (pop)
+#pragma warning(pop)
 #endif
 #endif
   if (!isVistaOrGreater) {
   if (!isVistaOrGreater) {
     if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Console", 0, KEY_READ | KEY_WRITE,
     if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Console", 0, KEY_READ | KEY_WRITE,
@@ -502,11 +524,12 @@ static int testConsole()
                            (LPBYTE)&FontSize, &dwordSize);
                            (LPBYTE)&FontSize, &dwordSize);
 
 
           RegSetValueExW(hConsoleKey, L"FontFamily", 0, REG_DWORD,
           RegSetValueExW(hConsoleKey, L"FontFamily", 0, REG_DWORD,
-                         (BYTE *)&TestFontFamily, sizeof(TestFontFamily));
+                         (BYTE*)&TestFontFamily, sizeof(TestFontFamily));
           RegSetValueExW(hConsoleKey, L"FaceName", 0, REG_SZ,
           RegSetValueExW(hConsoleKey, L"FaceName", 0, REG_SZ,
-                         (BYTE *)TestFaceName, (DWORD)((wcslen(TestFaceName) + 1) * sizeof(WCHAR)));
+                         (BYTE*)TestFaceName,
+                         (DWORD)((wcslen(TestFaceName) + 1) * sizeof(WCHAR)));
           RegSetValueExW(hConsoleKey, L"FontSize", 0, REG_DWORD,
           RegSetValueExW(hConsoleKey, L"FontSize", 0, REG_DWORD,
-                         (BYTE *)&TestFontSize, sizeof(TestFontSize));
+                         (BYTE*)&TestFontSize, sizeof(TestFontSize));
 
 
           restoreConsole = true;
           restoreConsole = true;
           forceNewConsole = true;
           forceNewConsole = true;
@@ -516,7 +539,8 @@ static int testConsole()
       }
       }
       RegCloseKey(hConsoleKey);
       RegCloseKey(hConsoleKey);
     } else {
     } else {
-      std::cerr << "RegOpenKeyExW(HKEY_CURRENT_USER\\Console) failed!" << std::endl;
+      std::cerr << "RegOpenKeyExW(HKEY_CURRENT_USER\\Console) failed!"
+                << std::endl;
     }
     }
   }
   }
   if (forceNewConsole || GetConsoleMode(parentOut, &consoleMode) == 0) {
   if (forceNewConsole || GetConsoleMode(parentOut, &consoleMode) == 0) {
@@ -530,15 +554,17 @@ static int testConsole()
     securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
     securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
     securityAttributes.bInheritHandle = TRUE;
     securityAttributes.bInheritHandle = TRUE;
     securityAttributes.lpSecurityDescriptor = NULL;
     securityAttributes.lpSecurityDescriptor = NULL;
-    hIn = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                       &securityAttributes, OPEN_EXISTING, 0, NULL);
+    hIn = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE,
+                      FILE_SHARE_READ | FILE_SHARE_WRITE, &securityAttributes,
+                      OPEN_EXISTING, 0, NULL);
     if (hIn == INVALID_HANDLE_VALUE) {
     if (hIn == INVALID_HANDLE_VALUE) {
       DWORD lastError = GetLastError();
       DWORD lastError = GetLastError();
       std::cerr << "CreateFile(CONIN$)" << std::endl;
       std::cerr << "CreateFile(CONIN$)" << std::endl;
       displayError(lastError);
       displayError(lastError);
     }
     }
-    hOut = CreateFileW(L"CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                       &securityAttributes, OPEN_EXISTING, 0, NULL);
+    hOut = CreateFileW(L"CONOUT$", GENERIC_READ | GENERIC_WRITE,
+                       FILE_SHARE_READ | FILE_SHARE_WRITE, &securityAttributes,
+                       OPEN_EXISTING, 0, NULL);
     if (hOut == INVALID_HANDLE_VALUE) {
     if (hOut == INVALID_HANDLE_VALUE) {
       DWORD lastError = GetLastError();
       DWORD lastError = GetLastError();
       std::cerr << "CreateFile(CONOUT$)" << std::endl;
       std::cerr << "CreateFile(CONOUT$)" << std::endl;
@@ -556,10 +582,18 @@ static int testConsole()
     memset(&consoleFont, 0, sizeof(consoleFont));
     memset(&consoleFont, 0, sizeof(consoleFont));
     consoleFont.cbSize = sizeof(consoleFont);
     consoleFont.cbSize = sizeof(consoleFont);
     HMODULE kernel32 = LoadLibraryW(L"kernel32.dll");
     HMODULE kernel32 = LoadLibraryW(L"kernel32.dll");
-    typedef BOOL (WINAPI *GetCurrentConsoleFontExFunc)(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
-    typedef BOOL (WINAPI *SetCurrentConsoleFontExFunc)(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
-    GetCurrentConsoleFontExFunc getConsoleFont = (GetCurrentConsoleFontExFunc)GetProcAddress(kernel32, "GetCurrentConsoleFontEx");
-    SetCurrentConsoleFontExFunc setConsoleFont = (SetCurrentConsoleFontExFunc)GetProcAddress(kernel32, "SetCurrentConsoleFontEx");
+    typedef BOOL(WINAPI * GetCurrentConsoleFontExFunc)(
+      HANDLE hConsoleOutput, BOOL bMaximumWindow,
+      PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
+    typedef BOOL(WINAPI * SetCurrentConsoleFontExFunc)(
+      HANDLE hConsoleOutput, BOOL bMaximumWindow,
+      PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
+    GetCurrentConsoleFontExFunc getConsoleFont =
+      (GetCurrentConsoleFontExFunc)GetProcAddress(kernel32,
+                                                  "GetCurrentConsoleFontEx");
+    SetCurrentConsoleFontExFunc setConsoleFont =
+      (SetCurrentConsoleFontExFunc)GetProcAddress(kernel32,
+                                                  "SetCurrentConsoleFontEx");
     if (getConsoleFont(hOut, FALSE, &consoleFont)) {
     if (getConsoleFont(hOut, FALSE, &consoleFont)) {
       if (consoleFont.FontFamily != TestFontFamily) {
       if (consoleFont.FontFamily != TestFontFamily) {
         consoleFont.FontFamily = TestFontFamily;
         consoleFont.FontFamily = TestFontFamily;
@@ -573,18 +607,19 @@ static int testConsole()
     }
     }
   } else {
   } else {
 #endif
 #endif
-    if (restoreConsole && RegOpenKeyExW(HKEY_CURRENT_USER, L"Console", 0,
-                                        KEY_WRITE, &hConsoleKey) == ERROR_SUCCESS) {
+    if (restoreConsole &&
+        RegOpenKeyExW(HKEY_CURRENT_USER, L"Console", 0, KEY_WRITE,
+                      &hConsoleKey) == ERROR_SUCCESS) {
       RegSetValueExW(hConsoleKey, L"FontFamily", 0, REG_DWORD,
       RegSetValueExW(hConsoleKey, L"FontFamily", 0, REG_DWORD,
-                     (BYTE *)&FontFamily, sizeof(FontFamily));
+                     (BYTE*)&FontFamily, sizeof(FontFamily));
       if (FaceName[0] != 0) {
       if (FaceName[0] != 0) {
-        RegSetValueExW(hConsoleKey, L"FaceName", 0, REG_SZ,
-                       (BYTE *)FaceName, FaceNameSize);
+        RegSetValueExW(hConsoleKey, L"FaceName", 0, REG_SZ, (BYTE*)FaceName,
+                       FaceNameSize);
       } else {
       } else {
         RegDeleteValueW(hConsoleKey, L"FaceName");
         RegDeleteValueW(hConsoleKey, L"FaceName");
       }
       }
-      RegSetValueExW(hConsoleKey, L"FontSize", 0, REG_DWORD,
-                     (BYTE *)&FontSize, sizeof(FontSize));
+      RegSetValueExW(hConsoleKey, L"FontSize", 0, REG_DWORD, (BYTE*)&FontSize,
+                     sizeof(FontSize));
       RegCloseKey(hConsoleKey);
       RegCloseKey(hConsoleKey);
     }
     }
 #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
 #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
@@ -594,32 +629,41 @@ static int testConsole()
   if (createProcess(NULL, NULL, NULL)) {
   if (createProcess(NULL, NULL, NULL)) {
     try {
     try {
       DWORD status;
       DWORD status;
-      if ((status = WaitForSingleObject(beforeInputEvent, waitTimeout)) != WAIT_OBJECT_0) {
+      if ((status = WaitForSingleObject(beforeInputEvent, waitTimeout)) !=
+          WAIT_OBJECT_0) {
         std::cerr.setf(std::ios::hex, std::ios::basefield);
         std::cerr.setf(std::ios::hex, std::ios::basefield);
-        std::cerr << "WaitForSingleObject returned unexpected status 0x" << status << std::endl;
+        std::cerr << "WaitForSingleObject returned unexpected status 0x"
+                  << status << std::endl;
         std::cerr.unsetf(std::ios::hex);
         std::cerr.unsetf(std::ios::hex);
         throw std::runtime_error("WaitForSingleObject#1 failed!");
         throw std::runtime_error("WaitForSingleObject#1 failed!");
       }
       }
       INPUT_RECORD inputBuffer[(sizeof(UnicodeInputTestString) /
       INPUT_RECORD inputBuffer[(sizeof(UnicodeInputTestString) /
-                                sizeof(UnicodeInputTestString[0])) * 2];
+                                sizeof(UnicodeInputTestString[0])) *
+                               2];
       memset(&inputBuffer, 0, sizeof(inputBuffer));
       memset(&inputBuffer, 0, sizeof(inputBuffer));
       unsigned int i;
       unsigned int i;
       for (i = 0; i < (sizeof(UnicodeInputTestString) /
       for (i = 0; i < (sizeof(UnicodeInputTestString) /
-                       sizeof(UnicodeInputTestString[0]) - 1); i++) {
-        writeInputKeyEvent(&inputBuffer[i*2], UnicodeInputTestString[i]);
+                         sizeof(UnicodeInputTestString[0]) -
+                       1);
+           i++) {
+        writeInputKeyEvent(&inputBuffer[i * 2], UnicodeInputTestString[i]);
       }
       }
-      writeInputKeyEvent(&inputBuffer[i*2], VK_RETURN);
+      writeInputKeyEvent(&inputBuffer[i * 2], VK_RETURN);
       DWORD eventsWritten = 0;
       DWORD eventsWritten = 0;
-      // We need to wait a bit before writing to console so child process have started waiting for input on stdin.
+      // We need to wait a bit before writing to console so child process have
+      // started waiting for input on stdin.
       Sleep(300);
       Sleep(300);
-      if (!WriteConsoleInputW(hIn, inputBuffer, sizeof(inputBuffer) /
-                                                sizeof(inputBuffer[0]),
-                              &eventsWritten) || eventsWritten == 0) {
+      if (!WriteConsoleInputW(hIn, inputBuffer,
+                              sizeof(inputBuffer) / sizeof(inputBuffer[0]),
+                              &eventsWritten) ||
+          eventsWritten == 0) {
         throw std::runtime_error("WriteConsoleInput failed!");
         throw std::runtime_error("WriteConsoleInput failed!");
       }
       }
-      if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) != WAIT_OBJECT_0) {
+      if ((status = WaitForSingleObject(afterOutputEvent, waitTimeout)) !=
+          WAIT_OBJECT_0) {
         std::cerr.setf(std::ios::hex, std::ios::basefield);
         std::cerr.setf(std::ios::hex, std::ios::basefield);
-        std::cerr << "WaitForSingleObject returned unexpected status 0x" << status << std::endl;
+        std::cerr << "WaitForSingleObject returned unexpected status 0x"
+                  << status << std::endl;
         std::cerr.unsetf(std::ios::hex);
         std::cerr.unsetf(std::ios::hex);
         throw std::runtime_error("WaitForSingleObject#2 failed!");
         throw std::runtime_error("WaitForSingleObject#2 failed!");
       }
       }
@@ -632,38 +676,48 @@ static int testConsole()
       DWORD charsRead = 0;
       DWORD charsRead = 0;
       coord.X = 0;
       coord.X = 0;
       coord.Y = screenBufferInfo.dwCursorPosition.Y - 4;
       coord.Y = screenBufferInfo.dwCursorPosition.Y - 4;
-      WCHAR *outputBuffer = new WCHAR[screenBufferInfo.dwSize.X * 4];
+      WCHAR* outputBuffer = new WCHAR[screenBufferInfo.dwSize.X * 4];
       if (!ReadConsoleOutputCharacterW(hOut, outputBuffer,
       if (!ReadConsoleOutputCharacterW(hOut, outputBuffer,
-          screenBufferInfo.dwSize.X * 4, coord, &charsRead)
-          || charsRead == 0) {
+                                       screenBufferInfo.dwSize.X * 4, coord,
+                                       &charsRead) ||
+          charsRead == 0) {
         delete[] outputBuffer;
         delete[] outputBuffer;
         throw std::runtime_error("ReadConsoleOutputCharacter failed!");
         throw std::runtime_error("ReadConsoleOutputCharacter failed!");
       }
       }
       std::wstring wideTestString = kwsys::Encoding::ToWide(encodedTestString);
       std::wstring wideTestString = kwsys::Encoding::ToWide(encodedTestString);
-      std::wstring wideInputTestString = kwsys::Encoding::ToWide(encodedInputTestString);
+      std::wstring wideInputTestString =
+        kwsys::Encoding::ToWide(encodedInputTestString);
       if (memcmp(outputBuffer, wideTestString.c_str(),
       if (memcmp(outputBuffer, wideTestString.c_str(),
                  wideTestString.size() * sizeof(wchar_t)) == 0 &&
                  wideTestString.size() * sizeof(wchar_t)) == 0 &&
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 1,
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 1,
-                 wideTestString.c_str(), wideTestString.size() * sizeof(wchar_t)) == 0 &&
+                 wideTestString.c_str(),
+                 wideTestString.size() * sizeof(wchar_t)) == 0 &&
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 2,
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 2,
-                 UnicodeInputTestString, sizeof(UnicodeInputTestString) -
-                                         sizeof(WCHAR)) == 0 &&
+                 UnicodeInputTestString,
+                 sizeof(UnicodeInputTestString) - sizeof(WCHAR)) == 0 &&
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 3,
           memcmp(outputBuffer + screenBufferInfo.dwSize.X * 3,
                  wideInputTestString.c_str(),
                  wideInputTestString.c_str(),
-                 (wideInputTestString.size() - 1) * sizeof(wchar_t)) == 0
-      ) {
+                 (wideInputTestString.size() - 1) * sizeof(wchar_t)) == 0) {
         didFail = 0;
         didFail = 0;
       } else {
       } else {
-        std::cerr << "Console's output didn't match expected output!" << std::endl;
-        dumpBuffers<wchar_t>(wideTestString.c_str(), outputBuffer, wideTestString.size());
-        dumpBuffers<wchar_t>(wideTestString.c_str(), outputBuffer + screenBufferInfo.dwSize.X * 1, wideTestString.size());
-        dumpBuffers<wchar_t>(UnicodeInputTestString, outputBuffer + screenBufferInfo.dwSize.X * 2, (sizeof(UnicodeInputTestString) - 1) / sizeof(WCHAR));
-        dumpBuffers<wchar_t>(wideInputTestString.c_str(), outputBuffer + screenBufferInfo.dwSize.X * 3, wideInputTestString.size() - 1);
+        std::cerr << "Console's output didn't match expected output!"
+                  << std::endl;
+        dumpBuffers<wchar_t>(wideTestString.c_str(), outputBuffer,
+                             wideTestString.size());
+        dumpBuffers<wchar_t>(wideTestString.c_str(),
+                             outputBuffer + screenBufferInfo.dwSize.X * 1,
+                             wideTestString.size());
+        dumpBuffers<wchar_t>(
+          UnicodeInputTestString, outputBuffer + screenBufferInfo.dwSize.X * 2,
+          (sizeof(UnicodeInputTestString) - 1) / sizeof(WCHAR));
+        dumpBuffers<wchar_t>(wideInputTestString.c_str(),
+                             outputBuffer + screenBufferInfo.dwSize.X * 3,
+                             wideInputTestString.size() - 1);
       }
       }
       delete[] outputBuffer;
       delete[] outputBuffer;
-    } catch (const std::runtime_error &ex) {
+    } catch (const std::runtime_error& ex) {
       DWORD lastError = GetLastError();
       DWORD lastError = GetLastError();
-      std::cerr << "In function testConsole, line " <<  __LINE__ << ": "
+      std::cerr << "In function testConsole, line " << __LINE__ << ": "
                 << ex.what() << std::endl;
                 << ex.what() << std::endl;
       displayError(lastError);
       displayError(lastError);
     }
     }
@@ -683,15 +737,15 @@ static int testConsole()
 #endif
 #endif
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-int testConsoleBuf(int, char*[])
+int testConsoleBuf(int, char* [])
 {
 {
   int ret = 0;
   int ret = 0;
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
   beforeInputEvent = CreateEventW(NULL,
   beforeInputEvent = CreateEventW(NULL,
-                       FALSE,  // auto-reset event
-                       FALSE,  // initial state is nonsignaled
-                       BeforeInputEventName);  // object name
+                                  FALSE, // auto-reset event
+                                  FALSE, // initial state is nonsignaled
+                                  BeforeInputEventName); // object name
   if (!beforeInputEvent) {
   if (!beforeInputEvent) {
     std::cerr << "CreateEvent#1 failed " << GetLastError() << std::endl;
     std::cerr << "CreateEvent#1 failed " << GetLastError() << std::endl;
     return 1;
     return 1;

+ 6 - 14
testConsoleBuf.hxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2016 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef testConsoleBuf_hxx
 #ifndef testConsoleBuf_hxx
 #define testConsoleBuf_hxx
 #define testConsoleBuf_hxx
 
 
@@ -18,8 +9,9 @@ static const wchar_t BeforeInputEventName[] = L"BeforeInputEvent";
 static const wchar_t AfterOutputEventName[] = L"AfterOutputEvent";
 static const wchar_t AfterOutputEventName[] = L"AfterOutputEvent";
 
 
 // यूनिकोड είναι здорово!
 // यूनिकोड είναι здорово!
-static const wchar_t UnicodeTestString[] = L"\u092F\u0942\u0928\u093F\u0915\u094B\u0921 "
-                                           L"\u03B5\u03AF\u03BD\u03B1\u03B9 "
-                                           L"\u0437\u0434\u043E\u0440\u043E\u0432\u043E!";
+static const wchar_t UnicodeTestString[] =
+  L"\u092F\u0942\u0928\u093F\u0915\u094B\u0921 "
+  L"\u03B5\u03AF\u03BD\u03B1\u03B9 "
+  L"\u0437\u0434\u043E\u0440\u043E\u0432\u043E!";
 
 
 #endif
 #endif

+ 5 - 13
testConsoleBufChild.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2016 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 
 
 #include KWSYS_HEADER(ConsoleBuf.hxx)
 #include KWSYS_HEADER(ConsoleBuf.hxx)
@@ -17,11 +8,12 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "ConsoleBuf.hxx.in"
-# include "Encoding.hxx.in"
+#include "ConsoleBuf.hxx.in"
+#include "Encoding.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
+
 #include "testConsoleBuf.hxx"
 #include "testConsoleBuf.hxx"
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 39 - 50
testDynamicLoader.cxx

@@ -1,30 +1,21 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 
 
 #include KWSYS_HEADER(DynamicLoader.hxx)
 #include KWSYS_HEADER(DynamicLoader.hxx)
 
 
 #if defined(__BEOS__) || defined(__HAIKU__)
 #if defined(__BEOS__) || defined(__HAIKU__)
-#include <be/kernel/OS.h>  /* disable_debugger() API. */
+#include <be/kernel/OS.h> /* disable_debugger() API. */
 #endif
 #endif
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "DynamicLoader.hxx.in"
+#include "DynamicLoader.hxx.in"
 #endif
 #endif
 
 
-#include <string>
 #include <iostream>
 #include <iostream>
+#include <string>
 
 
 // Include with <> instead of "" to avoid getting any in-source copy
 // Include with <> instead of "" to avoid getting any in-source copy
 // left on disk.
 // left on disk.
@@ -53,41 +44,36 @@ static std::string GetLibName(const char* lname)
  * r2: should GetSymbolAddress succeed ?
  * r2: should GetSymbolAddress succeed ?
  * r3: should CloseLibrary succeed ?
  * r3: should CloseLibrary succeed ?
  */
  */
-static int TestDynamicLoader(const char* libname, const char* symbol, int r1, int r2, int r3)
+static int TestDynamicLoader(const char* libname, const char* symbol, int r1,
+                             int r2, int r3)
 {
 {
   std::cerr << "Testing: " << libname << std::endl;
   std::cerr << "Testing: " << libname << std::endl;
-  kwsys::DynamicLoader::LibraryHandle l
-    = kwsys::DynamicLoader::OpenLibrary(libname);
+  kwsys::DynamicLoader::LibraryHandle l =
+    kwsys::DynamicLoader::OpenLibrary(libname);
   // If result is incompatible with expectation just fails (xor):
   // If result is incompatible with expectation just fails (xor):
-  if( (r1 && !l) || (!r1 && l) )
-    {
-    std::cerr
-      << kwsys::DynamicLoader::LastError() << std::endl;
+  if ((r1 && !l) || (!r1 && l)) {
+    std::cerr << kwsys::DynamicLoader::LastError() << std::endl;
     return 1;
     return 1;
-    }
-  kwsys::DynamicLoader::SymbolPointer f
-    = kwsys::DynamicLoader::GetSymbolAddress(l, symbol);
-  if( (r2 && !f) || (!r2 && f) )
-    {
-    std::cerr
-      << kwsys::DynamicLoader::LastError() << std::endl;
+  }
+  kwsys::DynamicLoader::SymbolPointer f =
+    kwsys::DynamicLoader::GetSymbolAddress(l, symbol);
+  if ((r2 && !f) || (!r2 && f)) {
+    std::cerr << kwsys::DynamicLoader::LastError() << std::endl;
     return 1;
     return 1;
-    }
+  }
 #ifndef __APPLE__
 #ifndef __APPLE__
   int s = kwsys::DynamicLoader::CloseLibrary(l);
   int s = kwsys::DynamicLoader::CloseLibrary(l);
-  if( (r3 && !s) || (!r3 && s) )
-    {
-    std::cerr
-      << kwsys::DynamicLoader::LastError() << std::endl;
+  if ((r3 && !s) || (!r3 && s)) {
+    std::cerr << kwsys::DynamicLoader::LastError() << std::endl;
     return 1;
     return 1;
-    }
+  }
 #else
 #else
   (void)r3;
   (void)r3;
 #endif
 #endif
   return 0;
   return 0;
 }
 }
 
 
-int testDynamicLoader(int argc, char *argv[])
+int testDynamicLoader(int argc, char* argv[])
 {
 {
 #if defined(_WIN32)
 #if defined(_WIN32)
   SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
   SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
@@ -95,34 +81,37 @@ int testDynamicLoader(int argc, char *argv[])
   disable_debugger(1);
   disable_debugger(1);
 #endif
 #endif
   int res = 0;
   int res = 0;
-  if( argc == 3 )
-    {
+  if (argc == 3) {
     // User specify a libname and symbol to check.
     // User specify a libname and symbol to check.
-    res = TestDynamicLoader(argv[1], argv[2],1,1,1);
+    res = TestDynamicLoader(argv[1], argv[2], 1, 1, 1);
     return res;
     return res;
-    }
+  }
 
 
 // dlopen() on Syllable before 11/22/2007 doesn't return 0 on error
 // dlopen() on Syllable before 11/22/2007 doesn't return 0 on error
 #ifndef __SYLLABLE__
 #ifndef __SYLLABLE__
   // Make sure that inexistent lib is giving correct result
   // Make sure that inexistent lib is giving correct result
-  res += TestDynamicLoader("azerty_", "foo_bar",0,0,0);
+  res += TestDynamicLoader("azerty_", "foo_bar", 0, 0, 0);
   // Make sure that random binary file cannot be assimilated as dylib
   // Make sure that random binary file cannot be assimilated as dylib
-  res += TestDynamicLoader(TEST_SYSTEMTOOLS_SOURCE_DIR "/testSystemTools.bin", "wp",0,0,0);
+  res += TestDynamicLoader(TEST_SYSTEMTOOLS_SOURCE_DIR "/testSystemTools.bin",
+                           "wp", 0, 0, 0);
 #endif
 #endif
 
 
 #ifdef __linux__
 #ifdef __linux__
-  // This one is actually fun to test, since dlopen is by default loaded...wonder why :)
-  res += TestDynamicLoader("foobar.lib", "dlopen",0,1,0);
-  res += TestDynamicLoader("libdl.so", "dlopen",1,1,1);
-  res += TestDynamicLoader("libdl.so", "TestDynamicLoader",1,0,1);
+  // This one is actually fun to test, since dlopen is by default
+  // loaded...wonder why :)
+  res += TestDynamicLoader("foobar.lib", "dlopen", 0, 1, 0);
+  res += TestDynamicLoader("libdl.so", "dlopen", 1, 1, 1);
+  res += TestDynamicLoader("libdl.so", "TestDynamicLoader", 1, 0, 1);
 #endif
 #endif
   // Now try on the generated library
   // Now try on the generated library
   std::string libname = GetLibName(KWSYS_NAMESPACE_STRING "TestDynload");
   std::string libname = GetLibName(KWSYS_NAMESPACE_STRING "TestDynload");
-  res += TestDynamicLoader(libname.c_str(), "dummy",1,0,1);
-  res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderSymbolPointer",1,1,1);
-  res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderSymbolPointer",1,0,1);
-  res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderData",1,1,1);
-  res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderData",1,0,1);
+  res += TestDynamicLoader(libname.c_str(), "dummy", 1, 0, 1);
+  res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderSymbolPointer",
+                           1, 1, 1);
+  res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderSymbolPointer",
+                           1, 0, 1);
+  res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderData", 1, 1, 1);
+  res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderData", 1, 0, 1);
 
 
   return res;
   return res;
 }
 }

+ 3 - 12
testDynload.c

@@ -1,16 +1,7 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifdef _WIN32
 #ifdef _WIN32
-#define DL_EXPORT __declspec( dllexport )
+#define DL_EXPORT __declspec(dllexport)
 #else
 #else
 #define DL_EXPORT
 #define DL_EXPORT
 #endif
 #endif

+ 11 - 20
testEncode.c

@@ -1,29 +1,20 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(MD5.h)
 #include KWSYS_HEADER(MD5.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "MD5.h.in"
+#include "MD5.h.in"
 #endif
 #endif
 
 
 #include <stdio.h>
 #include <stdio.h>
 #include <string.h>
 #include <string.h>
 
 
 static const unsigned char testMD5input1[] =
 static const unsigned char testMD5input1[] =
-"  A quick brown fox jumps over the lazy dog.\n"
-"  This is sample text for MD5 sum input.\n";
+  "  A quick brown fox jumps over the lazy dog.\n"
+  "  This is sample text for MD5 sum input.\n";
 static const char testMD5output1[] = "8f146af46ed4f267921bb937d4d3500c";
 static const char testMD5output1[] = "8f146af46ed4f267921bb937d4d3500c";
 
 
 static const int testMD5input2len = 28;
 static const int testMD5input2len = 28;
@@ -40,7 +31,7 @@ static int testMD5_1(kwsysMD5* md5)
   printf("md5sum 1: expected [%s]\n"
   printf("md5sum 1: expected [%s]\n"
          "               got [%s]\n",
          "               got [%s]\n",
          testMD5output1, md5out);
          testMD5output1, md5out);
-  return (strcmp(md5out, testMD5output1) != 0)? 1:0;
+  return (strcmp(md5out, testMD5output1) != 0) ? 1 : 0;
 }
 }
 
 
 static int testMD5_2(kwsysMD5* md5)
 static int testMD5_2(kwsysMD5* md5)
@@ -55,7 +46,7 @@ static int testMD5_2(kwsysMD5* md5)
   printf("md5sum 2: expected [%s]\n"
   printf("md5sum 2: expected [%s]\n"
          "               got [%s]\n",
          "               got [%s]\n",
          testMD5output2, md5out);
          testMD5output2, md5out);
-  return (strcmp(md5out, testMD5output2) != 0)? 1:0;
+  return (strcmp(md5out, testMD5output2) != 0) ? 1 : 0;
 }
 }
 
 
 int testEncode(int argc, char* argv[])
 int testEncode(int argc, char* argv[])
@@ -66,10 +57,10 @@ int testEncode(int argc, char* argv[])
 
 
   /* Test MD5 digest.  */
   /* Test MD5 digest.  */
   {
   {
-  kwsysMD5* md5 = kwsysMD5_New();
-  result |= testMD5_1(md5);
-  result |= testMD5_2(md5);
-  kwsysMD5_Delete(md5);
+    kwsysMD5* md5 = kwsysMD5_New();
+    result |= testMD5_1(md5);
+    result |= testMD5_2(md5);
+    kwsysMD5_Delete(md5);
   }
   }
 
 
   return result;
   return result;

+ 51 - 79
testEncoding.cxx

@@ -1,18 +1,9 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (disable:4786)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #include KWSYS_HEADER(Encoding.hxx)
 #include KWSYS_HEADER(Encoding.hxx)
@@ -20,68 +11,63 @@
 
 
 #include <iostream>
 #include <iostream>
 #include <locale.h>
 #include <locale.h>
-#include <string.h>
 #include <stdlib.h>
 #include <stdlib.h>
+#include <string.h>
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Encoding.hxx.in"
-# include "Encoding.h.in"
+#include "Encoding.h.in"
+#include "Encoding.hxx.in"
 #endif
 #endif
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-static const unsigned char helloWorldStrings[][32] =
-{
+static const unsigned char helloWorldStrings[][32] = {
   // English
   // English
-  {'H','e','l','l','o',' ','W','o','r','l','d',0},
+  { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', 0 },
   // Japanese
   // Japanese
-  {0xE3, 0x81, 0x93, 0xE3, 0x82, 0x93, 0xE3, 0x81, 0xAB, 0xE3,
-   0x81, 0xA1, 0xE3, 0x81, 0xAF, 0xE4, 0xB8, 0x96, 0xE7, 0x95,
-   0x8C, 0},
-   // Arabic
-  {0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7,
-   0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD8, 0xB9, 0xD8, 0xA7, 0xD9,
-   0x84, 0xD9, 0x85, 0},
+  { 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x93, 0xE3, 0x81, 0xAB, 0xE3, 0x81,
+    0xA1, 0xE3, 0x81, 0xAF, 0xE4, 0xB8, 0x96, 0xE7, 0x95, 0x8C, 0 },
+  // Arabic
+  { 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7, 0x20, 0xD8,
+    0xA7, 0xD9, 0x84, 0xD8, 0xB9, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x85, 0 },
   // Yiddish
   // Yiddish
-  {0xD7, 0x94, 0xD7, 0xA2, 0xD7, 0x9C, 0xD7, 0x90, 0x20, 0xD7,
-   0x95, 0xD7, 0x95, 0xD7, 0xA2, 0xD7, 0x9C, 0xD7, 0x98, 0},
+  { 0xD7, 0x94, 0xD7, 0xA2, 0xD7, 0x9C, 0xD7, 0x90, 0x20, 0xD7,
+    0x95, 0xD7, 0x95, 0xD7, 0xA2, 0xD7, 0x9C, 0xD7, 0x98, 0 },
   // Russian
   // Russian
-  {0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5,
-   0xD1, 0x82, 0x20, 0xD0, 0xBC, 0xD0, 0xB8, 0xD1, 0x80, 0},
+  { 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5,
+    0xD1, 0x82, 0x20, 0xD0, 0xBC, 0xD0, 0xB8, 0xD1, 0x80, 0 },
   // Latin
   // Latin
-  {0x4D, 0x75, 0x6E, 0x64, 0x75, 0x73, 0x20, 0x73, 0x61, 0x6C,
-   0x76, 0x65, 0},
+  { 0x4D, 0x75, 0x6E, 0x64, 0x75, 0x73, 0x20, 0x73, 0x61, 0x6C, 0x76, 0x65,
+    0 },
   // Swahili
   // Swahili
-  {0x68, 0x75, 0x6A, 0x61, 0x6D, 0x62, 0x6F, 0x20, 0x44, 0x75,
-   0x6E, 0x69, 0x61, 0},
+  { 0x68, 0x75, 0x6A, 0x61, 0x6D, 0x62, 0x6F, 0x20, 0x44, 0x75, 0x6E, 0x69,
+    0x61, 0 },
   // Icelandic
   // Icelandic
-  {0x48, 0x61, 0x6C, 0x6C, 0xC3, 0xB3, 0x20, 0x68, 0x65, 0x69,
-   0x6D, 0x75, 0x72, 0},
-  {0}
+  { 0x48, 0x61, 0x6C, 0x6C, 0xC3, 0xB3, 0x20, 0x68, 0x65, 0x69, 0x6D, 0x75,
+    0x72, 0 },
+  { 0 }
 };
 };
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 static int testHelloWorldEncoding()
 static int testHelloWorldEncoding()
 {
 {
   int ret = 0;
   int ret = 0;
-  for(int i=0; helloWorldStrings[i][0] != 0; i++)
-    {
+  for (int i = 0; helloWorldStrings[i][0] != 0; i++) {
     std::string str = reinterpret_cast<const char*>(helloWorldStrings[i]);
     std::string str = reinterpret_cast<const char*>(helloWorldStrings[i]);
     std::cout << str << std::endl;
     std::cout << str << std::endl;
     std::wstring wstr = kwsys::Encoding::ToWide(str);
     std::wstring wstr = kwsys::Encoding::ToWide(str);
     std::string str2 = kwsys::Encoding::ToNarrow(wstr);
     std::string str2 = kwsys::Encoding::ToNarrow(wstr);
     wchar_t* c_wstr = kwsysEncoding_DupToWide(str.c_str());
     wchar_t* c_wstr = kwsysEncoding_DupToWide(str.c_str());
     char* c_str2 = kwsysEncoding_DupToNarrow(c_wstr);
     char* c_str2 = kwsysEncoding_DupToNarrow(c_wstr);
-    if(!wstr.empty() && (str != str2 || strcmp(c_str2, str.c_str())))
-      {
+    if (!wstr.empty() && (str != str2 || strcmp(c_str2, str.c_str()))) {
       std::cout << "converted string was different: " << str2 << std::endl;
       std::cout << "converted string was different: " << str2 << std::endl;
       std::cout << "converted string was different: " << c_str2 << std::endl;
       std::cout << "converted string was different: " << c_str2 << std::endl;
       ret++;
       ret++;
-      }
+    }
     free(c_wstr);
     free(c_wstr);
     free(c_str2);
     free(c_str2);
-    }
+  }
   return ret;
   return ret;
 }
 }
 
 
@@ -91,55 +77,49 @@ static int testRobustEncoding()
   // unicode correctly/gracefully
   // unicode correctly/gracefully
 
 
   int ret = 0;
   int ret = 0;
-  char cstr[] = {(char)-1, 0};
+  char cstr[] = { (char)-1, 0 };
   // this conversion could fail
   // this conversion could fail
   std::wstring wstr = kwsys::Encoding::ToWide(cstr);
   std::wstring wstr = kwsys::Encoding::ToWide(cstr);
 
 
   wstr = kwsys::Encoding::ToWide(NULL);
   wstr = kwsys::Encoding::ToWide(NULL);
-  if(wstr != L"")
-    {
+  if (wstr != L"") {
     const wchar_t* wcstr = wstr.c_str();
     const wchar_t* wcstr = wstr.c_str();
     std::cout << "ToWide(NULL) returned";
     std::cout << "ToWide(NULL) returned";
-    for(size_t i=0; i<wstr.size(); i++)
-      {
+    for (size_t i = 0; i < wstr.size(); i++) {
       std::cout << " " << std::hex << (int)wcstr[i];
       std::cout << " " << std::hex << (int)wcstr[i];
-      }
+    }
     std::cout << std::endl;
     std::cout << std::endl;
     ret++;
     ret++;
-    }
+  }
   wstr = kwsys::Encoding::ToWide("");
   wstr = kwsys::Encoding::ToWide("");
-  if(wstr != L"")
-    {
+  if (wstr != L"") {
     const wchar_t* wcstr = wstr.c_str();
     const wchar_t* wcstr = wstr.c_str();
     std::cout << "ToWide(\"\") returned";
     std::cout << "ToWide(\"\") returned";
-    for(size_t i=0; i<wstr.size(); i++)
-      {
+    for (size_t i = 0; i < wstr.size(); i++) {
       std::cout << " " << std::hex << (int)wcstr[i];
       std::cout << " " << std::hex << (int)wcstr[i];
-      }
+    }
     std::cout << std::endl;
     std::cout << std::endl;
     ret++;
     ret++;
-    }
+  }
 
 
 #ifdef _WIN32
 #ifdef _WIN32
   // 16 bit wchar_t - we make an invalid surrogate pair
   // 16 bit wchar_t - we make an invalid surrogate pair
-  wchar_t cwstr[] = {0xD801, 0xDA00, 0};
+  wchar_t cwstr[] = { 0xD801, 0xDA00, 0 };
   // this conversion could fail
   // this conversion could fail
   std::string win_str = kwsys::Encoding::ToNarrow(cwstr);
   std::string win_str = kwsys::Encoding::ToNarrow(cwstr);
 #endif
 #endif
 
 
   std::string str = kwsys::Encoding::ToNarrow(NULL);
   std::string str = kwsys::Encoding::ToNarrow(NULL);
-  if(str != "")
-    {
+  if (str != "") {
     std::cout << "ToNarrow(NULL) returned " << str << std::endl;
     std::cout << "ToNarrow(NULL) returned " << str << std::endl;
     ret++;
     ret++;
-    }
+  }
 
 
   str = kwsys::Encoding::ToNarrow(L"");
   str = kwsys::Encoding::ToNarrow(L"");
-  if(wstr != L"")
-    {
+  if (wstr != L"") {
     std::cout << "ToNarrow(\"\") returned " << str << std::endl;
     std::cout << "ToNarrow(\"\") returned " << str << std::endl;
     ret++;
     ret++;
-    }
+  }
 
 
   return ret;
   return ret;
 }
 }
@@ -148,23 +128,18 @@ static int testCommandLineArguments()
 {
 {
   int status = 0;
   int status = 0;
 
 
-  char const* argv[2] = {
-    "./app.exe",
-    (char const*)helloWorldStrings[1]
-  };
+  char const* argv[2] = { "./app.exe", (char const*)helloWorldStrings[1] };
 
 
   kwsys::Encoding::CommandLineArguments args(2, argv);
   kwsys::Encoding::CommandLineArguments args(2, argv);
   kwsys::Encoding::CommandLineArguments arg2 =
   kwsys::Encoding::CommandLineArguments arg2 =
     kwsys::Encoding::CommandLineArguments(args);
     kwsys::Encoding::CommandLineArguments(args);
 
 
   char const* const* u8_argv = args.argv();
   char const* const* u8_argv = args.argv();
-  for(int i=0; i<args.argc(); i++)
-  {
+  for (int i = 0; i < args.argc(); i++) {
     char const* u8_arg = u8_argv[i];
     char const* u8_arg = u8_argv[i];
-    if(strcmp(argv[i], u8_arg) != 0)
-    {
-      std::cout << "argv[" << i << "] " << argv[i] << " != "
-                << u8_arg << std::endl;
+    if (strcmp(argv[i], u8_arg) != 0) {
+      std::cout << "argv[" << i << "] " << argv[i] << " != " << u8_arg
+                << std::endl;
       status++;
       status++;
     }
     }
   }
   }
@@ -176,17 +151,14 @@ static int testCommandLineArguments()
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-int testEncoding(int, char*[])
+int testEncoding(int, char* [])
 {
 {
   const char* loc = setlocale(LC_ALL, "");
   const char* loc = setlocale(LC_ALL, "");
-  if(loc)
-    {
+  if (loc) {
     std::cout << "Locale: " << loc << std::endl;
     std::cout << "Locale: " << loc << std::endl;
-    }
-  else
-    {
+  } else {
     std::cout << "Locale: None" << std::endl;
     std::cout << "Locale: None" << std::endl;
-    }
+  }
 
 
   int ret = 0;
   int ret = 0;
 
 

+ 46 - 68
testFStream.cxx

@@ -1,30 +1,21 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (disable:4786)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #include KWSYS_HEADER(FStream.hxx)
 #include KWSYS_HEADER(FStream.hxx)
 #include <string.h>
 #include <string.h>
 #ifdef __BORLANDC__
 #ifdef __BORLANDC__
-# include <mem.h> /* memcmp */
+#include <mem.h> /* memcmp */
 #endif
 #endif
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "FStream.hxx.in"
+#include "FStream.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
@@ -33,10 +24,9 @@
 static int testNoFile()
 static int testNoFile()
 {
 {
   kwsys::ifstream in_file("NoSuchFile.txt");
   kwsys::ifstream in_file("NoSuchFile.txt");
-  if(in_file)
-    {
+  if (in_file) {
     return 1;
     return 1;
-    }
+  }
 
 
   return 0;
   return 0;
 }
 }
@@ -44,90 +34,78 @@ static int testNoFile()
 static const int num_test_files = 7;
 static const int num_test_files = 7;
 static const int max_test_file_size = 45;
 static const int max_test_file_size = 45;
 
 
-static kwsys::FStream::BOM expected_bom[num_test_files] =
-{
-  kwsys::FStream::BOM_None,
-  kwsys::FStream::BOM_None,
-  kwsys::FStream::BOM_UTF8,
-  kwsys::FStream::BOM_UTF16LE,
-  kwsys::FStream::BOM_UTF16BE,
-  kwsys::FStream::BOM_UTF32LE,
+static kwsys::FStream::BOM expected_bom[num_test_files] = {
+  kwsys::FStream::BOM_None,    kwsys::FStream::BOM_None,
+  kwsys::FStream::BOM_UTF8,    kwsys::FStream::BOM_UTF16LE,
+  kwsys::FStream::BOM_UTF16BE, kwsys::FStream::BOM_UTF32LE,
   kwsys::FStream::BOM_UTF32BE
   kwsys::FStream::BOM_UTF32BE
 };
 };
 
 
-static unsigned char expected_bom_data[num_test_files][5] =
-{
-    {0},
-    {0},
-    {3, 0xEF, 0xBB, 0xBF},
-    {2, 0xFF, 0xFE},
-    {2, 0xFE, 0xFF},
-    {4, 0xFF, 0xFE, 0x00, 0x00},
-    {4, 0x00, 0x00, 0xFE, 0xFF},
+static unsigned char expected_bom_data[num_test_files][5] = {
+  { 0 },
+  { 0 },
+  { 3, 0xEF, 0xBB, 0xBF },
+  { 2, 0xFF, 0xFE },
+  { 2, 0xFE, 0xFF },
+  { 4, 0xFF, 0xFE, 0x00, 0x00 },
+  { 4, 0x00, 0x00, 0xFE, 0xFF },
 };
 };
 
 
-static unsigned char file_data[num_test_files][max_test_file_size] =
-{
-    {1, 'H'},
-    {11, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'},
-    {11, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'},
-    {22, 0x48, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x20, 0x00,
-    0x57, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6C, 0x00, 0x64, 0x00},
-    {22, 0x00, 0x48, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x20,
-    0x00, 0x57, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6C, 0x00, 0x64},
-    {44, 0x48, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00,
-    0x6C, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-    0x57, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
-    0x6C, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00},
-    {44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x6C,
-    0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x20,
-    0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x72,
-    0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x64},
+static unsigned char file_data[num_test_files][max_test_file_size] = {
+  { 1, 'H' },
+  { 11, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' },
+  { 11, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' },
+  { 22,   0x48, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x20,
+    0x00, 0x57, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6C, 0x00, 0x64, 0x00 },
+  { 22,   0x00, 0x48, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6F, 0x00,
+    0x20, 0x00, 0x57, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6C, 0x00, 0x64 },
+  { 44,   0x48, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00,
+    0x00, 0x6C, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+    0x00, 0x57, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00,
+    0x00, 0x6C, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00 },
+  { 44,   0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00,
+    0x6C, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+    0x20, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+    0x72, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x64 },
 };
 };
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 static int testBOM()
 static int testBOM()
 {
 {
   // test various encodings in binary mode
   // test various encodings in binary mode
-  for(int i=0; i<num_test_files; i++)
+  for (int i = 0; i < num_test_files; i++) {
     {
     {
-      {
       kwsys::ofstream out("bom.txt", kwsys::ofstream::binary);
       kwsys::ofstream out("bom.txt", kwsys::ofstream::binary);
-      out.write(reinterpret_cast<const char*>(expected_bom_data[i]+1),
+      out.write(reinterpret_cast<const char*>(expected_bom_data[i] + 1),
                 *expected_bom_data[i]);
                 *expected_bom_data[i]);
-      out.write(reinterpret_cast<const char*>(file_data[i]+1),
+      out.write(reinterpret_cast<const char*>(file_data[i] + 1),
                 file_data[i][0]);
                 file_data[i][0]);
-      }
+    }
 
 
     kwsys::ifstream in("bom.txt", kwsys::ofstream::binary);
     kwsys::ifstream in("bom.txt", kwsys::ofstream::binary);
     kwsys::FStream::BOM bom = kwsys::FStream::ReadBOM(in);
     kwsys::FStream::BOM bom = kwsys::FStream::ReadBOM(in);
-    if(bom != expected_bom[i])
-      {
+    if (bom != expected_bom[i]) {
       std::cout << "Unexpected BOM " << i << std::endl;
       std::cout << "Unexpected BOM " << i << std::endl;
       return 1;
       return 1;
-      }
+    }
     char data[max_test_file_size];
     char data[max_test_file_size];
     in.read(data, file_data[i][0]);
     in.read(data, file_data[i][0]);
-    if(!in.good())
-      {
+    if (!in.good()) {
       std::cout << "Unable to read data " << i << std::endl;
       std::cout << "Unable to read data " << i << std::endl;
       return 1;
       return 1;
-      }
+    }
 
 
-    if(memcmp(data, file_data[i]+1, file_data[i][0]) != 0)
-      {
+    if (memcmp(data, file_data[i] + 1, file_data[i][0]) != 0) {
       std::cout << "Incorrect read data " << i << std::endl;
       std::cout << "Incorrect read data " << i << std::endl;
       return 1;
       return 1;
-      }
-
     }
     }
+  }
 
 
   return 0;
   return 0;
 }
 }
 
 
-
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-int testFStream(int, char*[])
+int testFStream(int, char* [])
 {
 {
   int ret = 0;
   int ret = 0;
 
 

+ 10 - 21
testFail.c

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include <stdio.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <string.h>
 #include <string.h>
@@ -17,19 +8,17 @@ int testFail(int argc, char* argv[])
 {
 {
   char* env = getenv("DASHBOARD_TEST_FROM_CTEST");
   char* env = getenv("DASHBOARD_TEST_FROM_CTEST");
   int oldCtest = 0;
   int oldCtest = 0;
-  if(env)
-    {
-    if(strcmp(env, "1") == 0)
-      {
+  if (env) {
+    if (strcmp(env, "1") == 0) {
       oldCtest = 1;
       oldCtest = 1;
-      }
-    printf("DASHBOARD_TEST_FROM_CTEST = %s\n", env);
     }
     }
+    printf("DASHBOARD_TEST_FROM_CTEST = %s\n", env);
+  }
   printf("%s: This test intentionally fails\n", argv[0]);
   printf("%s: This test intentionally fails\n", argv[0]);
-  if(oldCtest)
-    {
-    printf("The version of ctest is not able to handle intentionally failing tests, so pass.\n");
+  if (oldCtest) {
+    printf("The version of ctest is not able to handle intentionally failing "
+           "tests, so pass.\n");
     return 0;
     return 0;
-    }
+  }
   return argc;
   return argc;
 }
 }

+ 13 - 24
testHashSTL.cxx

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(hash_map.hxx)
 #include KWSYS_HEADER(hash_map.hxx)
 #include KWSYS_HEADER(hash_set.hxx)
 #include KWSYS_HEADER(hash_set.hxx)
@@ -16,18 +7,18 @@
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "hash_map.hxx.in"
-# include "hash_set.hxx.in"
+#include "hash_map.hxx.in"
+#include "hash_set.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
 
 
 #if defined(_MSC_VER)
 #if defined(_MSC_VER)
-# pragma warning (disable:4786)
+#pragma warning(disable : 4786)
 #endif
 #endif
 
 
 #if defined(__sgi) && !defined(__GNUC__)
 #if defined(__sgi) && !defined(__GNUC__)
-# pragma set woff 1468 /* inline function cannot be explicitly instantiated */
+#pragma set woff 1468 /* inline function cannot be explicitly instantiated */
 #endif
 #endif
 
 
 template class kwsys::hash_map<const char*, int>;
 template class kwsys::hash_map<const char*, int>;
@@ -37,16 +28,15 @@ static bool test_hash_map()
 {
 {
   typedef kwsys::hash_map<const char*, int> mtype;
   typedef kwsys::hash_map<const char*, int> mtype;
   mtype m;
   mtype m;
-  const char* keys[] = {"hello", "world"};
+  const char* keys[] = { "hello", "world" };
   m[keys[0]] = 1;
   m[keys[0]] = 1;
   m.insert(mtype::value_type(keys[1], 2));
   m.insert(mtype::value_type(keys[1], 2));
   int sum = 0;
   int sum = 0;
-  for(mtype::iterator mi = m.begin(); mi != m.end(); ++mi)
-    {
+  for (mtype::iterator mi = m.begin(); mi != m.end(); ++mi) {
     std::cout << "Found entry [" << mi->first << "," << mi->second << "]"
     std::cout << "Found entry [" << mi->first << "," << mi->second << "]"
               << std::endl;
               << std::endl;
     sum += mi->second;
     sum += mi->second;
-    }
+  }
   return sum == 3;
   return sum == 3;
 }
 }
 
 
@@ -57,18 +47,17 @@ static bool test_hash_set()
   s.insert(1);
   s.insert(1);
   s.insert(2);
   s.insert(2);
   int sum = 0;
   int sum = 0;
-  for(stype::iterator si = s.begin(); si != s.end(); ++si)
-    {
+  for (stype::iterator si = s.begin(); si != s.end(); ++si) {
     std::cout << "Found entry [" << *si << "]" << std::endl;
     std::cout << "Found entry [" << *si << "]" << std::endl;
     sum += *si;
     sum += *si;
-    }
+  }
   return sum == 3;
   return sum == 3;
 }
 }
 
 
-int testHashSTL(int, char*[])
+int testHashSTL(int, char* [])
 {
 {
   bool result = true;
   bool result = true;
   result = test_hash_map() && result;
   result = test_hash_map() && result;
   result = test_hash_set() && result;
   result = test_hash_set() && result;
-  return result? 0:1;
+  return result ? 0 : 1;
 }
 }

+ 64 - 89
testIOS.cxx

@@ -1,163 +1,138 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Configure.hxx)
 #include KWSYS_HEADER(Configure.hxx)
 
 
-#include <sstream>
 #include <fstream>
 #include <fstream>
 #include <iostream>
 #include <iostream>
-#include <vector>
+#include <sstream>
 #include <string.h> /* strlen */
 #include <string.h> /* strlen */
+#include <vector>
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "Configure.hxx.in"
+#include "Configure.hxx.in"
 #endif
 #endif
 
 
-int testIOS(int, char*[])
+int testIOS(int, char* [])
 {
 {
   std::ostringstream ostr;
   std::ostringstream ostr;
   const char hello[] = "hello";
   const char hello[] = "hello";
   ostr << hello;
   ostr << hello;
-  if(ostr.str() != hello)
-    {
+  if (ostr.str() != hello) {
     std::cerr << "failed to write hello to ostr" << std::endl;
     std::cerr << "failed to write hello to ostr" << std::endl;
     return 1;
     return 1;
-    }
+  }
   const char world[] = "world";
   const char world[] = "world";
   std::ostringstream ostr2;
   std::ostringstream ostr2;
-  ostr2.write( hello, strlen(hello) ); /* I could do sizeof */
-  ostr2.put( '\0' );
-  ostr2.write( world, strlen(world) );
-  if(ostr2.str().size() !=  strlen(hello) + 1 + strlen(world) )
-    {
+  ostr2.write(hello, strlen(hello)); /* I could do sizeof */
+  ostr2.put('\0');
+  ostr2.write(world, strlen(world));
+  if (ostr2.str().size() != strlen(hello) + 1 + strlen(world)) {
     std::cerr << "failed to write hello to ostr2" << std::endl;
     std::cerr << "failed to write hello to ostr2" << std::endl;
     return 1;
     return 1;
-    }
-  static const unsigned char array[] = { 0xff,0x4f,0xff,0x51,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x01,0x01,0xff,0x52,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x05,0x04,0x04,0x00,0x01,0xff,0x5c,0x00,0x13,0x40,0x40,0x48,0x48,0x50,0x48,0x48,0x50,0x48,0x48,0x50,0x48,0x48,0x50,0x48,0x48,0x50,0xff,0x64,0x00,0x2c,0x00,0x00,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x62,0x79,0x20,0x49,0x54,0x4b,0x2f,0x47,0x44,0x43,0x4d,0x2f,0x4f,0x70,0x65,0x6e,0x4a,0x50,0x45,0x47,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x31,0x2e,0x30,0xff,0x90,0x00,0x0a,0x00,0x00,0x00,0x00,0x06,0x2c,0x00,0x01,0xff,0x93,0xcf,0xb0,0x18,0x08,0x7f,0xc6,0x99,0xbf,0xff,0xc0,0xf8,0xc1,0xc1,0xf3,0x05,0x81,0xf2,0x83,0x0a,0xa5,0xff,0x10,0x90,0xbf,0x2f,0xff,0x04,0xa8,0x7f,0xc0,0xf8,0xc4,0xc1,0xf3,0x09,0x81,0xf3,0x0c,0x19,0x34 };
+  }
+  static const unsigned char array[] = {
+    0xff, 0x4f, 0xff, 0x51, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+    0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01, 0x01, 0xff, 0x52, 0x00,
+    0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x04, 0x00, 0x01, 0xff,
+    0x5c, 0x00, 0x13, 0x40, 0x40, 0x48, 0x48, 0x50, 0x48, 0x48, 0x50, 0x48,
+    0x48, 0x50, 0x48, 0x48, 0x50, 0x48, 0x48, 0x50, 0xff, 0x64, 0x00, 0x2c,
+    0x00, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79,
+    0x20, 0x49, 0x54, 0x4b, 0x2f, 0x47, 0x44, 0x43, 0x4d, 0x2f, 0x4f, 0x70,
+    0x65, 0x6e, 0x4a, 0x50, 0x45, 0x47, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69,
+    0x6f, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0xff, 0x90, 0x00, 0x0a, 0x00, 0x00,
+    0x00, 0x00, 0x06, 0x2c, 0x00, 0x01, 0xff, 0x93, 0xcf, 0xb0, 0x18, 0x08,
+    0x7f, 0xc6, 0x99, 0xbf, 0xff, 0xc0, 0xf8, 0xc1, 0xc1, 0xf3, 0x05, 0x81,
+    0xf2, 0x83, 0x0a, 0xa5, 0xff, 0x10, 0x90, 0xbf, 0x2f, 0xff, 0x04, 0xa8,
+    0x7f, 0xc0, 0xf8, 0xc4, 0xc1, 0xf3, 0x09, 0x81, 0xf3, 0x0c, 0x19, 0x34
+  };
   const size_t narray = sizeof(array); // 180
   const size_t narray = sizeof(array); // 180
   std::stringstream strstr;
   std::stringstream strstr;
-  strstr.write( (char*)array, narray );
-  //strstr.seekp( narray / 2 ); // set position of put pointer in mid string
-  if(strstr.str().size() != narray )
-    {
+  strstr.write((char*)array, narray);
+  // strstr.seekp( narray / 2 ); // set position of put pointer in mid string
+  if (strstr.str().size() != narray) {
     std::cerr << "failed to write array to strstr" << std::endl;
     std::cerr << "failed to write array to strstr" << std::endl;
     return 1;
     return 1;
-    }
+  }
 
 
   std::istringstream istr(" 10 20 str ");
   std::istringstream istr(" 10 20 str ");
   std::string s;
   std::string s;
   int x;
   int x;
-  if(istr >> x)
-    {
-    if(x != 10)
-      {
+  if (istr >> x) {
+    if (x != 10) {
       std::cerr << "x != 10" << std::endl;
       std::cerr << "x != 10" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read 10 from istr" << std::endl;
     std::cerr << "Failed to read 10 from istr" << std::endl;
     return 1;
     return 1;
-    }
-  if(istr >> x)
-    {
-    if(x != 20)
-      {
+  }
+  if (istr >> x) {
+    if (x != 20) {
       std::cerr << "x != 20" << std::endl;
       std::cerr << "x != 20" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read 20 from istr" << std::endl;
     std::cerr << "Failed to read 20 from istr" << std::endl;
     return 1;
     return 1;
-    }
-  if(istr >> s)
-    {
-    if(s != "str")
-      {
+  }
+  if (istr >> s) {
+    if (s != "str") {
       std::cerr << "s != \"str\"" << std::endl;
       std::cerr << "s != \"str\"" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read str from istr" << std::endl;
     std::cerr << "Failed to read str from istr" << std::endl;
     return 1;
     return 1;
-    }
-  if(istr >> s)
-    {
+  }
+  if (istr >> s) {
     std::cerr << "Able to read past end of stream" << std::endl;
     std::cerr << "Able to read past end of stream" << std::endl;
     return 1;
     return 1;
-    }
-  else
-    {
+  } else {
     // Clear the failure.
     // Clear the failure.
     istr.clear(istr.rdstate() & ~std::ios::eofbit);
     istr.clear(istr.rdstate() & ~std::ios::eofbit);
     istr.clear(istr.rdstate() & ~std::ios::failbit);
     istr.clear(istr.rdstate() & ~std::ios::failbit);
-    }
+  }
   istr.str("30");
   istr.str("30");
-  if(istr >> x)
-    {
-    if(x != 30)
-      {
+  if (istr >> x) {
+    if (x != 30) {
       std::cerr << "x != 30" << std::endl;
       std::cerr << "x != 30" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read 30 from istr" << std::endl;
     std::cerr << "Failed to read 30 from istr" << std::endl;
     return 1;
     return 1;
-    }
+  }
 
 
   std::stringstream sstr;
   std::stringstream sstr;
   sstr << "40 str2";
   sstr << "40 str2";
-  if(sstr >> x)
-    {
-    if(x != 40)
-      {
+  if (sstr >> x) {
+    if (x != 40) {
       std::cerr << "x != 40" << std::endl;
       std::cerr << "x != 40" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read 40 from sstr" << std::endl;
     std::cerr << "Failed to read 40 from sstr" << std::endl;
     return 1;
     return 1;
-    }
-  if(sstr >> s)
-    {
-    if(s != "str2")
-      {
+  }
+  if (sstr >> s) {
+    if (s != "str2") {
       std::cerr << "s != \"str2\"" << std::endl;
       std::cerr << "s != \"str2\"" << std::endl;
       return 1;
       return 1;
-      }
     }
     }
-  else
-    {
+  } else {
     std::cerr << "Failed to read str2 from sstr" << std::endl;
     std::cerr << "Failed to read str2 from sstr" << std::endl;
     return 1;
     return 1;
-    }
+  }
 
 
   // Just try to compile this.
   // Just try to compile this.
-  if(x == 12345)
-    {
-    std::ifstream fin("/does_not_exist",
-                      std::ios::in | std::ios::binary);
-    }
+  if (x == 12345) {
+    std::ifstream fin("/does_not_exist", std::ios::in | std::ios::binary);
+  }
 
 
   std::cout << "IOS tests passed" << std::endl;
   std::cout << "IOS tests passed" << std::endl;
   return 0;
   return 0;

+ 205 - 249
testProcess.c

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Process.h)
 #include KWSYS_HEADER(Process.h)
 #include KWSYS_HEADER(Encoding.h)
 #include KWSYS_HEADER(Encoding.h)
@@ -16,8 +7,8 @@
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "Process.h.in"
-# include "Encoding.h.in"
+#include "Encoding.h.in"
+#include "Process.h.in"
 #endif
 #endif
 
 
 #include <assert.h>
 #include <assert.h>
@@ -27,21 +18,21 @@
 #include <string.h>
 #include <string.h>
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
-# include <windows.h>
+#include <windows.h>
 #else
 #else
-# include <unistd.h>
-# include <signal.h>
+#include <signal.h>
+#include <unistd.h>
 #endif
 #endif
 
 
 #if defined(__BORLANDC__)
 #if defined(__BORLANDC__)
-# pragma warn -8060 /* possibly incorrect assignment */
+#pragma warn - 8060 /* possibly incorrect assignment */
 #endif
 #endif
 
 
 /* Platform-specific sleep functions. */
 /* Platform-specific sleep functions. */
 
 
 #if defined(__BEOS__) && !defined(__ZETA__)
 #if defined(__BEOS__) && !defined(__ZETA__)
 /* BeOS 5 doesn't have usleep(), but it has snooze(), which is identical. */
 /* BeOS 5 doesn't have usleep(), but it has snooze(), which is identical. */
-# include <be/kernel/OS.h>
+#include <be/kernel/OS.h>
 static inline void testProcess_usleep(unsigned int usec)
 static inline void testProcess_usleep(unsigned int usec)
 {
 {
   snooze(usec);
   snooze(usec);
@@ -53,13 +44,13 @@ static void testProcess_usleep(unsigned int usec)
   Sleep(usec / 1000);
   Sleep(usec / 1000);
 }
 }
 #else
 #else
-# define testProcess_usleep usleep
+#define testProcess_usleep usleep
 #endif
 #endif
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
 static void testProcess_sleep(unsigned int sec)
 static void testProcess_sleep(unsigned int sec)
 {
 {
-  Sleep(sec*1000);
+  Sleep(sec * 1000);
 }
 }
 #else
 #else
 static void testProcess_sleep(unsigned int sec)
 static void testProcess_sleep(unsigned int sec)
@@ -68,10 +59,9 @@ static void testProcess_sleep(unsigned int sec)
 }
 }
 #endif
 #endif
 
 
-int runChild(const char* cmd[], int state, int exception, int value,
-             int share, int output, int delay, double timeout, int poll,
-             int repeat, int disown, int createNewGroup,
-             unsigned int interruptDelay);
+int runChild(const char* cmd[], int state, int exception, int value, int share,
+             int output, int delay, double timeout, int poll, int repeat,
+             int disown, int createNewGroup, unsigned int interruptDelay);
 
 
 static int test1(int argc, const char* argv[])
 static int test1(int argc, const char* argv[])
 {
 {
@@ -85,7 +75,8 @@ static int test1(int argc, const char* argv[])
      If you have problems with this test timing out on your system, or want to
      If you have problems with this test timing out on your system, or want to
      run more than 257 iterations, you can change the number of iterations by
      run more than 257 iterations, you can change the number of iterations by
      setting the KWSYS_TEST_PROCESS_1_COUNT environment variable.  */
      setting the KWSYS_TEST_PROCESS_1_COUNT environment variable.  */
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output on stdout from test returning 0.\n");
   fprintf(stdout, "Output on stdout from test returning 0.\n");
   fprintf(stderr, "Output on stderr from test returning 0.\n");
   fprintf(stderr, "Output on stderr from test returning 0.\n");
   return 0;
   return 0;
@@ -93,7 +84,8 @@ static int test1(int argc, const char* argv[])
 
 
 static int test2(int argc, const char* argv[])
 static int test2(int argc, const char* argv[])
 {
 {
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output on stdout from test returning 123.\n");
   fprintf(stdout, "Output on stdout from test returning 123.\n");
   fprintf(stderr, "Output on stderr from test returning 123.\n");
   fprintf(stderr, "Output on stderr from test returning 123.\n");
   return 123;
   return 123;
@@ -101,7 +93,8 @@ static int test2(int argc, const char* argv[])
 
 
 static int test3(int argc, const char* argv[])
 static int test3(int argc, const char* argv[])
 {
 {
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output before sleep on stdout from timeout test.\n");
   fprintf(stdout, "Output before sleep on stdout from timeout test.\n");
   fprintf(stderr, "Output before sleep on stderr from timeout test.\n");
   fprintf(stderr, "Output before sleep on stderr from timeout test.\n");
   fflush(stdout);
   fflush(stdout);
@@ -120,7 +113,7 @@ static int test4(int argc, const char* argv[])
   optimize away the write. We hope to 'outsmart' them by using
   optimize away the write. We hope to 'outsmart' them by using
   'volatile' and a slightly larger address, based on a runtime value. */
   'volatile' and a slightly larger address, based on a runtime value. */
   volatile int* invalidAddress = 0;
   volatile int* invalidAddress = 0;
-  invalidAddress += argc?1:2;
+  invalidAddress += argc ? 1 : 2;
 
 
 #if defined(_WIN32)
 #if defined(_WIN32)
   /* Avoid error diagnostic popups since we are crashing on purpose.  */
   /* Avoid error diagnostic popups since we are crashing on purpose.  */
@@ -129,7 +122,8 @@ static int test4(int argc, const char* argv[])
   /* Avoid error diagnostic popups since we are crashing on purpose.  */
   /* Avoid error diagnostic popups since we are crashing on purpose.  */
   disable_debugger(1);
   disable_debugger(1);
 #endif
 #endif
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output before crash on stdout from crash test.\n");
   fprintf(stdout, "Output before crash on stdout from crash test.\n");
   fprintf(stderr, "Output before crash on stderr from crash test.\n");
   fprintf(stderr, "Output before crash on stderr from crash test.\n");
   fflush(stdout);
   fflush(stdout);
@@ -155,8 +149,8 @@ static int test5(int argc, const char* argv[])
   fprintf(stderr, "Output on stderr before recursive test.\n");
   fprintf(stderr, "Output on stderr before recursive test.\n");
   fflush(stdout);
   fflush(stdout);
   fflush(stderr);
   fflush(stderr);
-  r = runChild(cmd, kwsysProcess_State_Exception,
-               kwsysProcess_Exception_Fault, 1, 1, 1, 0, 15, 0, 1, 0, 0, 0);
+  r = runChild(cmd, kwsysProcess_State_Exception, kwsysProcess_Exception_Fault,
+               1, 1, 1, 0, 15, 0, 1, 0, 0, 0);
   fprintf(stdout, "Output on stdout after recursive test.\n");
   fprintf(stdout, "Output on stdout after recursive test.\n");
   fprintf(stderr, "Output on stderr after recursive test.\n");
   fprintf(stderr, "Output on stderr after recursive test.\n");
   fflush(stdout);
   fflush(stdout);
@@ -164,24 +158,23 @@ static int test5(int argc, const char* argv[])
   return r;
   return r;
 }
 }
 
 
-#define TEST6_SIZE (4096*2)
+#define TEST6_SIZE (4096 * 2)
 static void test6(int argc, const char* argv[])
 static void test6(int argc, const char* argv[])
 {
 {
   int i;
   int i;
-  char runaway[TEST6_SIZE+1];
-  (void)argc; (void)argv;
-  for(i=0;i < TEST6_SIZE;++i)
-    {
+  char runaway[TEST6_SIZE + 1];
+  (void)argc;
+  (void)argv;
+  for (i = 0; i < TEST6_SIZE; ++i) {
     runaway[i] = '.';
     runaway[i] = '.';
-    }
+  }
   runaway[TEST6_SIZE] = '\n';
   runaway[TEST6_SIZE] = '\n';
 
 
   /* Generate huge amounts of output to test killing.  */
   /* Generate huge amounts of output to test killing.  */
-  for(;;)
-    {
-    fwrite(runaway, 1, TEST6_SIZE+1, stdout);
+  for (;;) {
+    fwrite(runaway, 1, TEST6_SIZE + 1, stdout);
     fflush(stdout);
     fflush(stdout);
-    }
+  }
 }
 }
 
 
 /* Define MINPOLL to be one more than the number of times output is
 /* Define MINPOLL to be one more than the number of times output is
@@ -191,7 +184,8 @@ static void test6(int argc, const char* argv[])
 #define MAXPOLL 20
 #define MAXPOLL 20
 static int test7(int argc, const char* argv[])
 static int test7(int argc, const char* argv[])
 {
 {
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output on stdout before sleep.\n");
   fprintf(stdout, "Output on stdout before sleep.\n");
   fprintf(stderr, "Output on stderr before sleep.\n");
   fprintf(stderr, "Output on stderr before sleep.\n");
   fflush(stdout);
   fflush(stdout);
@@ -231,7 +225,8 @@ static int test8(int argc, const char* argv[])
 
 
 static int test8_grandchild(int argc, const char* argv[])
 static int test8_grandchild(int argc, const char* argv[])
 {
 {
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
   fflush(stdout);
   fflush(stdout);
@@ -266,9 +261,8 @@ static int test9(int argc, const char* argv[])
   fprintf(stderr, "Output on stderr before grandchild test.\n");
   fprintf(stderr, "Output on stderr before grandchild test.\n");
   fflush(stdout);
   fflush(stdout);
   fflush(stderr);
   fflush(stderr);
-  r = runChild(cmd, kwsysProcess_State_Exited,
-               kwsysProcess_Exception_None,
-               0, 1, 1, 0, 30, 0, 1, 0, 0, 0);
+  r = runChild(cmd, kwsysProcess_State_Exited, kwsysProcess_Exception_None, 0,
+               1, 1, 0, 30, 0, 1, 0, 0, 0);
   /* This sleep will avoid a race condition between this function exiting
   /* This sleep will avoid a race condition between this function exiting
      normally and our Ctrl+C handler exiting abnormally after the process
      normally and our Ctrl+C handler exiting abnormally after the process
      exits.  */
      exits.  */
@@ -294,21 +288,20 @@ static BOOL WINAPI test9_grandchild_handler(DWORD dwCtrlType)
 static int test9_grandchild(int argc, const char* argv[])
 static int test9_grandchild(int argc, const char* argv[])
 {
 {
   /* The grandchild just sleeps for a few seconds while ignoring signals.  */
   /* The grandchild just sleeps for a few seconds while ignoring signals.  */
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
 #if defined(_WIN32)
 #if defined(_WIN32)
-  if(!SetConsoleCtrlHandler(test9_grandchild_handler, TRUE))
-    {
+  if (!SetConsoleCtrlHandler(test9_grandchild_handler, TRUE)) {
     return 1;
     return 1;
-    }
+  }
 #else
 #else
   struct sigaction sa;
   struct sigaction sa;
   memset(&sa, 0, sizeof(sa));
   memset(&sa, 0, sizeof(sa));
   sa.sa_handler = SIG_IGN;
   sa.sa_handler = SIG_IGN;
   sigemptyset(&sa.sa_mask);
   sigemptyset(&sa.sa_mask);
-  if(sigaction(SIGINT, &sa, 0) < 0)
-    {
+  if (sigaction(SIGINT, &sa, 0) < 0) {
     return 1;
     return 1;
-    }
+  }
 #endif
 #endif
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
@@ -341,9 +334,9 @@ static int test10(int argc, const char* argv[])
   fprintf(stderr, "Output on stderr before grandchild test.\n");
   fprintf(stderr, "Output on stderr before grandchild test.\n");
   fflush(stdout);
   fflush(stdout);
   fflush(stderr);
   fflush(stderr);
-  r = runChild(cmd, kwsysProcess_State_Exception,
-               kwsysProcess_Exception_Interrupt,
-               0, 1, 1, 0, 30, 0, 1, 0, 1, 0);
+  r =
+    runChild(cmd, kwsysProcess_State_Exception,
+             kwsysProcess_Exception_Interrupt, 0, 1, 1, 0, 30, 0, 1, 0, 1, 0);
   fprintf(stdout, "Output on stdout after grandchild test.\n");
   fprintf(stdout, "Output on stdout after grandchild test.\n");
   fprintf(stderr, "Output on stderr after grandchild test.\n");
   fprintf(stderr, "Output on stderr after grandchild test.\n");
   fflush(stdout);
   fflush(stdout);
@@ -354,7 +347,8 @@ static int test10(int argc, const char* argv[])
 static int test10_grandchild(int argc, const char* argv[])
 static int test10_grandchild(int argc, const char* argv[])
 {
 {
   /* The grandchild just sleeps for a few seconds and handles signals.  */
   /* The grandchild just sleeps for a few seconds and handles signals.  */
-  (void)argc; (void)argv;
+  (void)argc;
+  (void)argv;
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stdout, "Output on stdout from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
   fprintf(stderr, "Output on stderr from grandchild before sleep.\n");
   fflush(stdout);
   fflush(stdout);
@@ -368,11 +362,10 @@ static int test10_grandchild(int argc, const char* argv[])
   return 0;
   return 0;
 }
 }
 
 
-static int runChild2(kwsysProcess* kp,
-              const char* cmd[], int state, int exception, int value,
-              int share, int output, int delay, double timeout,
-              int poll, int disown, int createNewGroup,
-              unsigned int interruptDelay)
+static int runChild2(kwsysProcess* kp, const char* cmd[], int state,
+                     int exception, int value, int share, int output,
+                     int delay, double timeout, int poll, int disown,
+                     int createNewGroup, unsigned int interruptDelay)
 {
 {
   int result = 0;
   int result = 0;
   char* data = 0;
   char* data = 0;
@@ -380,146 +373,128 @@ static int runChild2(kwsysProcess* kp,
   double userTimeout = 0;
   double userTimeout = 0;
   double* pUserTimeout = 0;
   double* pUserTimeout = 0;
   kwsysProcess_SetCommand(kp, cmd);
   kwsysProcess_SetCommand(kp, cmd);
-  if(timeout >= 0)
-    {
+  if (timeout >= 0) {
     kwsysProcess_SetTimeout(kp, timeout);
     kwsysProcess_SetTimeout(kp, timeout);
-    }
-  if(share)
-    {
+  }
+  if (share) {
     kwsysProcess_SetPipeShared(kp, kwsysProcess_Pipe_STDOUT, 1);
     kwsysProcess_SetPipeShared(kp, kwsysProcess_Pipe_STDOUT, 1);
     kwsysProcess_SetPipeShared(kp, kwsysProcess_Pipe_STDERR, 1);
     kwsysProcess_SetPipeShared(kp, kwsysProcess_Pipe_STDERR, 1);
-    }
-  if(disown)
-    {
+  }
+  if (disown) {
     kwsysProcess_SetOption(kp, kwsysProcess_Option_Detach, 1);
     kwsysProcess_SetOption(kp, kwsysProcess_Option_Detach, 1);
-    }
-  if(createNewGroup)
-    {
+  }
+  if (createNewGroup) {
     kwsysProcess_SetOption(kp, kwsysProcess_Option_CreateProcessGroup, 1);
     kwsysProcess_SetOption(kp, kwsysProcess_Option_CreateProcessGroup, 1);
-    }
+  }
   kwsysProcess_Execute(kp);
   kwsysProcess_Execute(kp);
 
 
-  if(poll)
-    {
+  if (poll) {
     pUserTimeout = &userTimeout;
     pUserTimeout = &userTimeout;
-    }
+  }
 
 
-  if(interruptDelay)
-    {
+  if (interruptDelay) {
     testProcess_sleep(interruptDelay);
     testProcess_sleep(interruptDelay);
     kwsysProcess_Interrupt(kp);
     kwsysProcess_Interrupt(kp);
-    }
+  }
 
 
-  if(!share && !disown)
-    {
+  if (!share && !disown) {
     int p;
     int p;
-    while((p = kwsysProcess_WaitForData(kp, &data, &length, pUserTimeout)))
-      {
-      if(output)
-        {
-        if(poll && p == kwsysProcess_Pipe_Timeout)
-          {
+    while ((p = kwsysProcess_WaitForData(kp, &data, &length, pUserTimeout))) {
+      if (output) {
+        if (poll && p == kwsysProcess_Pipe_Timeout) {
           fprintf(stdout, "WaitForData timeout reached.\n");
           fprintf(stdout, "WaitForData timeout reached.\n");
           fflush(stdout);
           fflush(stdout);
 
 
           /* Count the number of times we polled without getting data.
           /* Count the number of times we polled without getting data.
              If it is excessive then kill the child and fail.  */
              If it is excessive then kill the child and fail.  */
-          if(++poll >= MAXPOLL)
-            {
-            fprintf(stdout, "Poll count reached limit %d.\n",
-                    MAXPOLL);
+          if (++poll >= MAXPOLL) {
+            fprintf(stdout, "Poll count reached limit %d.\n", MAXPOLL);
             kwsysProcess_Kill(kp);
             kwsysProcess_Kill(kp);
-            }
           }
           }
-        else
-          {
-          fwrite(data, 1, (size_t) length, stdout);
+        } else {
+          fwrite(data, 1, (size_t)length, stdout);
           fflush(stdout);
           fflush(stdout);
-          }
         }
         }
-      if(poll)
-        {
+      }
+      if (poll) {
         /* Delay to avoid busy loop during polling.  */
         /* Delay to avoid busy loop during polling.  */
         testProcess_usleep(100000);
         testProcess_usleep(100000);
-        }
-      if(delay)
-        {
-        /* Purposely sleeping only on Win32 to let pipe fill up.  */
+      }
+      if (delay) {
+/* Purposely sleeping only on Win32 to let pipe fill up.  */
 #if defined(_WIN32)
 #if defined(_WIN32)
         testProcess_usleep(100000);
         testProcess_usleep(100000);
 #endif
 #endif
-        }
       }
       }
     }
     }
+  }
 
 
-  if(disown)
-    {
+  if (disown) {
     kwsysProcess_Disown(kp);
     kwsysProcess_Disown(kp);
-    }
-  else
-    {
+  } else {
     kwsysProcess_WaitForExit(kp, 0);
     kwsysProcess_WaitForExit(kp, 0);
-    }
+  }
 
 
-  switch (kwsysProcess_GetState(kp))
-    {
+  switch (kwsysProcess_GetState(kp)) {
     case kwsysProcess_State_Starting:
     case kwsysProcess_State_Starting:
-      printf("No process has been executed.\n"); break;
+      printf("No process has been executed.\n");
+      break;
     case kwsysProcess_State_Executing:
     case kwsysProcess_State_Executing:
-      printf("The process is still executing.\n"); break;
+      printf("The process is still executing.\n");
+      break;
     case kwsysProcess_State_Expired:
     case kwsysProcess_State_Expired:
-      printf("Child was killed when timeout expired.\n"); break;
+      printf("Child was killed when timeout expired.\n");
+      break;
     case kwsysProcess_State_Exited:
     case kwsysProcess_State_Exited:
-      printf("Child exited with value = %d\n",
-             kwsysProcess_GetExitValue(kp));
+      printf("Child exited with value = %d\n", kwsysProcess_GetExitValue(kp));
       result = ((exception != kwsysProcess_GetExitException(kp)) ||
       result = ((exception != kwsysProcess_GetExitException(kp)) ||
-                (value != kwsysProcess_GetExitValue(kp))); break;
+                (value != kwsysProcess_GetExitValue(kp)));
+      break;
     case kwsysProcess_State_Killed:
     case kwsysProcess_State_Killed:
-      printf("Child was killed by parent.\n"); break;
+      printf("Child was killed by parent.\n");
+      break;
     case kwsysProcess_State_Exception:
     case kwsysProcess_State_Exception:
       printf("Child terminated abnormally: %s\n",
       printf("Child terminated abnormally: %s\n",
              kwsysProcess_GetExceptionString(kp));
              kwsysProcess_GetExceptionString(kp));
       result = ((exception != kwsysProcess_GetExitException(kp)) ||
       result = ((exception != kwsysProcess_GetExitException(kp)) ||
-                (value != kwsysProcess_GetExitValue(kp))); break;
+                (value != kwsysProcess_GetExitValue(kp)));
+      break;
     case kwsysProcess_State_Disowned:
     case kwsysProcess_State_Disowned:
-      printf("Child was disowned.\n"); break;
+      printf("Child was disowned.\n");
+      break;
     case kwsysProcess_State_Error:
     case kwsysProcess_State_Error:
       printf("Error in administrating child process: [%s]\n",
       printf("Error in administrating child process: [%s]\n",
-             kwsysProcess_GetErrorString(kp)); break;
-    };
+             kwsysProcess_GetErrorString(kp));
+      break;
+  };
 
 
-  if(result)
-    {
-    if(exception != kwsysProcess_GetExitException(kp))
-      {
+  if (result) {
+    if (exception != kwsysProcess_GetExitException(kp)) {
       fprintf(stderr, "Mismatch in exit exception.  "
       fprintf(stderr, "Mismatch in exit exception.  "
-              "Should have been %d, was %d.\n",
+                      "Should have been %d, was %d.\n",
               exception, kwsysProcess_GetExitException(kp));
               exception, kwsysProcess_GetExitException(kp));
-      }
-    if(value != kwsysProcess_GetExitValue(kp))
-      {
+    }
+    if (value != kwsysProcess_GetExitValue(kp)) {
       fprintf(stderr, "Mismatch in exit value.  "
       fprintf(stderr, "Mismatch in exit value.  "
-              "Should have been %d, was %d.\n",
+                      "Should have been %d, was %d.\n",
               value, kwsysProcess_GetExitValue(kp));
               value, kwsysProcess_GetExitValue(kp));
-      }
     }
     }
+  }
 
 
-  if(kwsysProcess_GetState(kp) != state)
-    {
+  if (kwsysProcess_GetState(kp) != state) {
     fprintf(stderr, "Mismatch in state.  "
     fprintf(stderr, "Mismatch in state.  "
-            "Should have been %d, was %d.\n",
+                    "Should have been %d, was %d.\n",
             state, kwsysProcess_GetState(kp));
             state, kwsysProcess_GetState(kp));
     result = 1;
     result = 1;
-    }
+  }
 
 
   /* We should have polled more times than there were data if polling
   /* We should have polled more times than there were data if polling
      was enabled.  */
      was enabled.  */
-  if(poll && poll < MINPOLL)
-    {
-    fprintf(stderr, "Poll count is %d, which is less than %d.\n",
-            poll, MINPOLL);
+  if (poll && poll < MINPOLL) {
+    fprintf(stderr, "Poll count is %d, which is less than %d.\n", poll,
+            MINPOLL);
     result = 1;
     result = 1;
-    }
+  }
 
 
   return result;
   return result;
 }
 }
@@ -551,28 +526,23 @@ static int runChild2(kwsysProcess* kp,
  *                  BEFORE any reading/polling of pipes occurs and before any
  *                  BEFORE any reading/polling of pipes occurs and before any
  *                  detachment occurs.
  *                  detachment occurs.
  */
  */
-int runChild(const char* cmd[], int state, int exception, int value,
-             int share, int output, int delay, double timeout,
-             int poll, int repeat, int disown, int createNewGroup,
-             unsigned int interruptDelay)
+int runChild(const char* cmd[], int state, int exception, int value, int share,
+             int output, int delay, double timeout, int poll, int repeat,
+             int disown, int createNewGroup, unsigned int interruptDelay)
 {
 {
   int result = 1;
   int result = 1;
   kwsysProcess* kp = kwsysProcess_New();
   kwsysProcess* kp = kwsysProcess_New();
-  if(!kp)
-    {
+  if (!kp) {
     fprintf(stderr, "kwsysProcess_New returned NULL!\n");
     fprintf(stderr, "kwsysProcess_New returned NULL!\n");
     return 1;
     return 1;
-    }
-  while(repeat-- > 0)
-    {
-    result = runChild2(kp, cmd, state, exception, value, share,
-                       output, delay, timeout, poll, disown, createNewGroup,
-                       interruptDelay);
-    if(result)
-      {
+  }
+  while (repeat-- > 0) {
+    result = runChild2(kp, cmd, state, exception, value, share, output, delay,
+                       timeout, poll, disown, createNewGroup, interruptDelay);
+    if (result) {
       break;
       break;
-      }
     }
     }
+  }
   kwsysProcess_Delete(kp);
   kwsysProcess_Delete(kp);
   return result;
   return result;
 }
 }
@@ -585,8 +555,7 @@ int main(int argc, const char* argv[])
   int i;
   int i;
   char new_args[10][_MAX_PATH];
   char new_args[10][_MAX_PATH];
   LPWSTR* w_av = CommandLineToArgvW(GetCommandLineW(), &argc);
   LPWSTR* w_av = CommandLineToArgvW(GetCommandLineW(), &argc);
-  for(i=0; i<argc; i++)
-  {
+  for (i = 0; i < argc; i++) {
     kwsysEncoding_wcstombs(new_args[i], w_av[i], _MAX_PATH);
     kwsysEncoding_wcstombs(new_args[i], w_av[i], _MAX_PATH);
     argv[i] = new_args[i];
     argv[i] = new_args[i];
   }
   }
@@ -609,107 +578,96 @@ int main(int argc, const char* argv[])
     SetStdHandle(STD_ERROR_HANDLE, out);
     SetStdHandle(STD_ERROR_HANDLE, out);
     }
     }
 #endif
 #endif
-  if(argc == 2)
-    {
+  if (argc == 2) {
     n = atoi(argv[1]);
     n = atoi(argv[1]);
-    }
-  else if(argc == 3 && strcmp(argv[1], "run") == 0)
-    {
+  } else if (argc == 3 && strcmp(argv[1], "run") == 0) {
     n = atoi(argv[2]);
     n = atoi(argv[2]);
-    }
+  }
   /* Check arguments.  */
   /* Check arguments.  */
-  if(((n >= 1 && n <= 10) || n == 108 || n == 109 || n == 110) && argc == 3)
-    {
+  if (((n >= 1 && n <= 10) || n == 108 || n == 109 || n == 110) && argc == 3) {
     /* This is the child process for a requested test number.  */
     /* This is the child process for a requested test number.  */
-    switch (n)
-      {
-      case 1: return test1(argc, argv);
-      case 2: return test2(argc, argv);
-      case 3: return test3(argc, argv);
-      case 4: return test4(argc, argv);
-      case 5: return test5(argc, argv);
-      case 6: test6(argc, argv); return 0;
-      case 7: return test7(argc, argv);
-      case 8: return test8(argc, argv);
-      case 9: return test9(argc, argv);
-      case 10: return test10(argc, argv);
-      case 108: return test8_grandchild(argc, argv);
-      case 109: return test9_grandchild(argc, argv);
-      case 110: return test10_grandchild(argc, argv);
-      }
+    switch (n) {
+      case 1:
+        return test1(argc, argv);
+      case 2:
+        return test2(argc, argv);
+      case 3:
+        return test3(argc, argv);
+      case 4:
+        return test4(argc, argv);
+      case 5:
+        return test5(argc, argv);
+      case 6:
+        test6(argc, argv);
+        return 0;
+      case 7:
+        return test7(argc, argv);
+      case 8:
+        return test8(argc, argv);
+      case 9:
+        return test9(argc, argv);
+      case 10:
+        return test10(argc, argv);
+      case 108:
+        return test8_grandchild(argc, argv);
+      case 109:
+        return test9_grandchild(argc, argv);
+      case 110:
+        return test10_grandchild(argc, argv);
+    }
     fprintf(stderr, "Invalid test number %d.\n", n);
     fprintf(stderr, "Invalid test number %d.\n", n);
     return 1;
     return 1;
-    }
-  else if(n >= 1 && n <= 10)
-    {
+  } else if (n >= 1 && n <= 10) {
     /* This is the parent process for a requested test number.  */
     /* This is the parent process for a requested test number.  */
-    int states[10] =
-    {
-      kwsysProcess_State_Exited,
-      kwsysProcess_State_Exited,
-      kwsysProcess_State_Expired,
-      kwsysProcess_State_Exception,
-      kwsysProcess_State_Exited,
-      kwsysProcess_State_Expired,
-      kwsysProcess_State_Exited,
-      kwsysProcess_State_Exited,
-      kwsysProcess_State_Expired, /* Ctrl+C handler test */
+    int states[10] = {
+      kwsysProcess_State_Exited,   kwsysProcess_State_Exited,
+      kwsysProcess_State_Expired,  kwsysProcess_State_Exception,
+      kwsysProcess_State_Exited,   kwsysProcess_State_Expired,
+      kwsysProcess_State_Exited,   kwsysProcess_State_Exited,
+      kwsysProcess_State_Expired,  /* Ctrl+C handler test */
       kwsysProcess_State_Exception /* Process group test */
       kwsysProcess_State_Exception /* Process group test */
     };
     };
-    int exceptions[10] =
-    {
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_Fault,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_None,
-      kwsysProcess_Exception_Interrupt
+    int exceptions[10] = {
+      kwsysProcess_Exception_None, kwsysProcess_Exception_None,
+      kwsysProcess_Exception_None, kwsysProcess_Exception_Fault,
+      kwsysProcess_Exception_None, kwsysProcess_Exception_None,
+      kwsysProcess_Exception_None, kwsysProcess_Exception_None,
+      kwsysProcess_Exception_None, kwsysProcess_Exception_Interrupt
     };
     };
-    int values[10] = {0, 123, 1, 1, 0, 0, 0, 0, 1, 1};
-    int shares[10] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1};
-    int outputs[10] = {1, 1, 1, 1, 1, 0, 1, 1, 1, 1};
-    int delays[10] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0};
-    double timeouts[10] = {10, 10, 10, 30, 30, 10, -1, 10, 6, 4};
-    int polls[10] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0};
-    int repeat[10] = {257, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-    int createNewGroups[10] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1};
-    unsigned int interruptDelays[10] = {0, 0, 0, 0, 0, 0, 0, 0, 3, 2};
+    int values[10] = { 0, 123, 1, 1, 0, 0, 0, 0, 1, 1 };
+    int shares[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 };
+    int outputs[10] = { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 };
+    int delays[10] = { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 };
+    double timeouts[10] = { 10, 10, 10, 30, 30, 10, -1, 10, 6, 4 };
+    int polls[10] = { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 };
+    int repeat[10] = { 257, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+    int createNewGroups[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 };
+    unsigned int interruptDelays[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 3, 2 };
     int r;
     int r;
     const char* cmd[4];
     const char* cmd[4];
 #ifdef _WIN32
 #ifdef _WIN32
     char* argv0 = 0;
     char* argv0 = 0;
 #endif
 #endif
     char* test1IterationsStr = getenv("KWSYS_TEST_PROCESS_1_COUNT");
     char* test1IterationsStr = getenv("KWSYS_TEST_PROCESS_1_COUNT");
-    if(test1IterationsStr)
-      {
+    if (test1IterationsStr) {
       long int test1Iterations = strtol(test1IterationsStr, 0, 10);
       long int test1Iterations = strtol(test1IterationsStr, 0, 10);
-      if(test1Iterations > 10 && test1Iterations != LONG_MAX)
-        {
+      if (test1Iterations > 10 && test1Iterations != LONG_MAX) {
         repeat[0] = (int)test1Iterations;
         repeat[0] = (int)test1Iterations;
-        }
       }
       }
+    }
 #ifdef _WIN32
 #ifdef _WIN32
-    if(n == 0 && (argv0 = strdup(argv[0])))
-      {
+    if (n == 0 && (argv0 = strdup(argv[0]))) {
       /* Try converting to forward slashes to see if it works.  */
       /* Try converting to forward slashes to see if it works.  */
       char* c;
       char* c;
-      for(c=argv0; *c; ++c)
-        {
-        if(*c == '\\')
-          {
+      for (c = argv0; *c; ++c) {
+        if (*c == '\\') {
           *c = '/';
           *c = '/';
-          }
         }
         }
-      cmd[0] = argv0;
       }
       }
-    else
-      {
+      cmd[0] = argv0;
+    } else {
       cmd[0] = argv[0];
       cmd[0] = argv[0];
-      }
+    }
 #else
 #else
     cmd[0] = argv[0];
     cmd[0] = argv[0];
 #endif
 #endif
@@ -720,36 +678,34 @@ int main(int argc, const char* argv[])
     fprintf(stderr, "Output on stderr before test %d.\n", n);
     fprintf(stderr, "Output on stderr before test %d.\n", n);
     fflush(stdout);
     fflush(stdout);
     fflush(stderr);
     fflush(stderr);
-    r = runChild(cmd, states[n-1], exceptions[n-1], values[n-1], shares[n-1],
-                 outputs[n-1], delays[n-1], timeouts[n-1],
-                 polls[n-1], repeat[n-1], 0, createNewGroups[n-1],
-                 interruptDelays[n-1]);
+    r = runChild(cmd, states[n - 1], exceptions[n - 1], values[n - 1],
+                 shares[n - 1], outputs[n - 1], delays[n - 1], timeouts[n - 1],
+                 polls[n - 1], repeat[n - 1], 0, createNewGroups[n - 1],
+                 interruptDelays[n - 1]);
     fprintf(stdout, "Output on stdout after test %d.\n", n);
     fprintf(stdout, "Output on stdout after test %d.\n", n);
     fprintf(stderr, "Output on stderr after test %d.\n", n);
     fprintf(stderr, "Output on stderr after test %d.\n", n);
     fflush(stdout);
     fflush(stdout);
     fflush(stderr);
     fflush(stderr);
 #if defined(_WIN32)
 #if defined(_WIN32)
-    if(argv0) { free(argv0); }
+    if (argv0) {
+      free(argv0);
+    }
 #endif
 #endif
     return r;
     return r;
-    }
-  else if(argc > 2 && strcmp(argv[1], "0") == 0)
-    {
+  } else if (argc > 2 && strcmp(argv[1], "0") == 0) {
     /* This is the special debugging test to run a given command
     /* This is the special debugging test to run a given command
        line.  */
        line.  */
-    const char** cmd = argv+2;
+    const char** cmd = argv + 2;
     int state = kwsysProcess_State_Exited;
     int state = kwsysProcess_State_Exited;
     int exception = kwsysProcess_Exception_None;
     int exception = kwsysProcess_Exception_None;
     int value = 0;
     int value = 0;
     double timeout = 0;
     double timeout = 0;
-    int r = runChild(cmd, state, exception, value, 0, 1, 0, timeout,
-      0, 1, 0, 0, 0);
+    int r =
+      runChild(cmd, state, exception, value, 0, 1, 0, timeout, 0, 1, 0, 0, 0);
     return r;
     return r;
-    }
-  else
-    {
+  } else {
     /* Improper usage.  */
     /* Improper usage.  */
     fprintf(stdout, "Usage: %s <test number>\n", argv[0]);
     fprintf(stdout, "Usage: %s <test number>\n", argv[0]);
     return 1;
     return 1;
-    }
+  }
 }
 }

+ 9 - 18
testSharedForward.c.in

@@ -1,33 +1,24 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #if defined(CMAKE_INTDIR)
 #if defined(CMAKE_INTDIR)
-# define CONFIG_DIR_PRE CMAKE_INTDIR "/"
-# define CONFIG_DIR_POST "/" CMAKE_INTDIR
+#define CONFIG_DIR_PRE CMAKE_INTDIR "/"
+#define CONFIG_DIR_POST "/" CMAKE_INTDIR
 #else
 #else
-# define CONFIG_DIR_PRE ""
-# define CONFIG_DIR_POST ""
+#define CONFIG_DIR_PRE ""
+#define CONFIG_DIR_POST ""
 #endif
 #endif
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_DIR_BUILD "@EXEC_DIR@"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_DIR_BUILD "@EXEC_DIR@"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_PATH_BUILD "." CONFIG_DIR_POST
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_PATH_BUILD "." CONFIG_DIR_POST
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_PATH_INSTALL 0
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_PATH_INSTALL 0
-#define @KWSYS_NAMESPACE@_SHARED_FORWARD_EXE_BUILD \
+#define @KWSYS_NAMESPACE@_SHARED_FORWARD_EXE_BUILD                            \
   CONFIG_DIR_PRE "@KWSYS_NAMESPACE@TestProcess"
   CONFIG_DIR_PRE "@KWSYS_NAMESPACE@TestProcess"
-#define @KWSYS_NAMESPACE@_SHARED_FORWARD_EXE_INSTALL \
+#define @KWSYS_NAMESPACE@_SHARED_FORWARD_EXE_INSTALL                          \
   "@KWSYS_NAMESPACE@TestProcess"
   "@KWSYS_NAMESPACE@TestProcess"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_COMMAND "--command"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_COMMAND "--command"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_PRINT "--print"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_PRINT "--print"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_LDD "--ldd"
 #define @KWSYS_NAMESPACE@_SHARED_FORWARD_OPTION_LDD "--ldd"
 #if defined(CMAKE_INTDIR)
 #if defined(CMAKE_INTDIR)
-# define @KWSYS_NAMESPACE@_SHARED_FORWARD_CONFIG_NAME CMAKE_INTDIR
+#define @KWSYS_NAMESPACE@_SHARED_FORWARD_CONFIG_NAME CMAKE_INTDIR
 #endif
 #endif
 #include <@KWSYS_NAMESPACE@/SharedForward.h>
 #include <@KWSYS_NAMESPACE@/SharedForward.h>
 int main(int argc, char** argv)
 int main(int argc, char** argv)

+ 27 - 40
testSystemInformation.cxx

@@ -1,51 +1,41 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(SystemInformation.hxx)
 #include KWSYS_HEADER(SystemInformation.hxx)
 
 
 // Work-around CMake dependency scanning limitation.  This must
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 // duplicate the above list of headers.
 #if 0
 #if 0
-# include "SystemInformation.hxx.in"
+#include "SystemInformation.hxx.in"
 #endif
 #endif
 
 
 #include <iostream>
 #include <iostream>
 
 
 #if defined(KWSYS_USE_LONG_LONG)
 #if defined(KWSYS_USE_LONG_LONG)
-# if defined(KWSYS_IOS_HAS_OSTREAM_LONG_LONG)
-#  define iostreamLongLong(x) (x)
-# else
-#  define iostreamLongLong(x) ((long)x)
-# endif
+#if defined(KWSYS_IOS_HAS_OSTREAM_LONG_LONG)
+#define iostreamLongLong(x) (x)
+#else
+#define iostreamLongLong(x) ((long)x)
+#endif
 #elif defined(KWSYS_USE___INT64)
 #elif defined(KWSYS_USE___INT64)
-# if defined(KWSYS_IOS_HAS_OSTREAM___INT64)
-#  define iostreamLongLong(x) (x)
-# else
-#  define iostreamLongLong(x) ((long)x)
-# endif
+#if defined(KWSYS_IOS_HAS_OSTREAM___INT64)
+#define iostreamLongLong(x) (x)
+#else
+#define iostreamLongLong(x) ((long)x)
+#endif
 #else
 #else
-# error "No Long Long"
+#error "No Long Long"
 #endif
 #endif
 
 
-#define printMethod(info, m) std::cout << #m << ": " \
-<< info.m() << "\n"
+#define printMethod(info, m) std::cout << #m << ": " << info.m() << "\n"
 
 
-#define printMethod2(info, m, unit) std::cout << #m << ": " \
-<< info.m() << " " << unit << "\n"
+#define printMethod2(info, m, unit)                                           \
+  std::cout << #m << ": " << info.m() << " " << unit << "\n"
 
 
-#define printMethod3(info, m, unit) std::cout << #m << ": " \
-<< iostreamLongLong(info.m) << " " << unit << "\n"
+#define printMethod3(info, m, unit)                                           \
+  std::cout << #m << ": " << iostreamLongLong(info.m) << " " << unit << "\n"
 
 
-int testSystemInformation(int, char*[])
+int testSystemInformation(int, char* [])
 {
 {
   std::cout << "CTEST_FULL_OUTPUT\n"; // avoid truncation
   std::cout << "CTEST_FULL_OUTPUT\n"; // avoid truncation
 
 
@@ -84,25 +74,22 @@ int testSystemInformation(int, char*[])
   printMethod2(info, GetAvailablePhysicalMemory, "MB");
   printMethod2(info, GetAvailablePhysicalMemory, "MB");
   printMethod3(info, GetHostMemoryTotal(), "KiB");
   printMethod3(info, GetHostMemoryTotal(), "KiB");
   printMethod3(info, GetHostMemoryAvailable("KWSHL"), "KiB");
   printMethod3(info, GetHostMemoryAvailable("KWSHL"), "KiB");
-  printMethod3(info, GetProcMemoryAvailable("KWSHL","KWSPL"), "KiB");
+  printMethod3(info, GetProcMemoryAvailable("KWSHL", "KWSPL"), "KiB");
   printMethod3(info, GetHostMemoryUsed(), "KiB");
   printMethod3(info, GetHostMemoryUsed(), "KiB");
   printMethod3(info, GetProcMemoryUsed(), "KiB");
   printMethod3(info, GetProcMemoryUsed(), "KiB");
   printMethod(info, GetLoadAverage);
   printMethod(info, GetLoadAverage);
 
 
-  for (long int i = 0; i <= 31; i++)
-    {
-    if (info.DoesCPUSupportFeature(static_cast<long int>(1) << i))
-      {
+  for (long int i = 0; i <= 31; i++) {
+    if (info.DoesCPUSupportFeature(static_cast<long int>(1) << i)) {
       std::cout << "CPU feature " << i << "\n";
       std::cout << "CPU feature " << i << "\n";
-      }
     }
     }
+  }
 
 
   /* test stack trace
   /* test stack trace
   */
   */
-  std::cout
-    << "Program Stack:" << std::endl
-    << kwsys::SystemInformation::GetProgramStack(0,0) << std::endl
-    << std::endl;
+  std::cout << "Program Stack:" << std::endl
+            << kwsys::SystemInformation::GetProgramStack(0, 0) << std::endl
+            << std::endl;
 
 
   /* test segv handler
   /* test segv handler
   info.SetStackTraceOnError(1);
   info.SetStackTraceOnError(1);

文件差異過大導致無法顯示
+ 404 - 612
testSystemTools.cxx


+ 2 - 11
testSystemTools.h.in

@@ -1,14 +1,5 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #ifndef @KWSYS_NAMESPACE@_testSystemtools_h
 #ifndef @KWSYS_NAMESPACE@_testSystemtools_h
 #define @KWSYS_NAMESPACE@_testSystemtools_h
 #define @KWSYS_NAMESPACE@_testSystemtools_h
 
 

+ 5 - 14
testTerminal.c

@@ -1,21 +1,12 @@
-/*============================================================================
-  KWSys - Kitware System Library
-  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
+/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+   file Copyright.txt or https://cmake.org/licensing#kwsys for details.  */
 #include "kwsysPrivate.h"
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Terminal.h)
 #include KWSYS_HEADER(Terminal.h)
 
 
 /* Work-around CMake dependency scanning limitation.  This must
 /* Work-around CMake dependency scanning limitation.  This must
    duplicate the above list of headers.  */
    duplicate the above list of headers.  */
 #if 0
 #if 0
-# include "Terminal.h.in"
+#include "Terminal.h.in"
 #endif
 #endif
 
 
 int testTerminal(int argc, char* argv[])
 int testTerminal(int argc, char* argv[])
@@ -23,8 +14,8 @@ int testTerminal(int argc, char* argv[])
   (void)argc;
   (void)argc;
   (void)argv;
   (void)argv;
   kwsysTerminal_cfprintf(kwsysTerminal_Color_ForegroundYellow |
   kwsysTerminal_cfprintf(kwsysTerminal_Color_ForegroundYellow |
-                         kwsysTerminal_Color_BackgroundBlue |
-                         kwsysTerminal_Color_AssumeTTY,
+                           kwsysTerminal_Color_BackgroundBlue |
+                           kwsysTerminal_Color_AssumeTTY,
                          stdout, "Hello %s!", "World");
                          stdout, "Hello %s!", "World");
   fprintf(stdout, "\n");
   fprintf(stdout, "\n");
   return 0;
   return 0;

部分文件因文件數量過多而無法顯示