MCPcopy Create free account
hub / github.com/Kitware/CMake / CreateTar

Method CreateTar

Source/cmSystemTools.cxx:2362–2446  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2360}
2361
2362bool cmSystemTools::CreateTar(std::string const& arFileName,
2363 std::vector<std::string> const& files,
2364 std::string const& workingDirectory,
2365 cmTarCompression compressType, bool verbose,
2366 std::string const& mtime,
2367 std::string const& format, int compressionLevel,
2368 int numThreads)
2369{
2370#if !defined(CMAKE_BOOTSTRAP)
2371 cmWorkingDirectory workdir(cmSystemTools::GetLogicalWorkingDirectory());
2372 if (!workingDirectory.empty()) {
2373 workdir.SetDirectory(workingDirectory);
2374 }
2375
2376 std::string const cwd = cmSystemTools::GetLogicalWorkingDirectory();
2377 cmsys::ofstream fout(arFileName.c_str(), std::ios::out | std::ios::binary);
2378 if (!fout) {
2379 std::string e = cmStrCat("Cannot open output file \"", arFileName,
2380 "\": ", cmSystemTools::GetLastSystemError());
2381 cmSystemTools::Error(e);
2382 return false;
2383 }
2384 cmArchiveWrite::Compress compress = cmArchiveWrite::CompressNone;
2385 switch (compressType) {
2386 case TarCompressGZip:
2387 compress = cmArchiveWrite::CompressGZip;
2388 break;
2389 case TarCompressBZip2:
2390 compress = cmArchiveWrite::CompressBZip2;
2391 break;
2392 case TarCompressXZ:
2393 compress = cmArchiveWrite::CompressXZ;
2394 break;
2395 case TarCompressZstd:
2396 compress = cmArchiveWrite::CompressZstd;
2397 break;
2398 case TarCompressLZMA:
2399 compress = cmArchiveWrite::CompressLZMA;
2400 break;
2401 case TarCompressPPMd:
2402 compress = cmArchiveWrite::CompressPPMd;
2403 break;
2404 case TarCompressAuto:
2405 // Kept for backwards compatibility with pre-4.3 versions of CMake
2406 if (format == "zip") {
2407 compress = cmArchiveWrite::CompressGZip;
2408 } else if (format == "7zip") {
2409 compress = cmArchiveWrite::CompressLZMA;
2410 } else {
2411 compress = cmArchiveWrite::CompressNone;
2412 }
2413 break;
2414 case TarCompressNone:
2415 compress = cmArchiveWrite::CompressNone;
2416 break;
2417 }
2418
2419 cmArchiveWrite a(fout, compress, format.empty() ? "paxr" : format,

Callers

nothing calls this directly

Calls 10

SetDirectoryMethod · 0.80
c_strMethod · 0.80
SetMTimeMethod · 0.80
cmStrCatFunction · 0.70
ErrorClass · 0.70
emptyMethod · 0.45
OpenMethod · 0.45
GetErrorMethod · 0.45
SetVerboseMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected