1、思维导图
2、
char* get_filePermssion(mode_t m, char ptr[10]) // = buf.st_mode
{
char per[] = "rwx";
//static char retPer[10] = ""; //由于后面需要将首地址返回出去,所以需要延长生命周期
for(int i=0; i<9; i++)
{
if((m & (0400>>i)) == 0)
{
// putchar('-');
ptr[i] = '-';
continue;
}
//能运行到当前位置,则代表结果不为0,则需要打印r w x
// putchar(per[i%3]);
ptr[i] = per[i%3];
#if 0
switch(i%3)
{
case 0:
case 3:
case 6:
putchar('r');
break;
case 1:
case 4:
case 7:
putchar('w');
break;
case 2:
case 5:
case 8:
putchar('x');
break;
}
#endif
}
return ptr;
}
char get_fileType(mode_t m) // mode_t m = buf.st_mode
{
char c = 0;
switch(m & S_IFMT)
{
case S_IFSOCK: c = 's'; break;
case S_IFLNK: c = 'l'; break;
case S_IFREG: c = '-'; break;
case S_IFDIR: c = 'd'; break;
}
return c;
}