Index: htop.c
===================================================================
--- htop.c	(revision 300)
+++ htop.c	(working copy)
@@ -245,7 +245,13 @@
 }
 
 static bool setUserOnly(const char* userName, bool* userOnly, uid_t* userId) {
-   struct passwd* user = getpwnam(userName);
+   struct passwd* user;
+   if (userName == NULL) {
+      user = getpwnam(cuserid(NULL));
+   } else {
+      user = getpwnam(userName);
+   }
+
    if (user) {
       *userOnly = true;
       *userId = user->pw_uid;
@@ -287,7 +293,7 @@
       {"version",  no_argument,         0, 'v'},
       {"delay",    required_argument,   0, 'd'},
       {"sort-key", required_argument,   0, 's'},
-      {"user",     required_argument,   0, 'u'},
+      {"user",     optional_argument,   0, 'u'},
       {"no-color", no_argument,         0, 'C'},
       {"no-colour",no_argument,         0, 'C'},
       {"pid",      required_argument,   0, 'p'},
@@ -304,7 +310,7 @@
       setlocale(LC_CTYPE, "");
 
    /* Parse arguments */
-   while ((opt = getopt_long(argc, argv, "hvCs:d:u:p:", long_opts, &opti))) {
+   while ((opt = getopt_long(argc, argv, "hvCs:d:u::p:", long_opts, &opti))) {
       if (opt == EOF) break;
       switch (opt) {
          case 'h':
