Avoid modifying optarg

It might be working, but lets rather not modify getopt's global variable
`optarg`.

Also there is no need to call `getenv("USER")`, just use `geteuid()`.
This commit is contained in:
Christian Göttsche 2020-09-12 18:11:58 +02:00 committed by cgzones
parent 5d4061732f
commit 1f5bd5c4c8

16
htop.c
View File

@ -131,21 +131,21 @@ static CommandLineSettings parseArguments(int argc, char** argv) {
}
break;
case 'u':
if (!optarg && optind < argc && argv[optind] != NULL &&
{
const char *username = optarg;
if (!username && optind < argc && argv[optind] != NULL &&
(argv[optind][0] != '\0' && argv[optind][0] != '-')) {
optarg = argv[optind++];
username = argv[optind++];
}
if (!optarg) {
optarg = getenv("USER");
if (!username) {
flags.userId = geteuid();
}
if (!Action_setUserOnly(optarg, &(flags.userId))) {
fprintf(stderr, "Error: invalid user \"%s\".\n", optarg);
} else if (!Action_setUserOnly(username, &(flags.userId))) {
fprintf(stderr, "Error: invalid user \"%s\".\n", username);
exit(1);
}
break;
}
case 'C':
flags.useColors = false;
break;