if (scols_line_set_data(ln, column_index, "BLK"))
err(EXIT_FAILURE, _("failed to add output data"));
return true;
+ case COL_DEVNAME:
case COL_PARTITION:
partition = get_partition(file->stat.st_rdev);
if (partition) {
xasprintf(&str, "%u",
major(file->stat.st_rdev));
break;
+ case COL_DEVNAME:
+ chrdrv = get_chrdrv(major(file->stat.st_rdev));
+ miscdev = NULL;
+ if (chrdrv && strcmp(chrdrv, "misc") == 0)
+ miscdev = get_miscdev(minor(file->stat.st_rdev));
+ if (chrdrv) {
+ if (miscdev) {
+ xasprintf(&str, "misc:%s", miscdev);
+ } else {
+ xasprintf(&str, "%s:%u", chrdrv,
+ minor(file->stat.st_rdev));
+ }
+ break;
+ }
+ /* FALL THROUGH */
case COL_DEVICE:
xasprintf(&str, "%u:%u",
major(file->stat.st_rdev),
if (scols_line_set_data(ln, column_index, "FIFO"))
err(EXIT_FAILURE, _("failed to add output data"));
return true;
+ case COL_DEVNAME:
+ if (major(file->stat.st_dev) == 0
+ && strncmp(file->name, "pipe:", 5) == 0) {
+ str = strdup("nodev:pipefs");
+ break;
+ }
+ return false;
default:
return false;
}
case COL_INODE:
xasprintf(&str, "%llu", (unsigned long long)file->stat.st_ino);
break;
+ case COL_DEVNAME:
+ if (major(file->stat.st_dev) == 0) {
+ const char *filesystem = get_nodev_filesystem(proc,
+ minor(file->stat.st_dev));
+ if (filesystem) {
+ xasprintf(&str, "nodev:%s", filesystem);
+ break;
+ }
+ }
+ /* FALL THROUGH */
case COL_PARTITION:
partition = get_partition(file->stat.st_dev);
if (partition) {
break;
}
return false;
+ case COL_DEVNAME:
+ if (major(file->stat.st_dev) == 0
+ && strncmp(file->name, "socket:", 7) == 0) {
+ str = strdup("nodev:sockfs");
+ break;
+ }
+ return false;
default:
return false;
}
int column_id,
size_t column_index)
{
+ char *str = NULL;
+
switch(column_id) {
case COL_TYPE:
if (scols_line_set_data(ln, column_index, "UNKN"))
err(EXIT_FAILURE, _("failed to add output data"));
return true;
+ case COL_DEVNAME:
+ if (major(file->stat.st_dev) == 0
+ && strncmp(file->name, "anon_inode:", 11) == 0) {
+ str = strdup("nodev:anon_inodefs");
+ break;
+ }
+ return false;
default:
return false;
}
+
+ if (!str)
+ err(EXIT_FAILURE, _("failed to add output data"));
+ if (scols_line_refer_data(ln, column_index, str))
+ err(EXIT_FAILURE, _("failed to add output data"));
+ return true;
}
struct file *make_unkn(const struct file_class *class,
N_("ID of device containing file") },
[COL_DEVICE] = { "DEVICE", 0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING,
N_("device ID for special, or ID of device containing file") },
+ [COL_DEVNAME] = { "DEVNAME", 0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING,
+ N_("device name, decoded version of DEVICE") },
[COL_FLAGS] = { "FLAGS", 0, SCOLS_FL_RIGHT, SCOLS_JSON_STRING,
N_("flags specified when opening the file") },
[COL_FD] = { "FD", 0, SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
COL_ASSOC,
COL_MODE,
COL_TYPE,
- COL_DEVICE,
+ COL_DEVNAME,
COL_MNT_ID,
COL_INODE,
COL_NAME,
COL_ASSOC,
COL_MODE,
COL_TYPE,
- COL_DEVICE,
+ COL_DEVNAME,
COL_MNT_ID,
COL_INODE,
COL_NAME,
COL_COMMAND,
COL_DELETED,
COL_DEVICE,
+ COL_DEVNAME,
COL_DEV,
COL_FD,
COL_FLAGS,