🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
ArchiverUtils.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/FileSystem.hpp"
25
26#include <cstdio>
27#include <cstddef>
28
29AST_NAMESPACE_BEGIN
30
34{
35 char name[100];
36 char mode[8];
37 char uid[8];
38 char gid[8];
39 char size[12];
40 char mtime[12];
41 char chksum[8];
42 char typeflag;
43 char linkname[100];
44 char magic[6];
45 char version[2];
46 char uname[32];
47 char gname[32];
48 char devmajor[8];
49 char devminor[8];
50 char prefix[155];
51 char padding[12]; // 填充到 512 字节
52};
53
54// 确保结构体大小正确
55static_assert(sizeof(TarHeader) == 512, "TarHeader must be exactly 512 bytes");
56
58AST_UTIL_API void aTarCalculateChecksum(TarHeader& header);
59
61AST_UTIL_API size_t aTarParseOctal(const char* field, size_t len);
62
64AST_UTIL_API bool aTarIsZeroBlock(const TarHeader& header);
65
68{
69 eUnknown,
70 eTar,
71 eTarGz,
72 eTarBz2,
73 eTarXz,
74 eZip,
75 e7z,
76 eRar,
77 eGz,
78};
79
84AST_UTIL_API EArchiveFormat aDetectArchiveFormat(StringView path);
85
89AST_UTIL_API EArchiveFormat aDetectArchiveFormatByMagic(StringView path);
90
91
95AST_UTIL_API bool aIsArchiveFile(StringView path);
96
97#ifndef SWIG
98
105void aResolveArchivePath(StringView source, StringView curdir,
106 std::string& outWorkDir, std::string& outRelativePath);
107
113errc_t aCopyFile(StringView from, StringView to, const char* logPrefix);
114
120AST_UTIL_API errc_t aCopyFileRange(FILE* src, FILE* dst, size_t size);
121
127errc_t aCopyDirectoryRecursive(const fs::path& srcDir, const fs::path& dstDir, const char* logPrefix);
128
132bool aIsCommandAvailable(const char* cmd);
133
137errc_t aRunCommand(const std::string& cmd);
138
142const char* aTarCompressFlag(EArchiveFormat fmt);
143
144#endif
145
146AST_NAMESPACE_END
void aTarCalculateChecksum(TarHeader &header)
计算 TAR 头部校验和(供 CompressorImplTar 使用)
定义 ArchiverUtils.cpp:55
EArchiveFormat
归档文件格式枚举
定义 ArchiverUtils.hpp:68
@ eTarXz
.tar.xz / .txz
@ eTarBz2
.tar.bz2 / .tbz2
@ eTarGz
.tar.gz / .tgz
size_t aTarParseOctal(const char *field, size_t len)
将八进制字符串解析为 size_t(供 ExtractorImplTar 使用)
定义 ArchiverUtils.cpp:72
@ eUnknown
未知插值方法
定义 STKEphemerisFileParser.cpp:43
bool aTarIsZeroBlock(const TarHeader &header)
检查头部块是否全为零(归档结束标记)
定义 ArchiverUtils.cpp:88
定义 ArchiverUtils.hpp:34