🛰️航天仿真算法库 SpaceAST 0.0.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,
79 eFile,
80};
81
86AST_UTIL_API EArchiveFormat aDetectArchiveFormat(StringView path);
87
91AST_UTIL_API bool aIsArchiveFile(StringView path);
92
93#ifndef SWIG
94
101void aResolveArchivePath(StringView source, StringView curdir,
102 std::string& outWorkDir, std::string& outRelativePath);
103
109errc_t aCopyFile(StringView from, StringView to, const char* logPrefix);
110
116AST_UTIL_API errc_t aCopyFileRange(FILE* src, FILE* dst, size_t size);
117
123errc_t aCopyDirectoryRecursive(const fs::path& srcDir, const fs::path& dstDir, const char* logPrefix);
124
128bool aIsCommandAvailable(const char* cmd);
129
133errc_t aRunCommand(const std::string& cmd);
134
138const char* aTarCompressFlag(EArchiveFormat fmt);
139
140#endif
141
142AST_NAMESPACE_END
void aTarCalculateChecksum(TarHeader &header)
计算 TAR 头部校验和(供 CompressorImplTar 使用)
定义 ArchiverUtils.cpp:54
EArchiveFormat
归档文件格式枚举
定义 ArchiverUtils.hpp:68
@ eTarXz
.tar.xz / .txz
@ eTarBz2
.tar.bz2 / .tbz2
@ eDirectory
目录(非归档文件)
@ eTarGz
.tar.gz / .tgz
size_t aTarParseOctal(const char *field, size_t len)
将八进制字符串解析为 size_t(供 ExtractorImplTar 使用)
定义 ArchiverUtils.cpp:71
@ eUnknown
未知插值方法
定义 STKEphemerisFileParser.cpp:43
bool aTarIsZeroBlock(const TarHeader &header)
检查头部块是否全为零(归档结束标记)
定义 ArchiverUtils.cpp:87
@ eFile
来自文件
定义 ArchiverUtils.hpp:34