[Cmake-commits] CMake branch, next, updated. v3.0.0-3773-g294377f

Clinton Stimpson clinton at elemtech.com
Mon Jun 16 22:10:03 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  294377f70ba9dc12714dda998f32830ab04cd810 (commit)
       via  46265beb251639a86a2bd6062c78d980c66f8e1e (commit)
      from  6d94c89da1f56e08b8439f2b4377c153d8833b36 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=294377f70ba9dc12714dda998f32830ab04cd810
commit 294377f70ba9dc12714dda998f32830ab04cd810
Merge: 6d94c89 46265be
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Mon Jun 16 22:10:02 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Jun 16 22:10:02 2014 -0400

    Merge topic 'libarchive-encoding' into next
    
    46265beb Encoding: Fix potential encoding issues with libarchive on Windows.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=46265beb251639a86a2bd6062c78d980c66f8e1e
commit 46265beb251639a86a2bd6062c78d980c66f8e1e
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Thu Jun 12 06:46:40 2014 -0600
Commit:     Clinton Stimpson <clinton at elemtech.com>
CommitDate: Mon Jun 16 13:58:42 2014 -0600

    Encoding: Fix potential encoding issues with libarchive on Windows.
    
    Because the 8bit string encoding in libarchive can be different than
    the 8bit string encoding in CMake, change to call the wide version
    of libarchive functions.  They are different if CMake is configured
    to use UTF-8 as the internal encoding.

diff --git a/Source/cmArchiveWrite.cxx b/Source/cmArchiveWrite.cxx
index 58f7573..c5fc34f 100644
--- a/Source/cmArchiveWrite.cxx
+++ b/Source/cmArchiveWrite.cxx
@@ -237,8 +237,8 @@ bool cmArchiveWrite::AddFile(const char* file,
     std::cout << dest << "\n";
     }
   Entry e;
-  archive_entry_copy_sourcepath(e, file);
-  archive_entry_set_pathname(e, dest.c_str());
+  archive_entry_copy_sourcepath_w(e, cmsys::Encoding::ToWide(file).c_str());
+  archive_entry_copy_pathname_w(e, cmsys::Encoding::ToWide(file).c_str());
   if(archive_read_disk_entry_from_file(this->Disk, e, -1, 0) != ARCHIVE_OK)
     {
     this->Error = "archive_read_disk_entry_from_file: ";
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 2e417cb..65fdd2c 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -1581,7 +1581,8 @@ namespace{
     }
   strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
   fprintf(out, " %s ", tmp);
-  fprintf(out, "%s", archive_entry_pathname(entry));
+  fprintf(out, "%s",
+    cmsys::Encoding::ToNarrow(archive_entry_pathname_w(entry)).c_str());
 
   /* Extra information for links. */
   if (archive_entry_hardlink(entry)) /* Hard link */
@@ -1636,12 +1637,13 @@ long copy_data(struct archive *ar, struct archive *aw)
 bool extract_tar(const char* outFileName, bool verbose,
                  bool extract)
 {
+  std::wstring wOutFileName = cmsys::Encoding::ToWide(outFileName);
   struct archive* a = archive_read_new();
   struct archive *ext = archive_write_disk_new();
   archive_read_support_compression_all(a);
   archive_read_support_format_all(a);
   struct archive_entry *entry;
-  int r = archive_read_open_file(a, outFileName, 10240);
+  int r = archive_read_open_filename_w(a, wOutFileName.c_str(), 10240);
   if(r)
     {
     cmSystemTools::Error("Problem with archive_read_open_file(): ",
@@ -1666,7 +1668,8 @@ bool extract_tar(const char* outFileName, bool verbose,
       if(extract)
         {
         cmSystemTools::Stdout("x ");
-        cmSystemTools::Stdout(archive_entry_pathname(entry));
+        cmSystemTools::Stdout(
+          cmsys::Encoding::ToNarrow(archive_entry_pathname_w(entry)).c_str());
         }
       else
         {
@@ -1676,7 +1679,8 @@ bool extract_tar(const char* outFileName, bool verbose,
       }
     else if(!extract)
       {
-      cmSystemTools::Stdout(archive_entry_pathname(entry));
+      cmSystemTools::Stdout(
+        cmsys::Encoding::ToNarrow(archive_entry_pathname_w(entry)).c_str());
       cmSystemTools::Stdout("\n");
       }
     if(extract)
@@ -1706,8 +1710,9 @@ bool extract_tar(const char* outFileName, bool verbose,
       else if(const char* linktext = archive_entry_symlink(entry))
         {
         std::cerr << "cmake -E tar: warning: skipping symbolic link \""
-                  << archive_entry_pathname(entry) << "\" -> \""
-                  << linktext << "\"." << std::endl;
+                 << cmsys::Encoding::ToNarrow(archive_entry_pathname_w(entry))
+                 << "\" -> \""
+                 << linktext << "\"." << std::endl;
         }
 #endif
       else
@@ -1715,7 +1720,7 @@ bool extract_tar(const char* outFileName, bool verbose,
         cmSystemTools::Error("Problem with archive_write_header(): ",
                              archive_error_string(ext));
         cmSystemTools::Error("Current file: ",
-                             archive_entry_pathname(entry));
+          cmsys::Encoding::ToNarrow(archive_entry_pathname_w(entry)).c_str());
         break;
         }
       }

-----------------------------------------------------------------------

Summary of changes:
 Source/cmArchiveWrite.cxx |    4 ++--
 Source/cmSystemTools.cxx  |   19 ++++++++++++-------
 2 files changed, 14 insertions(+), 9 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list