| 2360 | } |
| 2361 | |
| 2362 | bool 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, |
nothing calls this directly
no test coverage detected