gpt4 book ai didi

c++ - 如何获取 tar 中存档的文件(和其他属性)的创建时间?

转载 作者:可可西里 更新时间:2023-11-01 10:26:31 30 4
gpt4 key购买 nike

我正在使用 VS 2010 和 Win32 用 c++ 编写代码来简单地提取 TAR 文件。

我已经完全从头开始实现算法来进行提取。

我有一个像这样的 TAR 头结构:

/* tar Header Block, from POSIX 1003.1-1990.  */

/* POSIX header. */

struct posix_header
{ /* byte offset */
char name[100]; /* 0 */
char mode[8]; /* 100 */
char uid[8]; /* 108 */
char gid[8]; /* 116 */
char size[12]; /* 124 */
char mtime[12]; /* 136 */
char chksum[8]; /* 148 */
char typeflag; /* 156 */
char linkname[100]; /* 157 */
char magic[6]; /* 257 */
char version[2]; /* 263 */
char uname[32]; /* 265 */
char gname[32]; /* 297 */
char devmajor[8]; /* 329 */
char devminor[8]; /* 337 */
char prefix[155]; /* 345 */
/* 500 */
};

从结构中我可以使用 mtime[12] 保留文件的修改时间戳。然后我使用 Win32::SetFileTime() 函数更新提取文件的时间戳属性。

但问题在于访问创建文件时间和上次访问时间。

Can anyone help me to find out where this info is stored inside TAR header???

And also how will I be able to decode file permissions like Read-Only, Hidden, System.. for Windows???

最佳答案

TAR 文件格式是 Unix 的发明,因此它存储的文件信息并不总是能很好地映射到 Windows 约定。

创建和访问时间未以标准 TAR 格式存储,因此您需要将它们保留为默认值,或设置为与修改时间相同的值。但是,您实际上可能有一个 ustar format文件,这确实增加了将此类信息存储在扩展文件条目中的可能性。参见 here了解更多详情。

Unix 权限以an octal number 形式存储在mode 字段中.没有直接等效于 Windows 文件属性的那些,因此如果它们不包含“w”权限,您唯一可以做的就是设置只读属性。

关于c++ - 如何获取 tar 中存档的文件(和其他属性)的创建时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551421/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com