permstring.c

ソースコードを見る。


関数

void permstring (char *perms, mode_t mode)
 Produce a string representation of Unix mode bits like that used by ls(1).

関数

void permstring ( char *  perms,
mode_t  mode 
)

Produce a string representation of Unix mode bits like that used by ls(1).

引数:
buf buffer of at least 11 characters

permstring.c29 行で定義されています。

参照元 list_file()list_file_entry()log_formatted().

00030 {
00031         static const char *perm_map = "rwxrwxrwx";
00032         int i;
00033 
00034         strcpy(perms, "----------");
00035         
00036         for (i=0;i<9;i++) {
00037                 if (mode & (1<<i)) perms[9-i] = perm_map[8-i];
00038         }
00039 
00040         /* Handle setuid/sticky bits.  You might think the indices are
00041          * off by one, but remember there's a type char at the
00042          * start.  */
00043         if (mode & S_ISUID)
00044                 perms[3] = (mode & S_IXUSR) ? 's' : 'S';
00045 
00046         if (mode & S_ISGID)
00047                 perms[6] = (mode & S_IXGRP) ? 's' : 'S';
00048         
00049 #ifdef S_ISVTX
00050         if (mode & S_ISVTX)
00051                 perms[9] = (mode & S_IXOTH) ? 't' : 'T';
00052 #endif
00053                 
00054         if (S_ISLNK(mode)) perms[0] = 'l';
00055         if (S_ISDIR(mode)) perms[0] = 'd';
00056         if (S_ISBLK(mode)) perms[0] = 'b';
00057         if (S_ISCHR(mode)) perms[0] = 'c';
00058         if (S_ISSOCK(mode)) perms[0] = 's';
00059         if (S_ISFIFO(mode)) perms[0] = 'p';
00060 }


rsyncに対してSat Dec 5 19:45:45 2009に生成されました。  doxygen 1.4.7