Browse Source

Merge functions

master
Arun Prakash Jana 5 years ago
parent
commit
afb7efc860
1 changed files with 12 additions and 20 deletions
  1. +12
    -20
      src/nnn.c

+ 12
- 20
src/nnn.c View File

@@ -2783,47 +2783,39 @@ static char *coolsize(off_t size)
return size_buf; return size_buf;
} }


static char get_fileind(mode_t mode)
/* Convert a mode field into "ls -l" type perms field. */
static char *get_lsperms(mode_t mode)
{ {
char c = '\0';
static const char * const rwx[] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
static char bits[11] = {'\0'};


switch (mode & S_IFMT) { switch (mode & S_IFMT) {
case S_IFREG: case S_IFREG:
c = '-';
bits[0] = '-';
break; break;
case S_IFDIR: case S_IFDIR:
c = 'd';
bits[0] = 'd';
break; break;
case S_IFLNK: case S_IFLNK:
c = 'l';
bits[0] = 'l';
break; break;
case S_IFSOCK: case S_IFSOCK:
c = 's';
bits[0] = 's';
break; break;
case S_IFIFO: case S_IFIFO:
c = 'p';
bits[0] = 'p';
break; break;
case S_IFBLK: case S_IFBLK:
c = 'b';
bits[0] = 'b';
break; break;
case S_IFCHR: case S_IFCHR:
c = 'c';
bits[0] = 'c';
break; break;
default: default:
c = '?';
bits[0] = '?';
break; break;
} }


return c;
}

/* Convert a mode field into "ls -l" type perms field. */
static char *get_lsperms(mode_t mode)
{
static const char * const rwx[] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
static char bits[11] = {'\0'};

bits[0] = get_fileind(mode);
xstrlcpy(&bits[1], rwx[(mode >> 6) & 7], 4); xstrlcpy(&bits[1], rwx[(mode >> 6) & 7], 4);
xstrlcpy(&bits[4], rwx[(mode >> 3) & 7], 4); xstrlcpy(&bits[4], rwx[(mode >> 3) & 7], 4);
xstrlcpy(&bits[7], rwx[(mode & 7)], 4); xstrlcpy(&bits[7], rwx[(mode & 7)], 4);


Loading…
Cancel
Save