summaryrefslogtreecommitdiffstats
path: root/usr.bin/users
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2014-07-10 15:56:15 +0000
committered <ed@FreeBSD.org>2014-07-10 15:56:15 +0000
commitc52627a0e32e56767a18d06f5fd1b47c453c690f (patch)
tree2b8bed4c74313e9ed60d2f1faf55ea2eaeac8feb /usr.bin/users
parentd421c05b170a61ae80c4eaa6de0444649285af42 (diff)
downloadFreeBSD-src-c52627a0e32e56767a18d06f5fd1b47c453c690f.zip
FreeBSD-src-c52627a0e32e56767a18d06f5fd1b47c453c690f.tar.gz
Let users(1) use an std::set, instead of std::{vector,sort,unique}.
Reviewed by: gahr
Diffstat (limited to 'usr.bin/users')
-rw-r--r--usr.bin/users/users.cc25
1 files changed, 11 insertions, 14 deletions
diff --git a/usr.bin/users/users.cc b/usr.bin/users/users.cc
index ef64a9f..8b2e26f 100644
--- a/usr.bin/users/users.cc
+++ b/usr.bin/users/users.cc
@@ -36,14 +36,14 @@ __FBSDID("$FreeBSD$");
#include <iostream>
#include <iterator>
#include <string>
-#include <vector>
+#include <set>
using namespace std;
int
main(int argc, char **)
{
struct utmpx *ut;
- vector<string> names;
+ set<string> names;
if (argc > 1) {
cerr << "usage: users" << endl;
@@ -51,19 +51,16 @@ main(int argc, char **)
}
setutxent();
- while ((ut = getutxent()) != NULL) {
- if (ut->ut_type != USER_PROCESS)
- continue;
- names.push_back(ut->ut_user);
- }
+ while ((ut = getutxent()) != NULL)
+ if (ut->ut_type == USER_PROCESS)
+ names.insert(ut->ut_user);
endutxent();
- if (names.size() == 0) {
- return (0);
+ if (!names.empty()) {
+ auto last = names.end();
+ --last;
+ copy(names.begin(), last, ostream_iterator<string>(cout, " "));
+ cout << *last << endl;
}
-
- sort(begin(names), end(names));
- vector<string>::iterator last(unique(begin(names), end(names)));
- copy(begin(names), last-1, ostream_iterator<string>(cout, " "));
- cout << *(last-1) << endl;
+ return (0);
}
OpenPOWER on IntegriCloud