summaryrefslogtreecommitdiffstats
path: root/misc-utils/lsblk.c
diff options
context:
space:
mode:
authorKarel Zak2014-04-02 13:52:08 +0200
committerKarel Zak2014-04-03 12:29:20 +0200
commitbb6e822ad24ba7b817539b7006f1622b33ca1cf8 (patch)
tree57f8e9e4343dd194012a51e1ae66637bae3f8f41 /misc-utils/lsblk.c
parentfindmnt: cleanup flags (diff)
downloadkernel-qcow2-util-linux-bb6e822ad24ba7b817539b7006f1622b33ca1cf8.tar.gz
kernel-qcow2-util-linux-bb6e822ad24ba7b817539b7006f1622b33ca1cf8.tar.xz
kernel-qcow2-util-linux-bb6e822ad24ba7b817539b7006f1622b33ca1cf8.zip
lsblk: clean up data preparation
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/lsblk.c')
-rw-r--r--misc-utils/lsblk.c209
1 files changed, 77 insertions, 132 deletions
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index eed01e568..6da24ff78 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -113,8 +113,8 @@ enum {
LSBLK_ASCII = (1 << 0),
LSBLK_RAW = (1 << 1),
LSBLK_NOHEADINGS = (1 << 2),
- LSBLK_EXPORT = (1 << 3),
- LSBLK_TREE = (1 << 4),
+ LSBLK_EXPORT = (1 << 3),
+ LSBLK_TREE = (1 << 4),
};
/* column names */
@@ -701,8 +701,8 @@ static char *mk_dm_name(const char *name)
static void set_scols_data(struct blkdev_cxt *cxt, int col, int id, struct libscols_line *ln)
{
- char *p = NULL;
int st_rc = 0;
+ char *str = NULL;
if (!cxt->st.st_rdev && (id == COL_OWNER || id == COL_GROUP ||
id == COL_MODE))
@@ -710,29 +710,27 @@ static void set_scols_data(struct blkdev_cxt *cxt, int col, int id, struct libsc
switch(id) {
case COL_NAME:
- scols_line_set_data(ln, col, cxt->dm_name ?
- mk_dm_name(cxt->dm_name) :
- mk_name(cxt->name));
+ str = cxt->dm_name ? mk_dm_name(cxt->dm_name) : mk_name(cxt->name);
break;
case COL_KNAME:
- scols_line_set_data(ln, col, mk_name(cxt->name));
+ str = mk_name(cxt->name);
break;
case COL_PKNAME:
if (cxt->parent)
- scols_line_set_data(ln, col, mk_name(cxt->parent->name));
+ str = mk_name(cxt->parent->name);
break;
case COL_OWNER:
{
struct passwd *pw = st_rc ? NULL : getpwuid(cxt->st.st_uid);
if (pw)
- scols_line_set_data(ln, col, xstrdup(pw->pw_name));
+ str = xstrdup(pw->pw_name);
break;
}
case COL_GROUP:
{
struct group *gr = st_rc ? NULL : getgrgid(cxt->st.st_gid);
if (gr)
- scols_line_set_data(ln, col, xstrdup(gr->gr_name));
+ str = xstrdup(gr->gr_name);
break;
}
case COL_MODE:
@@ -741,249 +739,196 @@ static void set_scols_data(struct blkdev_cxt *cxt, int col, int id, struct libsc
if (!st_rc) {
strmode(cxt->st.st_mode, md);
- scols_line_set_data(ln, col, xstrdup(md));
+ str = xstrdup(md);
}
break;
}
case COL_MAJMIN:
if (is_parsable(lsblk))
- xasprintf(&p, "%u:%u", cxt->maj, cxt->min);
+ xasprintf(&str, "%u:%u", cxt->maj, cxt->min);
else
- xasprintf(&p, "%3u:%-3u", cxt->maj, cxt->min);
- scols_line_set_data(ln, col, p);
+ xasprintf(&str, "%3u:%-3u", cxt->maj, cxt->min);
break;
case COL_FSTYPE:
probe_device(cxt);
if (cxt->fstype)
- scols_line_set_data(ln, col, xstrdup(cxt->fstype));
+ str = xstrdup(cxt->fstype);
break;
case COL_TARGET:
- if (!(cxt->nholders + cxt->npartitions)) {
- if ((p = get_device_mountpoint(cxt)))
- scols_line_set_data(ln, col, p);
- }
+ if (!(cxt->nholders + cxt->npartitions))
+ str = get_device_mountpoint(cxt);
break;
case COL_LABEL:
probe_device(cxt);
- if (!cxt->label)
- break;
-
- scols_line_set_data(ln, col, xstrdup(cxt->label));
+ if (cxt->label)
+ str = xstrdup(cxt->label);
break;
case COL_UUID:
probe_device(cxt);
if (cxt->uuid)
- scols_line_set_data(ln, col, xstrdup(cxt->uuid));
+ str = xstrdup(cxt->uuid);
break;
case COL_PARTTYPE:
probe_device(cxt);
if (cxt->parttype)
- scols_line_set_data(ln, col, xstrdup(cxt->parttype));
+ str = xstrdup(cxt->parttype);
break;
case COL_PARTLABEL:
probe_device(cxt);
- if (!cxt->partlabel)
- break;
-
- scols_line_set_data(ln, col, xstrdup(cxt->partlabel));
+ if (cxt->partlabel)
+ str = xstrdup(cxt->partlabel);
break;
case COL_PARTUUID:
probe_device(cxt);
if (cxt->partuuid)
- scols_line_set_data(ln, col, xstrdup(cxt->partuuid));
+ str = xstrdup(cxt->partuuid);
break;
case COL_PARTFLAGS:
probe_device(cxt);
if (cxt->partflags)
- scols_line_set_data(ln, col, xstrdup(cxt->partflags));
+ str = xstrdup(cxt->partflags);
break;
case COL_WWN:
get_udev_properties(cxt);
if (cxt->wwn)
- scols_line_set_data(ln, col, xstrdup(cxt->wwn));
+ str = xstrdup(cxt->wwn);
break;
case COL_RA:
- p = sysfs_strdup(&cxt->sysfs, "queue/read_ahead_kb");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/read_ahead_kb");
break;
case COL_RO:
- scols_line_set_data(ln, col, is_readonly_device(cxt) ?
- xstrdup("1") : xstrdup("0"));
+ str = xstrdup(is_readonly_device(cxt) ? "1" : "0");
break;
case COL_RM:
- p = sysfs_strdup(&cxt->sysfs, "removable");
- if (!p && cxt->sysfs.parent)
- p = sysfs_strdup(cxt->sysfs.parent, "removable");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "removable");
+ if (!str && cxt->sysfs.parent)
+ str = sysfs_strdup(cxt->sysfs.parent, "removable");
break;
case COL_ROTA:
- p = sysfs_strdup(&cxt->sysfs, "queue/rotational");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/rotational");
break;
case COL_RAND:
- p = sysfs_strdup(&cxt->sysfs, "queue/add_random");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/add_random");
break;
case COL_MODEL:
- if (!cxt->partition && cxt->nslaves == 0) {
- p = sysfs_strdup(&cxt->sysfs, "device/model");
- if (p)
- scols_line_set_data(ln, col, p);
- }
+ if (!cxt->partition && cxt->nslaves == 0)
+ str = sysfs_strdup(&cxt->sysfs, "device/model");
break;
case COL_SERIAL:
if (!cxt->partition && cxt->nslaves == 0) {
get_udev_properties(cxt);
if (cxt->serial)
- scols_line_set_data(ln, col, xstrdup(cxt->serial));
+ str = xstrdup(cxt->serial);
}
break;
case COL_REV:
- if (!cxt->partition && cxt->nslaves == 0) {
- p = sysfs_strdup(&cxt->sysfs, "device/rev");
- if (p)
- scols_line_set_data(ln, col, p);
- }
+ if (!cxt->partition && cxt->nslaves == 0)
+ str = sysfs_strdup(&cxt->sysfs, "device/rev");
break;
case COL_VENDOR:
- if (!cxt->partition && cxt->nslaves == 0) {
- p = sysfs_strdup(&cxt->sysfs, "device/vendor");
- if (p)
- scols_line_set_data(ln, col, p);
- }
+ if (!cxt->partition && cxt->nslaves == 0)
+ str = sysfs_strdup(&cxt->sysfs, "device/vendor");
break;
case COL_SIZE:
- if (cxt->size) {
- if (lsblk->bytes)
- xasprintf(&p, "%jd", cxt->size);
- else
- p = size_to_human_string(SIZE_SUFFIX_1LETTER, cxt->size);
- if (p)
- scols_line_set_data(ln, col, p);
- }
+ if (!cxt->size)
+ break;
+ if (lsblk->bytes)
+ xasprintf(&str, "%jd", cxt->size);
+ else
+ str = size_to_human_string(SIZE_SUFFIX_1LETTER, cxt->size);
break;
case COL_STATE:
- if (!cxt->partition && !cxt->dm_name) {
- p = sysfs_strdup(&cxt->sysfs, "device/state");
- } else if (cxt->dm_name) {
+ if (!cxt->partition && !cxt->dm_name)
+ str = sysfs_strdup(&cxt->sysfs, "device/state");
+ else if (cxt->dm_name) {
int x = 0;
if (sysfs_read_int(&cxt->sysfs, "dm/suspended", &x) == 0)
- p = x ? xstrdup("suspended") : xstrdup("running");
+ str = xstrdup(x ? "suspended" : "running");
}
- if (p)
- scols_line_set_data(ln, col, p);
break;
case COL_ALIOFF:
- p = sysfs_strdup(&cxt->sysfs, "alignment_offset");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "alignment_offset");
break;
case COL_MINIO:
- p = sysfs_strdup(&cxt->sysfs, "queue/minimum_io_size");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/minimum_io_size");
break;
case COL_OPTIO:
- p = sysfs_strdup(&cxt->sysfs, "queue/optimal_io_size");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/optimal_io_size");
break;
case COL_PHYSEC:
- p = sysfs_strdup(&cxt->sysfs, "queue/physical_block_size");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/physical_block_size");
break;
case COL_LOGSEC:
- p = sysfs_strdup(&cxt->sysfs, "queue/logical_block_size");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/logical_block_size");
break;
case COL_SCHED:
- p = get_scheduler(cxt);
- if (p)
- scols_line_set_data(ln, col, p);
+ str = get_scheduler(cxt);
break;
case COL_RQ_SIZE:
- p = sysfs_strdup(&cxt->sysfs, "queue/nr_requests");
- if (p)
- scols_line_set_data(ln, col, p);
+ str = sysfs_strdup(&cxt->sysfs, "queue/nr_requests");
break;
case COL_TYPE:
- p = get_type(cxt);
- if (p)
- scols_line_set_data(ln, col, p);
+ str = get_type(cxt);
break;
case COL_HCTL:
{
int h, c, t, l;
- if (sysfs_scsi_get_hctl(&cxt->sysfs, &h, &c, &t, &l) == 0) {
- xasprintf(&p, "%d:%d:%d:%d", h, c, t, l);
- scols_line_set_data(ln, col, p);
- }
+ if (sysfs_scsi_get_hctl(&cxt->sysfs, &h, &c, &t, &l) == 0)
+ xasprintf(&str, "%d:%d:%d:%d", h, c, t, l);
break;
}
case COL_TRANSPORT:
- p = get_transport(cxt);
- if (p)
- scols_line_set_data(ln, col, p);
+ str = get_transport(cxt);
break;
case COL_DALIGN:
- p = sysfs_strdup(&cxt->sysfs, "discard_alignment");
- if (cxt->discard && p)
- scols_line_set_data(ln, col, p);
- else
- scols_line_set_data(ln, col, xstrdup("0"));
+ if (cxt->discard)
+ str = sysfs_strdup(&cxt->sysfs, "discard_alignment");
+ if (!str)
+ str = xstrdup("0");
break;
case COL_DGRAN:
if (lsblk->bytes)
- p = sysfs_strdup(&cxt->sysfs, "queue/discard_granularity");
+ str = sysfs_strdup(&cxt->sysfs, "queue/discard_granularity");
else {
uint64_t x;
-
if (sysfs_read_u64(&cxt->sysfs,
"queue/discard_granularity", &x) == 0)
- p = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
+ str = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
}
- if (p)
- scols_line_set_data(ln, col, p);
break;
case COL_DMAX:
if (lsblk->bytes)
- p = sysfs_strdup(&cxt->sysfs, "queue/discard_max_bytes");
+ str = sysfs_strdup(&cxt->sysfs, "queue/discard_max_bytes");
else {
uint64_t x;
-
if (sysfs_read_u64(&cxt->sysfs,
"queue/discard_max_bytes", &x) == 0)
- p = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
+ str = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
}
- if (p)
- scols_line_set_data(ln, col, p);
break;
case COL_DZERO:
- p = sysfs_strdup(&cxt->sysfs, "queue/discard_zeroes_data");
- if (cxt->discard && p)
- scols_line_set_data(ln, col, p);
- else
- scols_line_set_data(ln, col, xstrdup("0"));
+ if (cxt->discard)
+ str = sysfs_strdup(&cxt->sysfs, "queue/discard_zeroes_data");
+ if (!str)
+ str = xstrdup("0");
break;
case COL_WSAME:
if (lsblk->bytes)
- p = sysfs_strdup(&cxt->sysfs, "queue/write_same_max_bytes");
+ str = sysfs_strdup(&cxt->sysfs, "queue/write_same_max_bytes");
else {
uint64_t x;
if (sysfs_read_u64(&cxt->sysfs,
"queue/write_same_max_bytes", &x) == 0)
- p = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
+ str = size_to_human_string(SIZE_SUFFIX_1LETTER, x);
}
- scols_line_set_data(ln, col, p ? p : xstrdup("0"));
+ if (!str)
+ str = xstrdup("0");
break;
};
+
+ if (str)
+ scols_line_refer_data(ln, col, str);
}
static void print_device(struct blkdev_cxt *cxt, struct libscols_line *scols_parent)