1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

Add dmsetup -C for column-based output.

This commit is contained in:
Alasdair Kergon 2004-06-16 16:44:12 +00:00
parent 3f48434eb6
commit 32c5ad86ab
2 changed files with 62 additions and 17 deletions

View File

@ -1,5 +1,6 @@
Version 1.00.18
=============================
Add -c to dmsetup for column-based output.
Add target message-passing ioctl.
Version 1.00.17 - 17 Apr 2004

View File

@ -54,6 +54,7 @@ extern char *optarg;
*/
enum {
READ_ONLY = 0,
COLS_ARG,
MAJOR_ARG,
MINOR_ARG,
NOTABLE_ARG,
@ -124,15 +125,42 @@ static int _parse_file(struct dm_task *dmt, const char *file)
return r;
}
static void _display_info(struct dm_task *dmt)
static void _display_info_cols(struct dm_task *dmt, struct dm_info *info)
{
struct dm_info info;
static int _headings = 0;
const char *uuid;
if (!dm_task_get_info(dmt, &info))
if (!info->exists) {
printf("Device does not exist.\n");
return;
}
if (!info.exists) {
if (!_headings) {
printf("Name Maj Min Stat Open Targ Event UUID\n");
_headings = 1;
}
printf("%-16s ", dm_task_get_name(dmt));
printf("%3d %3d %s%s%s%s %4d %4d %6" PRIu32 " ",
info->major, info->minor,
info->live_table ? "L" : "-",
info->inactive_table ? "I" : "-",
info->suspended ? "s" : "-",
info->read_only ? "r" : "w",
info->open_count, info->target_count, info->event_nr);
if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
printf("%s", uuid);
printf("\n");
}
static void _display_info_long(struct dm_task *dmt, struct dm_info *info)
{
const char *uuid;
if (!info->exists) {
printf("Device does not exist.\n");
return;
}
@ -140,25 +168,25 @@ static void _display_info(struct dm_task *dmt)
printf("Name: %s\n", dm_task_get_name(dmt));
printf("State: %s%s\n",
info.suspended ? "SUSPENDED" : "ACTIVE",
info.read_only ? " (READ-ONLY)" : "");
info->suspended ? "SUSPENDED" : "ACTIVE",
info->read_only ? " (READ-ONLY)" : "");
if (!info.live_table && !info.inactive_table)
if (!info->live_table && !info->inactive_table)
printf("Tables present: None\n");
else
printf("Tables present: %s%s%s\n",
info.live_table ? "LIVE" : "",
info.live_table && info.inactive_table ? " & " : "",
info.inactive_table ? "INACTIVE" : "");
info->live_table ? "LIVE" : "",
info->live_table && info->inactive_table ? " & " : "",
info->inactive_table ? "INACTIVE" : "");
if (info.open_count != -1)
printf("Open count: %d\n", info.open_count);
if (info->open_count != -1)
printf("Open count: %d\n", info->open_count);
printf("Event number: %" PRIu32 "\n", info.event_nr);
printf("Major, minor: %d, %d\n", info.major, info.minor);
printf("Event number: %" PRIu32 "\n", info->event_nr);
printf("Major, minor: %d, %d\n", info->major, info->minor);
if (info.target_count != -1)
printf("Number of targets: %d\n", info.target_count);
if (info->target_count != -1)
printf("Number of targets: %d\n", info->target_count);
if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
printf("UUID: %s\n", uuid);
@ -166,6 +194,19 @@ static void _display_info(struct dm_task *dmt)
printf("\n");
}
static void _display_info(struct dm_task *dmt)
{
struct dm_info info;
if (!dm_task_get_info(dmt, &info))
return;
if (_switches[COLS_ARG])
_display_info_cols(dmt, &info);
else
_display_info_long(dmt, &info);
}
static int _load(int task, const char *name, const char *file, const char *uuid)
{
int r = 0;
@ -714,6 +755,7 @@ static int _process_switches(int *argc, char ***argv)
#ifdef HAVE_GETOPTLONG
static struct option long_options[] = {
{"columns", 0, NULL, COLS_ARG},
{"readonly", 0, NULL, READ_ONLY},
{"major", 1, NULL, MAJOR_ARG},
{"minor", 1, NULL, MINOR_ARG},
@ -735,8 +777,10 @@ static int _process_switches(int *argc, char ***argv)
optarg = 0;
optind = OPTIND_INIT;
while ((c = GETOPTLONG_FN(*argc, *argv, "j:m:nru:v",
while ((c = GETOPTLONG_FN(*argc, *argv, "cCj:m:nru:v",
long_options, &ind)) != -1) {
if (c == 'c' || c == 'C' || ind == COLS_ARG)
_switches[COLS_ARG]++;
if (c == 'r' || ind == READ_ONLY)
_switches[READ_ONLY]++;
if (c == 'j' || ind == MAJOR_ARG) {