[thin_ls] rationalise the field names by using a static array of names
This commit is contained in:
parent
d65bf29eb7
commit
c5a1a814f3
@ -22,15 +22,16 @@
|
|||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
|
||||||
#include "base/disk_units.h"
|
#include "base/disk_units.h"
|
||||||
|
#include "boost/lexical_cast.hpp"
|
||||||
|
#include "boost/optional.hpp"
|
||||||
|
#include "boost/range.hpp"
|
||||||
|
#include "persistent-data/file_utils.h"
|
||||||
|
#include "thin-provisioning/commands.h"
|
||||||
#include "thin-provisioning/human_readable_format.h"
|
#include "thin-provisioning/human_readable_format.h"
|
||||||
#include "thin-provisioning/metadata_dumper.h"
|
|
||||||
#include "thin-provisioning/metadata.h"
|
#include "thin-provisioning/metadata.h"
|
||||||
|
#include "thin-provisioning/metadata_dumper.h"
|
||||||
#include "thin-provisioning/xml_format.h"
|
#include "thin-provisioning/xml_format.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "thin-provisioning/commands.h"
|
|
||||||
#include "persistent-data/file_utils.h"
|
|
||||||
#include "boost/optional.hpp"
|
|
||||||
#include "boost/lexical_cast.hpp"
|
|
||||||
|
|
||||||
using namespace base;
|
using namespace base;
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
@ -161,85 +162,41 @@ namespace {
|
|||||||
SNAPSHOT_TIME
|
SNAPSHOT_TIME
|
||||||
};
|
};
|
||||||
|
|
||||||
|
char const *field_names[] = {
|
||||||
|
"DEV",
|
||||||
|
"MAPPED_BLOCKS",
|
||||||
|
"MAPPED_EXCL_BLOCKS",
|
||||||
|
"MAPPED_SHARED_BLOCKS",
|
||||||
|
"MAPPED",
|
||||||
|
"EXCLUSIVE",
|
||||||
|
"SHARED",
|
||||||
|
"TRANSACTION_ID",
|
||||||
|
"CREATION_TIME",
|
||||||
|
"SNAPSHOT_TIME"
|
||||||
|
};
|
||||||
|
|
||||||
output_field string_to_field(string const &str) {
|
output_field string_to_field(string const &str) {
|
||||||
if (str == "DEV_ID")
|
for (unsigned i = 0; i < size(field_names); i++)
|
||||||
return DEV_ID;
|
if (str == field_names[i])
|
||||||
|
return static_cast<output_field>(i);
|
||||||
else if (str == "MAPPED_BLOCKS")
|
|
||||||
return MAPPED_BLOCKS;
|
|
||||||
|
|
||||||
else if (str == "MAPPED_EXCL_BLOCKS")
|
|
||||||
return MAPPED_EXCL_BLOCKS;
|
|
||||||
|
|
||||||
else if (str == "MAPPED_SHARED_BLOCKS")
|
|
||||||
return MAPPED_SHARED_BLOCKS;
|
|
||||||
|
|
||||||
else if (str == "MAPPED")
|
|
||||||
return MAPPED;
|
|
||||||
|
|
||||||
else if (str == "EXCLUSIVE")
|
|
||||||
return EXCLUSIVE;
|
|
||||||
|
|
||||||
else if (str == "SHARED")
|
|
||||||
return SHARED;
|
|
||||||
|
|
||||||
else if (str == "TRANSACTION_ID")
|
|
||||||
return TRANSACTION_ID;
|
|
||||||
|
|
||||||
else if (str == "CREATION_TIME")
|
|
||||||
return CREATION_TIME;
|
|
||||||
|
|
||||||
else if (str == "SNAPSHOT_TIME")
|
|
||||||
return SNAPSHOT_TIME;
|
|
||||||
|
|
||||||
throw runtime_error("unknown field");
|
throw runtime_error("unknown field");
|
||||||
return DEV_ID;
|
return DEV_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
string header(output_field const &f) {
|
string field_to_string(output_field const &f) {
|
||||||
switch (f) {
|
return field_names[static_cast<unsigned>(f)];
|
||||||
case DEV_ID:
|
|
||||||
return "DEV";
|
|
||||||
|
|
||||||
case MAPPED_BLOCKS:
|
|
||||||
return "BLOCKS";
|
|
||||||
|
|
||||||
case MAPPED_EXCL_BLOCKS:
|
|
||||||
return "BLOCKS_EXCL";
|
|
||||||
|
|
||||||
case MAPPED_SHARED_BLOCKS:
|
|
||||||
return "BLOCKS_SHARED";
|
|
||||||
|
|
||||||
case MAPPED:
|
|
||||||
return "MAPPED";
|
|
||||||
|
|
||||||
case EXCLUSIVE:
|
|
||||||
return "EXCLUSIVE";
|
|
||||||
|
|
||||||
case SHARED:
|
|
||||||
return "SHARED";
|
|
||||||
|
|
||||||
case TRANSACTION_ID:
|
|
||||||
return "TRANSACTION";
|
|
||||||
|
|
||||||
case CREATION_TIME:
|
|
||||||
return "CREATION";
|
|
||||||
|
|
||||||
case SNAPSHOT_TIME:
|
|
||||||
return "SNAPSHOT";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "<unknown>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_headers(grid_layout &out, vector<output_field> const &fields) {
|
void print_headers(grid_layout &out, vector<output_field> const &fields) {
|
||||||
vector<output_field>::const_iterator it;
|
vector<output_field>::const_iterator it;
|
||||||
for (it = fields.begin(); it != fields.end(); ++it)
|
for (it = fields.begin(); it != fields.end(); ++it)
|
||||||
out.field(header(*it));
|
out.field(field_to_string(*it));
|
||||||
|
|
||||||
out.new_row();
|
out.new_row();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------
|
||||||
|
|
||||||
struct flags {
|
struct flags {
|
||||||
flags()
|
flags()
|
||||||
@ -501,8 +458,6 @@ thin_ls_cmd::usage(std::ostream &out) const
|
|||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vector<output_field> parse_fields(string const &str)
|
vector<output_field> parse_fields(string const &str)
|
||||||
{
|
{
|
||||||
vector<output_field> fields;
|
vector<output_field> fields;
|
||||||
|
Loading…
Reference in New Issue
Block a user