case COL_MNT_ID:
xasprintf(&str, "%d", file->association < 0? 0: file->mnt_id);
break;
+ case COL_MODE:
+ if (file->association < 0)
+ xasprintf(&str, "---");
+ else
+ xasprintf(&str, "%c%c-",
+ file->mode & S_IRUSR? 'r': '-',
+ file->mode & S_IWUSR? 'w': '-');
+ break;
case COL_POS:
xasprintf(&str, "%llu",
file->association < 0? 0: file->pos);
N_("inode number") },
[COL_MNT_ID] = { "MNTID", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
N_("mount id") },
+ [COL_MODE] = { "MODE", 0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING,
+ N_("access mode (rwx)") },
[COL_NAME] = { "NAME", 45, 0, SCOLS_JSON_STRING,
N_("name of the file") },
[COL_NLINK] = { "NLINK", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
COL_PID,
COL_USER,
COL_ASSOC,
+ COL_MODE,
COL_TYPE,
COL_DEVICE,
COL_POS,
COL_TID,
COL_USER,
COL_ASSOC,
+ COL_MODE,
COL_TYPE,
COL_DEVICE,
COL_POS,
{
long num;
char *endptr = NULL;
- struct stat sb;
+ struct stat sb, lsb;
ssize_t len;
char sym[PATH_MAX];
struct file *f;
if (!f)
return NULL;
+ if (fstatat(dd, dp->d_name, &lsb, AT_SYMLINK_NOFOLLOW) == 0)
+ f->mode = lsb.st_mode;
+
if (*fdinfo_dd < 0)
return f;