lshal: table columns affected by arg order.
Test: lshal
Test: lshal -pita
Bug: 35389839
Change-Id: I845a13b8d7cdf483f4d269e5c33626f6013b42d7
diff --git a/cmds/lshal/ListCommand.cpp b/cmds/lshal/ListCommand.cpp
index 7fb8083..31c42e7 100644
--- a/cmds/lshal/ListCommand.cpp
+++ b/cmds/lshal/ListCommand.cpp
@@ -213,29 +213,37 @@
const std::string &serverCmdline, const std::string &address,
const std::string &clients, const std::string &clientCmdlines) const {
std::vector<std::string> columns;
- if (mSelectedColumns & ENABLE_INTERFACE_NAME)
- columns.push_back(interfaceName);
- if (mSelectedColumns & ENABLE_TRANSPORT)
- columns.push_back(transport);
- if (mSelectedColumns & ENABLE_ARCH)
- columns.push_back(arch);
- if (mSelectedColumns & ENABLE_THREADS) {
- columns.push_back(threadUsage);
- }
- if (mSelectedColumns & ENABLE_SERVER_PID) {
- if (mEnableCmdlines) {
- columns.push_back(serverCmdline);
- } else {
- columns.push_back(server);
- }
- }
- if (mSelectedColumns & ENABLE_SERVER_ADDR)
- columns.push_back(address);
- if (mSelectedColumns & ENABLE_CLIENT_PIDS) {
- if (mEnableCmdlines) {
- columns.push_back(clientCmdlines);
- } else {
- columns.push_back(clients);
+ for (TableColumnType type : mSelectedColumns) {
+ switch (type) {
+ case TableColumnType::INTERFACE_NAME: {
+ columns.push_back(interfaceName);
+ } break;
+ case TableColumnType::TRANSPORT: {
+ columns.push_back(transport);
+ } break;
+ case TableColumnType::ARCH: {
+ columns.push_back(arch);
+ } break;
+ case TableColumnType::THREADS: {
+ columns.push_back(threadUsage);
+ } break;
+ case TableColumnType::SERVER_ADDR: {
+ columns.push_back(address);
+ } break;
+ case TableColumnType::SERVER_PID: {
+ if (mEnableCmdlines) {
+ columns.push_back(serverCmdline);
+ } else {
+ columns.push_back(server);
+ }
+ } break;
+ case TableColumnType::CLIENT_PIDS: {
+ if (mEnableCmdlines) {
+ columns.push_back(clientCmdlines);
+ } else {
+ columns.push_back(clients);
+ }
+ } break;
}
}
textTable->add(std::move(columns));
@@ -720,31 +728,31 @@
mVintf = true;
}
case 'i': {
- mSelectedColumns |= ENABLE_INTERFACE_NAME;
+ mSelectedColumns.push_back(TableColumnType::INTERFACE_NAME);
break;
}
case 't': {
- mSelectedColumns |= ENABLE_TRANSPORT;
+ mSelectedColumns.push_back(TableColumnType::TRANSPORT);
break;
}
case 'r': {
- mSelectedColumns |= ENABLE_ARCH;
+ mSelectedColumns.push_back(TableColumnType::ARCH);
break;
}
case 'p': {
- mSelectedColumns |= ENABLE_SERVER_PID;
+ mSelectedColumns.push_back(TableColumnType::SERVER_PID);
break;
}
case 'a': {
- mSelectedColumns |= ENABLE_SERVER_ADDR;
+ mSelectedColumns.push_back(TableColumnType::SERVER_ADDR);
break;
}
case 'c': {
- mSelectedColumns |= ENABLE_CLIENT_PIDS;
+ mSelectedColumns.push_back(TableColumnType::CLIENT_PIDS);
break;
}
case 'e': {
- mSelectedColumns |= ENABLE_THREADS;
+ mSelectedColumns.push_back(TableColumnType::THREADS);
break;
}
case 'm': {
@@ -788,8 +796,9 @@
return USAGE;
}
- if (mSelectedColumns == 0) {
- mSelectedColumns = ENABLE_INTERFACE_NAME | ENABLE_SERVER_PID | ENABLE_CLIENT_PIDS | ENABLE_THREADS;
+ if (mSelectedColumns.empty()) {
+ mSelectedColumns = {TableColumnType::INTERFACE_NAME, TableColumnType::THREADS,
+ TableColumnType::SERVER_PID, TableColumnType::CLIENT_PIDS};
}
return OK;
}
@@ -807,3 +816,4 @@
} // namespace lshal
} // namespace android
+
diff --git a/cmds/lshal/ListCommand.h b/cmds/lshal/ListCommand.h
index d06ec7d..176d5b9 100644
--- a/cmds/lshal/ListCommand.h
+++ b/cmds/lshal/ListCommand.h
@@ -82,7 +82,7 @@
NullableOStream<std::ostream> mOut;
NullableOStream<std::ofstream> mFileOutput = nullptr;
TableEntryCompare mSortColumn = nullptr;
- TableEntrySelect mSelectedColumns = 0;
+ std::vector<TableColumnType> mSelectedColumns;
// If true, cmdlines will be printed instead of pid.
bool mEnableCmdlines = false;
diff --git a/cmds/lshal/TableEntry.h b/cmds/lshal/TableEntry.h
index e04c3ca..f18f38a 100644
--- a/cmds/lshal/TableEntry.h
+++ b/cmds/lshal/TableEntry.h
@@ -84,18 +84,16 @@
using TableEntryCompare = std::function<bool(const TableEntry &, const TableEntry &)>;
-enum : unsigned int {
- ENABLE_INTERFACE_NAME = 1 << 0,
- ENABLE_TRANSPORT = 1 << 1,
- ENABLE_SERVER_PID = 1 << 2,
- ENABLE_SERVER_ADDR = 1 << 3,
- ENABLE_CLIENT_PIDS = 1 << 4,
- ENABLE_ARCH = 1 << 5,
- ENABLE_THREADS = 1 << 6,
+enum class TableColumnType : unsigned int {
+ INTERFACE_NAME,
+ TRANSPORT,
+ SERVER_PID,
+ SERVER_ADDR,
+ CLIENT_PIDS,
+ ARCH,
+ THREADS,
};
-using TableEntrySelect = unsigned int;
-
enum {
NO_PID = -1,
NO_PTR = 0