summaryrefslogtreecommitdiffstats
path: root/Source/cmSystemTools.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2009-11-05 20:00:15 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2009-11-05 20:00:15 (GMT)
commitdd09d880656c71421acfd73776eac92c3f3ef77a (patch)
tree3465702ff785e584151c8f760d64b4aabe65a2a2 /Source/cmSystemTools.cxx
parenta01badcc7a8d4813d2eb84923c4e03447745657e (diff)
downloadCMake-dd09d880656c71421acfd73776eac92c3f3ef77a.zip
CMake-dd09d880656c71421acfd73776eac92c3f3ef77a.tar.gz
CMake-dd09d880656c71421acfd73776eac92c3f3ef77a.tar.bz2
Add JOM support and clean up some of the tar -E stuff
Diffstat (limited to 'Source/cmSystemTools.cxx')
-rw-r--r--Source/cmSystemTools.cxx25
1 files changed, 15 insertions, 10 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index df8bfbf..fe95b60 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -1704,7 +1704,7 @@ bool cmSystemTools::IsPathToFramework(const char* path)
bool cmSystemTools::CreateTar(const char* outFileName,
const std::vector<cmStdString>& files,
- bool gzip, bool verbose)
+ bool gzip, bool bzip2, bool verbose)
{
#if defined(CMAKE_BUILD_WITH_CMAKE)
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
@@ -1755,6 +1755,14 @@ bool cmSystemTools::CreateTar(const char* outFileName,
cmSystemTools::Error("Unable to use gzip in libarchive");
}
}
+ if(bzip2)
+ {
+ res = archive_write_set_compression_bzip2(a);
+ if(res != ARCHIVE_OK)
+ {
+ cmSystemTools::Error("Unable to use bzip2 in libarchive");
+ }
+ }
res = archive_write_set_format_ustar(a);
if(res != ARCHIVE_OK)
{
@@ -1822,7 +1830,7 @@ namespace{
#define BSDTAR_FILESIZE_PRINTF "%lu"
#define BSDTAR_FILESIZE_TYPE unsigned long
void
-list_item_verbose(FILE *out, struct archive_entry *entry)
+ list_item_verbose(FILE *out, struct archive_entry *entry)
{
char tmp[100];
size_t w;
@@ -1862,7 +1870,6 @@ list_item_verbose(FILE *out, struct archive_entry *entry)
u_width = w;
}
fprintf(out, "%-*s ", (int)u_width, p);
-
/* Use gname if it's present, else gid. */
p = archive_entry_gname(entry);
if (p != NULL && p[0] != '\0')
@@ -1905,7 +1912,7 @@ list_item_verbose(FILE *out, struct archive_entry *entry)
gs_width = w+strlen(tmp)+1;
}
fprintf(out, "%*s", (int)(gs_width - w), tmp);
-
+
/* Format the time using 'ls -l' conventions. */
tim = archive_entry_mtime(entry);
#define HALF_YEAR (time_t)365 * 86400 / 2
@@ -1926,7 +1933,7 @@ list_item_verbose(FILE *out, struct archive_entry *entry)
strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
fprintf(out, " %s ", tmp);
fprintf(out, "%s", archive_entry_pathname(entry));
-
+
/* Extra information for links. */
if (archive_entry_hardlink(entry)) /* Hard link */
{
@@ -1967,7 +1974,8 @@ int copy_data(struct archive *ar, struct archive *aw)
}
}
-bool extract_tar(const char* outFileName, bool verbose, bool extract)
+bool extract_tar(const char* outFileName, bool verbose,
+ bool extract)
{
struct archive* a = archive_read_new();
struct archive *ext = archive_write_disk_new();
@@ -2038,10 +2046,8 @@ bool extract_tar(const char* outFileName, bool verbose, bool extract)
#endif
bool cmSystemTools::ExtractTar(const char* outFileName,
- const std::vector<cmStdString>& files,
bool , bool verbose)
{
- (void)files;
#if defined(CMAKE_BUILD_WITH_CMAKE)
return extract_tar(outFileName, verbose, true);
#else
@@ -2052,11 +2058,10 @@ bool cmSystemTools::ExtractTar(const char* outFileName,
}
bool cmSystemTools::ListTar(const char* outFileName,
- std::vector<cmStdString>& files, bool ,
+ bool ,
bool verbose)
{
#if defined(CMAKE_BUILD_WITH_CMAKE)
- (void)files;
return extract_tar(outFileName, verbose, false);
#else
(void)outFileName;