2013-09-22 1 views
2

Я создаю программу для управления файлом tar. распечатать разрешение файла с STRUCT стата:получить разрешение файла в заголовке tar с struct stat

printf("%d\n", buff->st_mode); /* I get a number like 33152 */ 

, но мне нужно поставить разрешение в моем режиме [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 -------) , но как я мог преобразовать свой st_mode в char * с правильным письмом

ответ

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"