-/*
- * do the permissions printing, passed the mode
- */
-printperms(mode)
- mode_t mode;
-{
- /* print type */
- switch (mode & S_IFMT) {
- case S_IFDIR: /* directory */
- (void)putchar('d');
- break;
- case S_IFCHR: /* character special */
- (void)putchar('c');
- break;
- case S_IFBLK: /* block special */
- (void)putchar('b');
- break;
- case S_IFREG: /* regular */
- (void)putchar('-');
- break;
- case S_IFLNK: /* symbolic link */
- (void)putchar('l');
- break;
- case S_IFSOCK: /* socket */
- (void)putchar('s');
- break;
-#ifdef S_IFIFO
- case S_IFIFO: /* fifo */
- (void)putchar('p');
- break;
-#endif
- default: /* unknown */
- (void)putchar('?');
- break;
- }
- /* usr */
- if (mode & S_IRUSR)
- (void)putchar('r');
- else
- (void)putchar('-');
- if (mode & S_IWUSR)
- (void)putchar('w');
- else
- (void)putchar('-');
- switch (mode & (S_IXUSR | S_ISUID)) {
- case 0:
- (void)putchar('-');
- break;
- case S_IXUSR:
- (void)putchar('x');
- break;
- case S_ISUID:
- (void)putchar('S');
- break;
- case S_IXUSR | S_ISUID:
- (void)putchar('s');
- break;
- }
- /* group */
- if (mode & S_IRGRP)
- (void)putchar('r');
- else
- (void)putchar('-');
- if (mode & S_IWGRP)
- (void)putchar('w');
- else
- (void)putchar('-');
- switch (mode & (S_IXGRP | S_ISGID)) {
- case 0:
- (void)putchar('-');
- break;
- case S_IXGRP:
- (void)putchar('x');
- break;
- case S_ISGID:
- (void)putchar('S');
- break;
- case S_IXGRP | S_ISGID:
- (void)putchar('s');
- break;
- }
- /* other */
- if (mode & S_IROTH)
- (void)putchar('r');
- else
- (void)putchar('-');
- if (mode & S_IWOTH)
- (void)putchar('w');
- else
- (void)putchar('-');
- switch (mode & (S_IXOTH | S_ISVTX)) {
- case 0:
- (void)putchar('-');
- break;
- case S_IXOTH:
- (void)putchar('x');
- break;
- case S_ISVTX:
- (void)putchar('T');
- break;
- case S_IXOTH | S_ISVTX:
- (void)putchar('t');
- break;
- }
- (void)putchar(' ');
-}
-