From 7c62db73fc8e544692a903e5f391751a3561a71b Mon Sep 17 00:00:00 2001 From: solanav Date: Thu, 31 Jan 2019 00:25:08 +0100 Subject: [PATCH] User option "-u" now defaults to $USER --- htop.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/htop.c b/htop.c index 8c88c782..f38de6d0 100644 --- a/htop.c +++ b/htop.c @@ -43,7 +43,7 @@ static void printHelpFlag() { "-h --help Print this help screen\n" "-s --sort-key=COLUMN Sort by COLUMN (try --sort-key=help for a list)\n" "-t --tree Show the tree view by default\n" - "-u --user=USERNAME Show only processes of a given user\n" + "-u --user=USERNAME Show only processes of a given user. If no username is given, it defaults to $USER.\n" "-p --pid=PID,[,PID,PID...] Show only the given PIDs\n" "-v --version Print version info\n" "\n" @@ -82,7 +82,7 @@ static CommandLineSettings parseArguments(int argc, char** argv) { {"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'}, {"tree", no_argument, 0, 't'}, @@ -92,7 +92,7 @@ static CommandLineSettings parseArguments(int argc, char** argv) { int opt, opti=0; /* Parse arguments */ - while ((opt = getopt_long(argc, argv, "hvCs:td:u:p:", long_opts, &opti))) { + while ((opt = getopt_long(argc, argv, "hvCs:td:u::p:", long_opts, &opti))) { if (opt == EOF) break; switch (opt) { case 'h': @@ -123,6 +123,15 @@ static CommandLineSettings parseArguments(int argc, char** argv) { } break; case 'u': + if(!optarg && optind < argc && argv[optind] != NULL && argv[optind][0] != '\0' && argv[optind][0] != '-') { + optarg = argv[optind++]; + } + + if (!optarg) { + optarg = getenv("USER"); + flags.userId = geteuid(); + } + if (!Action_setUserOnly(optarg, &(flags.userId))) { fprintf(stderr, "Error: invalid user \"%s\".\n", optarg); }