浏览代码

KWSys 2019-11-13 (e67ed8ef)

Code extracted from:

    https://gitlab.kitware.com/utils/kwsys.git

at commit e67ed8efaf193036a92b648eec2ea71fabc0c05a (master).

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

Brad King (2):
      b019deea RegularExpression: Suppress VS 2013 warning C4351
      a5248df0 CTestCustom: Suppress PGI Community Edition compiler license warnings

Paul Smith (1):
      dfd0521e Terminal: Support GNU make's TTY notification environment variable

Todd Martin (2):
      0492cad3 SystemTools: Remove redundant ToWindowsExtendedPath calls
      680ab6d2 FStream: Expose is_open publicly
KWSys Upstream 6 年之前
父节点
当前提交
78ce959a40
共有 5 个文件被更改,包括 33 次插入18 次删除
  1. 4 0
      CTestCustom.cmake.in
  2. 9 5
      FStream.hxx.in
  3. 11 0
      RegularExpression.hxx.in
  4. 1 13
      SystemTools.cxx
  5. 8 0
      Terminal.c

+ 4 - 0
CTestCustom.cmake.in

@@ -12,3 +12,7 @@
 list(APPEND CTEST_CUSTOM_MEMCHECK_IGNORE
 list(APPEND CTEST_CUSTOM_MEMCHECK_IGNORE
   kwsys.testProcess-10
   kwsys.testProcess-10
   )
   )
+
+list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION
+  "LICENSE WARNING"
+  )

+ 9 - 5
FStream.hxx.in

@@ -87,7 +87,7 @@ public:
 
 
   bool _open(char const* file_name, std::ios_base::openmode mode)
   bool _open(char const* file_name, std::ios_base::openmode mode)
   {
   {
-    if (is_open() || file_) {
+    if (_is_open() || file_) {
       return false;
       return false;
     }
     }
 #  if defined(_MSC_VER)
 #  if defined(_MSC_VER)
@@ -108,7 +108,7 @@ public:
     return success;
     return success;
   }
   }
 
 
-  bool is_open()
+  bool _is_open()
   {
   {
     if (!buf_) {
     if (!buf_) {
       return false;
       return false;
@@ -116,7 +116,7 @@ public:
     return buf_->is_open();
     return buf_->is_open();
   }
   }
 
 
-  bool is_open() const
+  bool _is_open() const
   {
   {
     if (!buf_) {
     if (!buf_) {
       return false;
       return false;
@@ -198,9 +198,11 @@ public:
     this->_set_state(this->_open(file_name, mode), this, this);
     this->_set_state(this->_open(file_name, mode), this, this);
   }
   }
 
 
+  bool is_open() { return this->_is_open(); }
+
   void close() { this->_set_state(this->_close(), this, this); }
   void close() { this->_set_state(this->_close(), this, this); }
 
 
-  using basic_efilebuf<CharType, Traits>::is_open;
+  using basic_efilebuf<CharType, Traits>::_is_open;
 
 
   internal_buffer_type* rdbuf() const { return this->buf_; }
   internal_buffer_type* rdbuf() const { return this->buf_; }
 
 
@@ -212,7 +214,7 @@ class basic_ofstream
   : public std::basic_ostream<CharType, Traits>
   : public std::basic_ostream<CharType, Traits>
   , public basic_efilebuf<CharType, Traits>
   , public basic_efilebuf<CharType, Traits>
 {
 {
-  using basic_efilebuf<CharType, Traits>::is_open;
+  using basic_efilebuf<CharType, Traits>::_is_open;
 
 
 public:
 public:
   typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type
   typedef typename basic_efilebuf<CharType, Traits>::internal_buffer_type
@@ -242,6 +244,8 @@ public:
 
 
   void close() { this->_set_state(this->_close(), this, this); }
   void close() { this->_set_state(this->_close(), this, this); }
 
 
+  bool is_open() { return this->_is_open(); }
+
   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(); }

+ 11 - 0
RegularExpression.hxx.in

@@ -66,6 +66,13 @@ private:
   const char* searchstring;
   const char* searchstring;
 };
 };
 
 
+#ifdef _MSC_VER
+#  pragma warning(push)
+#  if _MSC_VER < 1900
+#    pragma warning(disable : 4351) /* new behavior */
+#  endif
+#endif
+
 /**
 /**
  * \brief Creates an invalid match object
  * \brief Creates an invalid match object
  */
  */
@@ -76,6 +83,10 @@ inline RegularExpressionMatch::RegularExpressionMatch()
 {
 {
 }
 }
 
 
+#ifdef _MSC_VER
+#  pragma warning(pop)
+#endif
+
 /**
 /**
  * \brief Returns true if the match pointers are valid
  * \brief Returns true if the match pointers are valid
  */
  */

+ 1 - 13
SystemTools.cxx

@@ -2326,14 +2326,8 @@ bool SystemTools::TextFilesDiffer(const std::string& path1,
 static bool CopyFileContentBlockwise(const std::string& source,
 static bool CopyFileContentBlockwise(const std::string& source,
                                      const std::string& destination)
                                      const std::string& destination)
 {
 {
-// Open files
-#if defined(_WIN32)
-  kwsys::ifstream fin(
-    Encoding::ToNarrow(Encoding::ToWindowsExtendedPath(source)).c_str(),
-    std::ios::in | std::ios::binary);
-#else
+  // Open files
   kwsys::ifstream fin(source.c_str(), std::ios::in | std::ios::binary);
   kwsys::ifstream fin(source.c_str(), std::ios::in | std::ios::binary);
-#endif
   if (!fin) {
   if (!fin) {
     return false;
     return false;
   }
   }
@@ -2344,14 +2338,8 @@ static bool CopyFileContentBlockwise(const std::string& source,
   // that do not allow file removal can be modified.
   // that do not allow file removal can be modified.
   SystemTools::RemoveFile(destination);
   SystemTools::RemoveFile(destination);
 
 
-#if defined(_WIN32)
-  kwsys::ofstream fout(
-    Encoding::ToNarrow(Encoding::ToWindowsExtendedPath(destination)).c_str(),
-    std::ios::out | std::ios::trunc | std::ios::binary);
-#else
   kwsys::ofstream fout(destination.c_str(),
   kwsys::ofstream fout(destination.c_str(),
                        std::ios::out | std::ios::trunc | std::ios::binary);
                        std::ios::out | std::ios::trunc | std::ios::binary);
-#endif
   if (!fout) {
   if (!fout) {
     return false;
     return false;
   }
   }

+ 8 - 0
Terminal.c

@@ -172,6 +172,14 @@ static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
     }
     }
   }
   }
 
 
+  /* GNU make 4.1+ may tell us that its output is destined for a TTY. */
+  {
+    const char* termout = getenv("MAKE_TERMOUT");
+    if (termout && *termout != '\0') {
+      return 1;
+    }
+  }
+
   /* If running inside emacs the terminal is not VT100.  Some emacs
   /* If running inside emacs the terminal is not VT100.  Some emacs
      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.  */