diff options
author | ed <ed@FreeBSD.org> | 2014-07-10 15:56:15 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2014-07-10 15:56:15 +0000 |
commit | c52627a0e32e56767a18d06f5fd1b47c453c690f (patch) | |
tree | 2b8bed4c74313e9ed60d2f1faf55ea2eaeac8feb /usr.bin/users | |
parent | d421c05b170a61ae80c4eaa6de0444649285af42 (diff) | |
download | FreeBSD-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.cc | 25 |
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); } |