获取具有struct stat的tar标头中文件的权限

时间:2013-09-22 04:17:46

标签: c tar

我正在创建一个程序来管理tar文件。 我使用struct stat:

打印文件的权限
printf("%d\n", buff->st_mode); /* I get a number like 33152 */

但是我需要将权限放在struct header的模式[8]中:

typedef struct  s_head
{
    char        name[100];
    char        mode[8];
    char        uid[8];
    char        gid[8];
    char        size[12];
    char        mtime[12];
    char        chksum[8];
    char        linkflag;
    char        linkname[100];
    char        magic[8];
    char        uname[32];
    char        gname[32];
    char        devmajor[8];
    char        devminor[8];
}               t_head;

当我打印模式时,我应该得到像这样的东西000600(对于rw -------) 但我怎么能用正确的写作

转换char *中的st_mode

1 个答案:

答案 0 :(得分:0)

使用八进制。

OP的数量为int,值为33152.通过将其打印为八进制数,通常的“rwx”设置更明显:100600。

// printf("%d\n", buff->st_mode); // OP gets a number like 33152
printf("%o\n", buff->st_mode);    // 100600
snprintf(s_head.mode, sizeof(s_head.mode), "%06o", buff->st_mode); // "100600"