我正在使用 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() 函数来更新提取文件的时间戳属性。
但问题在于访问创建的文件时间和上次访问时间。
谁能帮我找出这些信息存储在 TAR 标头中的位置???
还有我将如何解码文件权限,如只读、隐藏、系统.. for Windows?