From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=DKIM_ADSP_ALL,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 11502 invoked from network); 26 Feb 2021 07:56:53 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 26 Feb 2021 07:56:53 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1614326213; b=GfB2yFAlxy3k88hQkPkBgX27wFzTC4jg2UAajzG+fAtELWef6Bq38GJay7vMePTND9h9ZYZf33 m0AhdTGbfGYd3lAjWexNGgGtnU2xBQw1aNhO9pLz/9HT2dWnlRCE1vy0w7XrjlyMF60CtVH9P5 lYnhZiXPhtgVYtdMkcKNhBIGV046cydTeq8I8Gn5SKi28AJ0saMaUvhc8wHqucDgMqyXlNpP62 DnlNZdKf7/uYLmRNrQtycOTLKaJtaoG7GVIxKQSbQEpE/ucgkJFMDlOqHfvzymImkS3GhPNoM6 kVZkGsxidOhW4CtkfYkylIuhWLQ/vDfL9jjEvs7ZiY2NsQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail.cs.msu.ru) smtp.remote-ip=188.44.42.39; dkim=pass header.d=cs.msu.ru header.s=dkim header.a=rsa-sha256; dmarc=pass header.from=cs.msu.ru; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1614326213; bh=gGV9XbmaarOYHLI7glyZYU4KQO9dopWXb0NM4J3hlfU=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Subject:Content-Transfer-Encoding:Content-Type:MIME-Version: Message-ID:Date:Cc:To:From:DKIM-Signature:DKIM-Signature; b=Mwie4O+SCO+gNLQHimmmdeeKED1rIYmwfm+FwLk0VfLBwQqKtpoP8+VH/O/cTzPEdQCdJmZrY8 QZh87D5g6hNI4UC1kTUjM2i6cJDLEldV/A87G/hRxP8MW4tbbktFDW89eT5fVMzLuyDdok94N6 mzAyNZ6gwoUTnHY9bfrYthgFE3R8RFCP34q5U6UYWaqTxqfVhAGGE+U2dADiENLNrcmsHUbKBo 8JyEMlBVxhdfS5iieXF4MczQi6VneI5yYRo3Myu0wm9VZZ4Q+4BbL+hwmWDOlEtYC/qrbJv/WJ 5TO+7XZSp0/gIJgP3rAJf4Se0Bjzku5s8C3WSlZZLgk1TA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Subject:Content-Transfer-Encoding: Content-Type:MIME-Version:Message-Id:Date:Cc:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=3/8WrBfOvP4eYeUkZTqC9eJGtE9IELeyVCanAkN1Dlk=; b=zKjqiAwbw4vj9+9LS6h2ggNkiu t8/nmWfDo8OISPhZ5xbtlM8AXjU6u4Tys0rpmCFdobfoZSXl8xlk65ZwN/ZwbPv1Qqiwpm75b2P/X wA95VnhizJdkMgsSKmlSPZvaMzQXxb5UIdcbiJTwIelwqxgr2wWbwyEsIOHiuXdrpnquC+iZ0POl8 AyWqGpIe7RIZhea4XncPJVXLYCwXofRBE7mV4Tz4Fl0RT0+eiA73rUMAfUpg7d5pxxZ+qOgl87Mvx J2kWq0BEWmpkoYinuWXBtg+eUTlO+4otQ4HPU1E5HOOanY4vHHsbjpRTBxRxAmD2hYL5tKgAX3W5+ upO4GdnQ==; Received: from authenticated user by zero.zsh.org with local id 1lFXzW-0009me-Ct; Fri, 26 Feb 2021 07:56:50 +0000 Authentication-Results: zsh.org; iprev=pass (mail.cs.msu.ru) smtp.remote-ip=188.44.42.39; dkim=pass header.d=cs.msu.ru header.s=dkim header.a=rsa-sha256; dmarc=pass header.from=cs.msu.ru; arc=none Received: from mail.cs.msu.ru ([188.44.42.39]:23610) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1lFXyu-0008Aq-Q8; Fri, 26 Feb 2021 07:56:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cs.msu.ru; s=dkim; h=Subject:Content-Transfer-Encoding:Content-Type:MIME-Version: Message-Id:Date:Cc:To:From:Sender:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=3/8WrBfOvP4eYeUkZTqC9eJGtE9IELeyVCanAkN1Dlk=; b=eWzZzjv8qA2esp/gHMPVogAAG9 Lly0Or4WadR+cIuHp43UHQn8tu2YnpCwBqwfVUKy1rXRR4QJfTPEzyNoPZ+moXJk1Obu/i+SW2kEt nbE5fU1SgQ816+NEXqEK5UyMvCo6ONG77vSPaYyH9VE+RFHPcLl8UB3dxL9pyucx0F3+bVkhKDcDd 4Isy4WCYSjyWBeLlaq6rBhSnpDc9CljsFp8dyvDeG/tF1JfaNhKMwsBk5TmXWXHBaXFV7IgQoR6ru piRPTp3Fjrue/Bg39qcZT5Fe4ZDwvCxTIMc5SSG9LPmVY7BodSwfgsmcBpQfojTkjVhvzmpyFU9Q0 wGeayHMQ==; Received: from [37.204.119.143] (port=60916 helo=localhost.localdomain) by mail.cs.msu.ru with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94 (FreeBSD)) (envelope-from ) id 1lFXys-000Grp-Lt; Fri, 26 Feb 2021 10:56:10 +0300 From: Arseny Maslennikov To: zsh-workers@zsh.org Cc: Arseny Maslennikov Date: Fri, 26 Feb 2021 10:55:57 +0300 Message-Id: <20210226075558.883716-1-ar@cs.msu.ru> X-Mailer: git-send-email 2.30.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 37.204.119.143 X-SA-Exim-Mail-From: ar@cs.msu.ru Subject: [PATCH 1/2] Introduce new completion for Linux task capabilities X-SA-Exim-Version: 4.2.1 X-SA-Exim-Scanned: Yes (on mail.cs.msu.ru) X-Seq: 48118 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: This is intended for use on Linux-based systems only. The next patch introduces a completion for setpriv(1), which actively uses _capability_names. As for _capabilities, there are currently no users of this function, but I believe some utilities that handle caps may actually want to use it (neither setpriv(1) nor setcap/getcap(8), for instance, want to offer the cap names themselves as completion results; instead they want to prefix each name or a comma-separated sequence of names), and if not yet — it is still available to be manually compdeffed. --- Completion/Linux/Type/_capabilities | 10 ++++++++++ Completion/Linux/Type/_capability_names | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 Completion/Linux/Type/_capabilities create mode 100644 Completion/Linux/Type/_capability_names diff --git a/Completion/Linux/Type/_capabilities b/Completion/Linux/Type/_capabilities new file mode 100644 index 000000000..5a97aa335 --- /dev/null +++ b/Completion/Linux/Type/_capabilities @@ -0,0 +1,10 @@ +#autoload + +if [[ $OSTYPE != linux* ]]; then + _default; return +fi + +local -a expl matches + +_capability_names matches +_wanted capabilities expl "Linux capabilities" compadd "$@" -a - matches diff --git a/Completion/Linux/Type/_capability_names b/Completion/Linux/Type/_capability_names new file mode 100644 index 000000000..a2243b716 --- /dev/null +++ b/Completion/Linux/Type/_capability_names @@ -0,0 +1,20 @@ +#autoload + +_capability_names() { + # Stores an array of Linux task capability names under a parameter + # named by the first argument. + + if [[ $OSTYPE != linux* ]]; then + _default; return + fi + + # The list of Linux capabilities is taken from include/uapi/linux/capability.h + # and subject to the following pipe filter: + # grep 'define CAP' | sed -r 's/^[[:space:]]*#define[[:space:]]+//; s/[[:space:]]+[0-9]+$//' | tr '[[:upper:]]' '[[:lower:]]' + local -a C=( + cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend cap_audit_read cap_perfmon cap_bpf cap_checkpoint_restore + ) + set -A "$1" "${(@)C}" +} + +_capability_names "$@" -- 2.30.1