From nobody Thu Aug 25 20:07:31 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MDDXN1DWlz4ZPM1; Thu, 25 Aug 2022 20:07:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MDDXN0jJGz3jqc; Thu, 25 Aug 2022 20:07:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1661458052; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=acr4AMyfJIfn1SxPkBA55hnS3IZPCtFXndWvo3s+VQs=; b=WMJq/U6DLYyskP45ISo9gJyv6ARZNyjIgEab/c3RId0aw5OeFSS28YbtcTBgESKhrg5xR8 AEb7PnjCsJQp1ODaQ5t12DKYToLntsQeqhxchqyl6x2k+N64H2cCL0qZoq8W/+R4XFU3Cu 4kEVLrFqfMx4ZEGhmq2YG+WdnCoWwIacdrf9zKQf/uxFviKPYsYlJPUfsFkLZ52/4DbGzA 6V1rtRZKo+kWSvND08qbG+l79l/6Km7689zZt8ke5tb05LZvmTOjn2w3Wz2A+8zccKw00s 9QkceOZzlWB7qTzqqFwW+ZVFQ+aePwx7PoSQISyOq8Tybb76uK8SqfnFXTUtrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4MDDXM6v5pz10wP; Thu, 25 Aug 2022 20:07:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 27PK7Vmq059398; Thu, 25 Aug 2022 20:07:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 27PK7VJw059397; Thu, 25 Aug 2022 20:07:31 GMT (envelope-from git) Date: Thu, 25 Aug 2022 20:07:31 GMT Message-Id: <202208252007.27PK7VJw059397@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Dag-Erling=20Sm=C3=B8rgrav?= Subject: git: 65ee0a849553 - main - renice: fix argument order. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 65ee0a8495538bcf462480c83a9a5dd6f23b6f95 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1661458052; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=acr4AMyfJIfn1SxPkBA55hnS3IZPCtFXndWvo3s+VQs=; b=lC1q1tf+fmmVgpXUf5/H/CYtPsTYXi0k1kqY4hmbEoLokyGDpvt5KGkbG5X7BxxaPnYfYK GA5Z6mFR2xH2hWLgQOA56F1oJuTBPKhPCSJvPl0dEj9bEc9ZG/s6gLIBWnr937+S1FhImo sx2HnnBR0PT3WEgsCYO2dIvb0AxUUm4ttm82jUMap5feqs3c+oUZhj6z4wpRDwkZq1F02j I3+LwbFxz9UsXEjWiFlXnv8ItWxSOd3AVRgiWGRKzAhO0USLBkTQBdy/340LmS5FsXREAS h1mkXrKkyUWHIjPNIAKDrt/6POO+cIOf5XxgGQcoEON2zci7KC+ChkUeZiZkCA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1661458052; a=rsa-sha256; cv=none; b=f8ybzyHOlGG3kQ2hHKVvPacxhriflZXHPcmP5/PjAD5CzMnbuHzMCu8nnAaAXEmwJN/gq0 k20rWPwBpTJJuhVWklvfFEzhZmvT27ro5KyNijhfbqZNsn01Jc6+hhhu2zkaytHtEiziC9 wTlTY1NdSfnxgE4UyoXm1zucoy7HnVJiv7J/f6Ivx9brFMh9rdfM4Xumzbn5akcknXrJVN qxQBTpNmOXhhRFV8SF3RFtiFJsP4YdiXVTl7ctLCSntKK7aKWJSbKNtK/MqS0bvNn/6Tj9 rhnEG/Ez0pI3oQEEZqGxeRb78p0y9ii53/yrq+kdkWYMhYbHpbMoD/UFrr72yQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=65ee0a8495538bcf462480c83a9a5dd6f23b6f95 commit 65ee0a8495538bcf462480c83a9a5dd6f23b6f95 Author: Dag-Erling Smørgrav AuthorDate: 2022-08-25 17:22:37 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2022-08-25 19:50:55 +0000 renice: fix argument order. The target modifiers (-g, -p, -u) may occur in any position except between -n and its argument; furthermore, we support both the old absolute form (without -n) and the modern relative form (with -n). Sponsored by: Klara, Inc. --- usr.bin/renice/renice.c | 51 ++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/usr.bin/renice/renice.c b/usr.bin/renice/renice.c index fd442b425897..890d7043ebbd 100644 --- a/usr.bin/renice/renice.c +++ b/usr.bin/renice/renice.c @@ -52,11 +52,12 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include -static int donice(int, int, int, int); +static int donice(int, int, int, bool); static int getnum(const char *, const char *, int *); static void usage(void); @@ -69,27 +70,12 @@ int main(int argc, char *argv[]) { struct passwd *pwd; - int delim, errs, incr, prio, which, who; + bool havedelim = false, haveprio = false, incr = false; + int errs = 0, prio = 0, who = 0, which = PRIO_PROCESS; - delim = 0; - errs = 0; - incr = 0; - which = PRIO_PROCESS; - who = 0; - argc--, argv++; - if (argc < 2) - usage(); - if (strcmp(*argv, "-n") == 0) { - incr = 1; - argc--, argv++; - if (argc < 2) - usage(); - } - if (getnum("priority", *argv, &prio)) - return (1); - argc--, argv++; - for (; argc > 0; argc--, argv++) { - if (!delim) { + for (argc--, argv++; argc > 0; argc--, argv++) { + if (!havedelim) { + /* can occur at any time prior to delimiter */ if (strcmp(*argv, "-g") == 0) { which = PRIO_PGRP; continue; @@ -103,9 +89,24 @@ main(int argc, char *argv[]) continue; } if (strcmp(*argv, "--") == 0) { - delim = 1; + havedelim = true; continue; } + if (strcmp(*argv, "-n") == 0) { + /* may occur only once, prior to priority */ + if (haveprio || incr) + usage(); + incr = true; + (void)argc--, argv++; + /* fall through to priority */ + } + } + if (!haveprio) { + /* must occur exactly once, prior to target */ + if (getnum("priority", *argv, &prio)) + return (1); + haveprio = true; + continue; } if (which == PRIO_USER) { if ((pwd = getpwnam(*argv)) != NULL) @@ -131,11 +132,13 @@ main(int argc, char *argv[]) } errs += donice(which, who, prio, incr); } + if (!haveprio) + usage(); exit(errs != 0); } static int -donice(int which, int who, int prio, int incr) +donice(int which, int who, int prio, bool incr) { int oldprio; @@ -173,7 +176,7 @@ getnum(const char *com, const char *str, int *val) return (1); } if (ep == str || *ep != '\0' || errno != 0) { - warnx("Bad %s argument: %s.", com, str); + warnx("%s argument %s is invalid.", com, str); return (1); }