Author: ed
Date: Thu Jul 10 15:56:15 2014
New Revision: 268498
URL: http://svnweb.freebsd.org/changeset/base/268498

Log:
  Let users(1) use an std::set, instead of std::{vector,sort,unique}.
  
  Reviewed by:  gahr

Modified:
  head/usr.bin/users/users.cc

Modified: head/usr.bin/users/users.cc
==============================================================================
--- head/usr.bin/users/users.cc Thu Jul 10 15:14:37 2014        (r268497)
+++ head/usr.bin/users/users.cc Thu Jul 10 15:56:15 2014        (r268498)
@@ -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);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to