From patchwork Tue Jun 13 11:20:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Lautrbach X-Patchwork-Id: 13278532 X-Patchwork-Delegate: plautrba@redhat.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5EB3BC77B7A for ; Tue, 13 Jun 2023 11:22:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241940AbjFMLWS (ORCPT ); Tue, 13 Jun 2023 07:22:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241994AbjFMLVy (ORCPT ); Tue, 13 Jun 2023 07:21:54 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F35AE3 for ; Tue, 13 Jun 2023 04:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686655261; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1w0FE9RQ3SEkCXnf/4m0XyBQpCqt7icGJvpDub3PcFk=; b=OjG/RRNPkk45Q0xom4DitBBrEKxDRZ8h/atRBxSJni3ZjvCUjnca39vDs1knf+52BOId4x UGiDmZGNgrLtX3ndWSBhMKwO05MmR0gaQKiCloPMD/mOj05gTkCA7EtcbZ6kdXBK/PhHB9 isJ4s7k2F/APGB4GRoD9Cp+JzDmGons= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-393-eNWXXS4jMrybnFJT_2jw5g-1; Tue, 13 Jun 2023 07:21:00 -0400 X-MC-Unique: eNWXXS4jMrybnFJT_2jw5g-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E97718007D9 for ; Tue, 13 Jun 2023 11:20:59 +0000 (UTC) Received: from P1.redhat.com (unknown [10.45.225.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2477E1121314; Tue, 13 Jun 2023 11:20:59 +0000 (UTC) From: Petr Lautrbach To: selinux@vger.kernel.org Cc: vmojzis@redhat.com, Petr Lautrbach Subject: [PATCH v4 1/4] python: improve format strings for proper localization Date: Tue, 13 Jun 2023 13:20:07 +0200 Message-ID: <20230613112054.2694389-2-lautrbach@redhat.com> In-Reply-To: <20230613112054.2694389-1-lautrbach@redhat.com> References: <20230613094346.2667592-5-lautrbach@redhat.com> <20230613112054.2694389-1-lautrbach@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org If a string contains more than one unnamed argument it's hard for translators to proper localize as they don't know which value is represented by a unnamed argument. It also blocks them to use a different order of arguments which would make better sense in other languages. Fixes: $ xgettext --default-domain=python -L Python --keyword=_ --keyword=N_ ../audit2allow/audit2allow ../chcat/chcat ../semanage/semanage ../semanage/seobject.py ../sepolgen/src/sepolgen/interfaces.py ../sepolicy/sepolicy/generate.py ../sepolicy/sepolicy/gui.py ../sepolicy/sepolicy/__init__.py ../sepolicy/sepolicy/interface.py ../sepolicy/sepolicy.py ../chcat/chcat:220: warning: 'msgid' format string with unnamed arguments cannot be properly localized: The translator cannot reorder the arguments. Please consider using a format string with named arguments, and a mapping instead of a tuple for the arguments. ../semanage/seobject.py:1178: warning: 'msgid' format string with unnamed arguments cannot be properly localized: The translator cannot reorder the arguments. Please consider using a format string with named arguments, and a mapping instead of a tuple for the arguments. ... Signed-off-by: Petr Lautrbach --- python/chcat/chcat | 6 +- python/semanage/seobject.py | 130 ++++++++++++++++++------------------ 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/python/chcat/chcat b/python/chcat/chcat index 68718ec5f102..c4f592291821 100755 --- a/python/chcat/chcat +++ b/python/chcat/chcat @@ -125,7 +125,7 @@ def chcat_add(orig, newcat, objects, login_ind): if len(clist) > 1: if cat in clist[1:]: - print(_("%s is already in %s") % (f, orig)) + print(_("{target} is already in {category}").format(target=f, category=orig)) continue clist.append(cat) cats = clist[1:] @@ -207,7 +207,7 @@ def chcat_remove(orig, newcat, objects, login_ind): if len(clist) > 1: if cat not in clist[1:]: - print(_("%s is not in %s") % (f, orig)) + print(_("{target} is not in {category}").format(target=f, category=orig)) continue clist.remove(cat) if len(clist) > 1: @@ -217,7 +217,7 @@ def chcat_remove(orig, newcat, objects, login_ind): else: cat = "" else: - print(_("%s is not in %s") % (f, orig)) + print(_("{target} is not in {category}").format(target=f, category=orig)) continue if len(cat) == 0: diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py index d82da4942987..2b1eb44ce8a3 100644 --- a/python/semanage/seobject.py +++ b/python/semanage/seobject.py @@ -843,7 +843,7 @@ class seluserRecords(semanageRecords): for r in roles: rc = semanage_user_add_role(self.sh, u, r) if rc < 0: - raise ValueError(_("Could not add role %s for %s") % (r, name)) + raise ValueError(_("Could not add role {role} for {name}").format(role=r, name=name)) if is_mls_enabled == 1: rc = semanage_user_set_mlsrange(self.sh, u, serange) @@ -855,7 +855,7 @@ class seluserRecords(semanageRecords): raise ValueError(_("Could not set MLS level for %s") % name) rc = semanage_user_set_prefix(self.sh, u, prefix) if rc < 0: - raise ValueError(_("Could not add prefix %s for %s") % (r, prefix)) + raise ValueError(_("Could not add prefix {prefix} for {role}").format(role=r, prefix=prefix)) (rc, key) = semanage_user_key_extract(self.sh, u) if rc < 0: raise ValueError(_("Could not extract key for %s") % name) @@ -1088,7 +1088,7 @@ class portRecords(semanageRecords): (rc, k) = semanage_port_key_create(self.sh, low, high, proto_d) if rc < 0: - raise ValueError(_("Could not create a key for %s/%s") % (proto, port)) + raise ValueError(_("Could not create a key for {proto}/{port}").format(proto=proto, port=port)) return (k, proto_d, low, high) def __add(self, port, proto, serange, type): @@ -1110,44 +1110,44 @@ class portRecords(semanageRecords): (rc, exists) = semanage_port_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port)) + raise ValueError(_("Could not check if port {proto}/{port} is defined").format(proto=proto, port=port)) if exists: - raise ValueError(_("Port %s/%s already defined") % (proto, port)) + raise ValueError(_("Port {proto}/{port} already defined").format(proto=proto, port=port)) (rc, p) = semanage_port_create(self.sh) if rc < 0: - raise ValueError(_("Could not create port for %s/%s") % (proto, port)) + raise ValueError(_("Could not create port for {proto}/{port}").format(proto=proto, port=port)) semanage_port_set_proto(p, proto_d) semanage_port_set_range(p, low, high) (rc, con) = semanage_context_create(self.sh) if rc < 0: - raise ValueError(_("Could not create context for %s/%s") % (proto, port)) + raise ValueError(_("Could not create context for {proto}/{port}").format(proto=proto, port=port)) rc = semanage_context_set_user(self.sh, con, "system_u") if rc < 0: - raise ValueError(_("Could not set user in port context for %s/%s") % (proto, port)) + raise ValueError(_("Could not set user in port context for {proto}/{port}").format(proto=proto, port=port)) rc = semanage_context_set_role(self.sh, con, "object_r") if rc < 0: - raise ValueError(_("Could not set role in port context for %s/%s") % (proto, port)) + raise ValueError(_("Could not set role in port context for {proto}/{port}").format(proto=proto, port=port)) rc = semanage_context_set_type(self.sh, con, type) if rc < 0: - raise ValueError(_("Could not set type in port context for %s/%s") % (proto, port)) + raise ValueError(_("Could not set type in port context for {proto}/{port}").format(proto=proto, port=port)) if (is_mls_enabled == 1) and (serange != ""): rc = semanage_context_set_mls(self.sh, con, serange) if rc < 0: - raise ValueError(_("Could not set mls fields in port context for %s/%s") % (proto, port)) + raise ValueError(_("Could not set mls fields in port context for {proto}/{port}").format(proto=proto, port=port)) rc = semanage_port_set_con(self.sh, p, con) if rc < 0: - raise ValueError(_("Could not set port context for %s/%s") % (proto, port)) + raise ValueError(_("Could not set port context for {proto}/{port}").format(proto=proto, port=port)) rc = semanage_port_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not add port %s/%s") % (proto, port)) + raise ValueError(_("Could not add port {proto}/{port}").format(proto=proto, port=port)) semanage_context_free(con) semanage_port_key_free(k) @@ -1175,13 +1175,13 @@ class portRecords(semanageRecords): (rc, exists) = semanage_port_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port)) + raise ValueError(_("Could not check if port {proto}/{port} is defined").format(proto=proto, port=port)) if not exists: - raise ValueError(_("Port %s/%s is not defined") % (proto, port)) + raise ValueError(_("Port {proto}/{port} is not defined").format(proto=proto, port=port)) (rc, p) = semanage_port_query(self.sh, k) if rc < 0: - raise ValueError(_("Could not query port %s/%s") % (proto, port)) + raise ValueError(_("Could not query port {proto}/{port}").format(proto=proto, port=port)) con = semanage_port_get_con(p) @@ -1195,7 +1195,7 @@ class portRecords(semanageRecords): rc = semanage_port_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not modify port %s/%s") % (proto, port)) + raise ValueError(_("Could not modify port {proto}/{port}").format(proto=proto, port=port)) semanage_port_key_free(k) semanage_port_free(p) @@ -1241,19 +1241,19 @@ class portRecords(semanageRecords): (k, proto_d, low, high) = self.__genkey(port, proto) (rc, exists) = semanage_port_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port)) + raise ValueError(_("Could not check if port {proto}/{port} is defined").format(proto=proto, port=port)) if not exists: - raise ValueError(_("Port %s/%s is not defined") % (proto, port)) + raise ValueError(_("Port {proto}/{port} is not defined").format(proto=proto, port=port)) (rc, exists) = semanage_port_exists_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port)) + raise ValueError(_("Could not check if port {proto}/{port} is defined").format(proto=proto, port=port)) if not exists: - raise ValueError(_("Port %s/%s is defined in policy, cannot be deleted") % (proto, port)) + raise ValueError(_("Port {proto}/{port} is defined in policy, cannot be deleted").format(proto=proto, port=port)) rc = semanage_port_del_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not delete port %s/%s") % (proto, port)) + raise ValueError(_("Could not delete port {proto}/{port}").format(proto=proto, port=port)) semanage_port_key_free(k) @@ -1362,7 +1362,7 @@ class ibpkeyRecords(semanageRecords): (rc, k) = semanage_ibpkey_key_create(self.sh, subnet_prefix, low, high) if rc < 0: - raise ValueError(_("Could not create a key for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not create a key for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) return (k, subnet_prefix, low, high) def __add(self, pkey, subnet_prefix, serange, type): @@ -1384,44 +1384,44 @@ class ibpkeyRecords(semanageRecords): (rc, exists) = semanage_ibpkey_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibpkey %s/%s is defined") % (subnet_prefix, pkey)) + raise ValueError(_("Could not check if ibpkey {subnet_prefix}/{pkey} is defined").formnat(subnet_prefix=subnet_prefix, pkey=pkey)) if exists: - raise ValueError(_("ibpkey %s/%s already defined") % (subnet_prefix, pkey)) + raise ValueError(_("ibpkey {subnet_prefix}/{pkey} already defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) (rc, p) = semanage_ibpkey_create(self.sh) if rc < 0: - raise ValueError(_("Could not create ibpkey for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not create ibpkey for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) semanage_ibpkey_set_subnet_prefix(self.sh, p, subnet_prefix) semanage_ibpkey_set_range(p, low, high) (rc, con) = semanage_context_create(self.sh) if rc < 0: - raise ValueError(_("Could not create context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not create context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_context_set_user(self.sh, con, "system_u") if rc < 0: - raise ValueError(_("Could not set user in ibpkey context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not set user in ibpkey context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_context_set_role(self.sh, con, "object_r") if rc < 0: - raise ValueError(_("Could not set role in ibpkey context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not set role in ibpkey context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_context_set_type(self.sh, con, type) if rc < 0: - raise ValueError(_("Could not set type in ibpkey context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not set type in ibpkey context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) if (is_mls_enabled == 1) and (serange != ""): rc = semanage_context_set_mls(self.sh, con, serange) if rc < 0: - raise ValueError(_("Could not set mls fields in ibpkey context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not set mls fields in ibpkey context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_ibpkey_set_con(self.sh, p, con) if rc < 0: - raise ValueError(_("Could not set ibpkey context for %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not set ibpkey context for {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_ibpkey_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not add ibpkey %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not add ibpkey {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) semanage_context_free(con) semanage_ibpkey_key_free(k) @@ -1448,13 +1448,13 @@ class ibpkeyRecords(semanageRecords): (rc, exists) = semanage_ibpkey_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibpkey %s/%s is defined") % (subnet_prefix, pkey)) + raise ValueError(_("Could not check if ibpkey {subnet_prefix}/{pkey} is defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) if not exists: - raise ValueError(_("ibpkey %s/%s is not defined") % (subnet_prefix, pkey)) + raise ValueError(_("ibpkey {subnet_prefix}/{pkey} is not defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) (rc, p) = semanage_ibpkey_query(self.sh, k) if rc < 0: - raise ValueError(_("Could not query ibpkey %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not query ibpkey {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) con = semanage_ibpkey_get_con(p) @@ -1465,7 +1465,7 @@ class ibpkeyRecords(semanageRecords): rc = semanage_ibpkey_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not modify ibpkey %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not modify ibpkey {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) semanage_ibpkey_key_free(k) semanage_ibpkey_free(p) @@ -1502,19 +1502,19 @@ class ibpkeyRecords(semanageRecords): (k, subnet_prefix, low, high) = self.__genkey(pkey, subnet_prefix) (rc, exists) = semanage_ibpkey_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibpkey %s/%s is defined") % (subnet_prefix, pkey)) + raise ValueError(_("Could not check if ibpkey {subnet_prefix}/{pkey} is defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) if not exists: - raise ValueError(_("ibpkey %s/%s is not defined") % (subnet_prefix, pkey)) + raise ValueError(_("ibpkey {subnet_prefix}/{pkey} is not defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) (rc, exists) = semanage_ibpkey_exists_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibpkey %s/%s is defined") % (subnet_prefix, pkey)) + raise ValueError(_("Could not check if ibpkey {subnet_prefix}/{pkey} is defined").format(subnet_prefix=subnet_prefix, pkey=pkey)) if not exists: - raise ValueError(_("ibpkey %s/%s is defined in policy, cannot be deleted") % (subnet_prefix, pkey)) + raise ValueError(_("ibpkey {subnet_prefix}/{pkey} is defined in policy, cannot be deleted").format(subnet_prefix=subnet_prefix, pkey=pkey)) rc = semanage_ibpkey_del_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not delete ibpkey %s/%s") % (subnet_prefix, pkey)) + raise ValueError(_("Could not delete ibpkey {subnet_prefix}/{pkey}").format(subnet_prefix=subnet_prefix, pkey=pkey)) semanage_ibpkey_key_free(k) @@ -1617,7 +1617,7 @@ class ibendportRecords(semanageRecords): (rc, k) = semanage_ibendport_key_create(self.sh, ibdev_name, port) if rc < 0: - raise ValueError(_("Could not create a key for ibendport %s/%s") % (ibdev_name, ibendport)) + raise ValueError(_("Could not create a key for ibendport {ibdev_name}/{ibendport}").format(ibdev_name=ibdev_name, ibendport=ibendport)) return (k, ibdev_name, port) def __add(self, ibendport, ibdev_name, serange, type): @@ -1638,44 +1638,44 @@ class ibendportRecords(semanageRecords): (rc, exists) = semanage_ibendport_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibendport %s/%s is defined") % (ibdev_name, port)) + raise ValueError(_("Could not check if ibendport {ibdev_name}/{port} is defined").format(ibdev_name=ibdev_name, port=port)) if exists: - raise ValueError(_("ibendport %s/%s already defined") % (ibdev_name, port)) + raise ValueError(_("ibendport {ibdev_name}/{port} already defined").format(ibdev_name=ibdev_name, port=port)) (rc, p) = semanage_ibendport_create(self.sh) if rc < 0: - raise ValueError(_("Could not create ibendport for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not create ibendport for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) semanage_ibendport_set_ibdev_name(self.sh, p, ibdev_name) semanage_ibendport_set_port(p, port) (rc, con) = semanage_context_create(self.sh) if rc < 0: - raise ValueError(_("Could not create context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not create context for {ibendport}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_context_set_user(self.sh, con, "system_u") if rc < 0: - raise ValueError(_("Could not set user in ibendport context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not set user in ibendport context for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_context_set_role(self.sh, con, "object_r") if rc < 0: - raise ValueError(_("Could not set role in ibendport context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not set role in ibendport context for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_context_set_type(self.sh, con, type) if rc < 0: - raise ValueError(_("Could not set type in ibendport context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not set type in ibendport context for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) if (is_mls_enabled == 1) and (serange != ""): rc = semanage_context_set_mls(self.sh, con, serange) if rc < 0: - raise ValueError(_("Could not set mls fields in ibendport context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not set mls fields in ibendport context for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_ibendport_set_con(self.sh, p, con) if rc < 0: - raise ValueError(_("Could not set ibendport context for %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not set ibendport context for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_ibendport_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not add ibendport %s/%s") % (ibdev_name, port)) + raise ValueError(_("Could not add ibendport {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) semanage_context_free(con) semanage_ibendport_key_free(k) @@ -1702,13 +1702,13 @@ class ibendportRecords(semanageRecords): (rc, exists) = semanage_ibendport_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibendport %s/%s is defined") % (ibdev_name, ibendport)) + raise ValueError(_("Could not check if ibendport {ibdev_name}/{ibendport} is defined").format(ibdev_name=ibdev_name, ibendport=ibendport)) if not exists: - raise ValueError(_("ibendport %s/%s is not defined") % (ibdev_name, ibendport)) + raise ValueError(_("ibendport {ibdev_name}/{ibendport} is not defined").format(ibdev_name=ibdev_name, ibendport=ibendport)) (rc, p) = semanage_ibendport_query(self.sh, k) if rc < 0: - raise ValueError(_("Could not query ibendport %s/%s") % (ibdev_name, ibendport)) + raise ValueError(_("Could not query ibendport {ibdev_name}/{ibendport}").format(ibdev_name=ibdev_name, ibendport=ibendport)) con = semanage_ibendport_get_con(p) @@ -1719,7 +1719,7 @@ class ibendportRecords(semanageRecords): rc = semanage_ibendport_modify_local(self.sh, k, p) if rc < 0: - raise ValueError(_("Could not modify ibendport %s/%s") % (ibdev_name, ibendport)) + raise ValueError(_("Could not modify ibendport {ibdev_name}/{ibendport}").format(ibdev_name=ibdev_name, ibendport=ibendport)) semanage_ibendport_key_free(k) semanage_ibendport_free(p) @@ -1741,11 +1741,11 @@ class ibendportRecords(semanageRecords): port = semanage_ibendport_get_port(ibendport) (k, ibdev_name, port) = self.__genkey(str(port), ibdev_name) if rc < 0: - raise ValueError(_("Could not create a key for %s/%d") % (ibdevname, port)) + raise ValueError(_("Could not create a key for {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) rc = semanage_ibendport_del_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not delete the ibendport %s/%d") % (ibdev_name, port)) + raise ValueError(_("Could not delete the ibendport {ibdev_name}/{port}").format(ibdev_name=ibdev_name, port=port)) semanage_ibendport_key_free(k) self.commit() @@ -1754,19 +1754,19 @@ class ibendportRecords(semanageRecords): (k, ibdev_name, port) = self.__genkey(ibendport, ibdev_name) (rc, exists) = semanage_ibendport_exists(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibendport %s/%s is defined") % (ibdev_name, ibendport)) + raise ValueError(_("Could not check if ibendport {ibdev_name}/{ibendport} is defined").format(ibdev_name=ibdev_name, ibendport=ibendport)) if not exists: - raise ValueError(_("ibendport %s/%s is not defined") % (ibdev_name, ibendport)) + raise ValueError(_("ibendport {ibdev_name}/{ibendport} is not defined").format(ibdev_name=ibdev_name, ibendport=ibendport)) (rc, exists) = semanage_ibendport_exists_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not check if ibendport %s/%s is defined") % (ibdev_name, ibendport)) + raise ValueError(_("Could not check if ibendport {ibdev_name}/{ibendport} is defined").format(ibdev_name=ibdev_name, ibendport=ibendport)) if not exists: - raise ValueError(_("ibendport %s/%s is defined in policy, cannot be deleted") % (ibdev_name, ibendport)) + raise ValueError(_("ibendport {ibdev_name}/{ibendport} is defined in policy, cannot be deleted").format(ibdev_name=ibdev_name, ibendport=ibendport)) rc = semanage_ibendport_del_local(self.sh, k) if rc < 0: - raise ValueError(_("Could not delete ibendport %s/%s") % (ibdev_name, ibendport)) + raise ValueError(_("Could not delete ibendport {ibdev_name}/{ibendport}").format(ibdev_name=ibdev_name, ibendport=ibendport)) semanage_ibendport_key_free(k) @@ -2765,7 +2765,7 @@ class booleanRecords(semanageRecords): try: boolname, val = b.split("=") except ValueError: - raise ValueError(_("Bad format %s: Record %s" % (name, b))) + raise ValueError(_("Bad format {filename}: Record {record}").format(filename=name, record=b)) self.__mod(boolname.strip(), val.strip()) fd.close() else: From patchwork Tue Jun 13 11:20:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Lautrbach X-Patchwork-Id: 13278530 X-Patchwork-Delegate: plautrba@redhat.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43E2AC77B7A for ; Tue, 13 Jun 2023 11:22:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241790AbjFMLWO (ORCPT ); Tue, 13 Jun 2023 07:22:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240795AbjFMLVv (ORCPT ); Tue, 13 Jun 2023 07:21:51 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36BDD8E for ; Tue, 13 Jun 2023 04:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686655262; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i/ZY6w+Fu00OHN4vw4Swmv4zt86CJlHqc7bbIcSUThQ=; b=Lq0QlJnbZctksA5GT38H6xbLDJUqneWKo37O/PxFlpFIbYIpyroPekDUWjNCUKilDWt7VD Hcfpypx9o1qbr6uVHdPcE4NZCqb0BbBOvXBbrjMbc3DQZUUFt0gpwbBDhvPywYEkb0/tyq xaRaPh+pMvI7LUbVCUKUxuqJIIDJJYI= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-64-2DO5ocAhOPybZhCGReUSyw-1; Tue, 13 Jun 2023 07:21:01 -0400 X-MC-Unique: 2DO5ocAhOPybZhCGReUSyw-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CF74985A5A8 for ; Tue, 13 Jun 2023 11:21:00 +0000 (UTC) Received: from P1.redhat.com (unknown [10.45.225.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2EC381121315; Tue, 13 Jun 2023 11:21:00 +0000 (UTC) From: Petr Lautrbach To: selinux@vger.kernel.org Cc: vmojzis@redhat.com, Petr Lautrbach Subject: [PATCH v4 2/4] python: Drop hard formating from localized strings Date: Tue, 13 Jun 2023 13:20:08 +0200 Message-ID: <20230613112054.2694389-3-lautrbach@redhat.com> In-Reply-To: <20230613112054.2694389-1-lautrbach@redhat.com> References: <20230613094346.2667592-5-lautrbach@redhat.com> <20230613112054.2694389-1-lautrbach@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org It confuses translators and new lines are dropped by parser module anyway. Signed-off-by: Petr Lautrbach --- python/audit2allow/audit2allow | 14 ++++++-- python/semanage/semanage | 60 +++++++++++++--------------------- 2 files changed, 34 insertions(+), 40 deletions(-) diff --git a/python/audit2allow/audit2allow b/python/audit2allow/audit2allow index 5587a2dbb006..35b0b151ac86 100644 --- a/python/audit2allow/audit2allow +++ b/python/audit2allow/audit2allow @@ -234,9 +234,17 @@ class AuditToPolicy: print(e) sys.exit(1) - sys.stdout.write(_("******************** IMPORTANT ***********************\n")) - sys.stdout.write((_("To make this policy package active, execute:" + - "\n\nsemodule -i %s\n\n") % packagename)) + sys.stdout.write( +"""******************** {important} *********************** +{text} + +semodule -i {packagename} + +""".format( + important=_("IMPORTANT"), + text=_("To make this policy package active, execute:"), + packagename=packagename +)) def __output_audit2why(self): import selinux diff --git a/python/semanage/semanage b/python/semanage/semanage index e0bd98a95c77..4fdb490f7df4 100644 --- a/python/semanage/semanage +++ b/python/semanage/semanage @@ -238,30 +238,22 @@ def parser_add_level(parser, name): def parser_add_range(parser, name): - parser.add_argument('-r', '--range', default='', - help=_(''' -MLS/MCS Security Range (MLS/MCS Systems only) -SELinux Range for SELinux login mapping -defaults to the SELinux user record range. -SELinux Range for SELinux user defaults to s0. -''')) + parser.add_argument('-r', '--range', default='', help=_( + "MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping defaults to the SELinux user record range. \ +SELinux Range for SELinux user defaults to s0." + )) def parser_add_proto(parser, name): - parser.add_argument('-p', '--proto', help=_(''' - Protocol for the specified port (tcp|udp|dccp|sctp) or internet protocol - version for the specified node (ipv4|ipv6). -''')) + parser.add_argument('-p', '--proto', help=_( + "Protocol for the specified port (tcp|udp|dccp|sctp) or internet protocol version for the specified node (ipv4|ipv6)." + )) def parser_add_subnet_prefix(parser, name): - parser.add_argument('-x', '--subnet_prefix', help=_(''' - Subnet prefix for the specified infiniband ibpkey. -''')) + parser.add_argument('-x', '--subnet_prefix', help=_('Subnet prefix for the specified infiniband ibpkey.')) def parser_add_ibdev_name(parser, name): - parser.add_argument('-z', '--ibdev_name', help=_(''' - Name for the specified infiniband end port. -''')) + parser.add_argument('-z', '--ibdev_name', help=_("Name for the specified infiniband end port.")) def parser_add_modify(parser, name): parser.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_("Modify a record of the %s object type") % name) @@ -348,15 +340,6 @@ def handleFcontext(args): def setupFcontextParser(subparsers): - ftype_help = ''' -File Type. This is used with fcontext. Requires a file type -as shown in the mode field by ls, e.g. use d to match only -directories or f to match only regular files. The following -file type options can be passed: -f (regular file),d (directory),c (character device), -b (block device),s (socket),l (symbolic link),p (named pipe) -If you do not specify a file type, the file type will default to "all files". -''' generate_usage = generate_custom_usage(usage_fcontext, usage_fcontext_dict) fcontextParser = subparsers.add_parser('fcontext', usage=generate_usage, help=_("Manage file context mapping definitions")) parser_add_locallist(fcontextParser, "fcontext") @@ -372,11 +355,16 @@ If you do not specify a file type, the file type will default to "all files". parser_add_extract(fcontext_action, "fcontext") parser_add_deleteall(fcontext_action, "fcontext") - fcontextParser.add_argument('-e', '--equal', help=_('''Substitute target path with sourcepath when generating default - label. This is used with fcontext. Requires source and target - path arguments. The context labeling for the target subtree is - made equivalent to that defined for the source.''')) - fcontextParser.add_argument('-f', '--ftype', default="", choices=["a", "f", "d", "c", "b", "s", "l", "p"], help=_(ftype_help)) + fcontextParser.add_argument('-e', '--equal', help=_( + 'Substitute target path with sourcepath when generating default label. This is used with fcontext. Requires source and target \ +path arguments. The context labeling for the target subtree is made equivalent to that defined for the source.' + )) + fcontextParser.add_argument('-f', '--ftype', default="", choices=["a", "f", "d", "c", "b", "s", "l", "p"], help=_( + 'File Type. This is used with fcontext. Requires a file type as shown in the mode field by ls, e.g. use d to match only \ +directories or f to match only regular files. The following file type options can be passed: f (regular file), d (directory), \ +c (character device), b (block device), s (socket), l (symbolic link), p (named pipe). \ +If you do not specify a file type, the file type will default to "all files".' + )) parser_add_seuser(fcontextParser, "fcontext") parser_add_type(fcontextParser, "fcontext") parser_add_range(fcontextParser, "fcontext") @@ -426,9 +414,7 @@ def setupUserParser(subparsers): parser_add_range(userParser, "user") userParser.add_argument('-R', '--roles', default=[], action=CheckRole, - help=_(''' -SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify -R multiple times. -''')) + help=_("SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify -R multiple times.")) userParser.add_argument('-P', '--prefix', default="user", help=argparse.SUPPRESS) userParser.add_argument('selinux_name', nargs='?', default=None, help=_('selinux_name')) userParser.set_defaults(func=handleUser) @@ -901,9 +887,9 @@ def setupImportParser(subparsers): def createCommandParser(): commandParser = seParser(prog='semanage', formatter_class=argparse.ArgumentDefaultsHelpFormatter, - description='''semanage is used to configure certain elements - of SELinux policy with-out requiring modification - to or recompilation from policy source.''') + description=_( + "semanage is used to configure certain elements of SELinux policy with-out requiring modification or recompilation from policy source." + )) #To add a new subcommand define the parser for it in a function above and call it here. subparsers = commandParser.add_subparsers(dest='subcommand') From patchwork Tue Jun 13 11:20:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Lautrbach X-Patchwork-Id: 13278531 X-Patchwork-Delegate: plautrba@redhat.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BCC8C88CB4 for ; Tue, 13 Jun 2023 11:22:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241865AbjFMLWO (ORCPT ); Tue, 13 Jun 2023 07:22:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241824AbjFMLVu (ORCPT ); Tue, 13 Jun 2023 07:21:50 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A69092 for ; Tue, 13 Jun 2023 04:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686655263; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VlwgBeNcz9empoZtGxFVAuLzveGNsiTZgWXpLWpG7y0=; b=RH006/l81CYYY2L+oBTZwV6dUByxv28z8AJOgigF44ZQwAJaY4mxt4yj4hcRC7FtkW8zzU HquTXy+FZeRwC/Fs80xb72z0VbdUrG6nEKA5xTuLiYCOQMFEjH5nASanlQU3nJe26y2rzB XlROmyMimSt4KS9EeJQ+QSpJ0jND56I= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-128-tbYwMX3oM6m17OjEUn3Rgg-1; Tue, 13 Jun 2023 07:21:02 -0400 X-MC-Unique: tbYwMX3oM6m17OjEUn3Rgg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id ECBD429AB44A for ; Tue, 13 Jun 2023 11:21:01 +0000 (UTC) Received: from P1.redhat.com (unknown [10.45.225.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id 14E311121314; Tue, 13 Jun 2023 11:21:00 +0000 (UTC) From: Petr Lautrbach To: selinux@vger.kernel.org Cc: vmojzis@redhat.com, Petr Lautrbach Subject: [PATCH v4 3/4] semanage: Drop unnecessary import from seobject Date: Tue, 13 Jun 2023 13:20:09 +0200 Message-ID: <20230613112054.2694389-4-lautrbach@redhat.com> In-Reply-To: <20230613112054.2694389-1-lautrbach@redhat.com> References: <20230613094346.2667592-5-lautrbach@redhat.com> <20230613112054.2694389-1-lautrbach@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org sepolgen.module is not used for permissive domains Signed-off-by: Petr Lautrbach --- python/semanage/seobject.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py index 2b1eb44ce8a3..361205d11c10 100644 --- a/python/semanage/seobject.py +++ b/python/semanage/seobject.py @@ -504,11 +504,6 @@ class permissiveRecords(semanageRecords): print(t) def add(self, type): - try: - import sepolgen.module as module - except ImportError: - raise ValueError(_("The sepolgen python module is required to setup permissive domains.\nIn some distributions it is included in the policycoreutils-devel package.\n# yum install policycoreutils-devel\nOr similar for your distro.")) - name = "permissive_%s" % type modtxt = "(typepermissive %s)" % type From patchwork Tue Jun 13 11:20:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Lautrbach X-Patchwork-Id: 13278533 X-Patchwork-Delegate: plautrba@redhat.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BA5FC88CB6 for ; Tue, 13 Jun 2023 11:22:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240133AbjFMLWU (ORCPT ); Tue, 13 Jun 2023 07:22:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242006AbjFMLV7 (ORCPT ); Tue, 13 Jun 2023 07:21:59 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D386B3 for ; Tue, 13 Jun 2023 04:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686655264; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fTS/zV/pfN0ZHan78e3/OJ2Ilki65DRYltH26Czlcaw=; b=HgS0PlOTxICHC7AVWWSkUjKzKJPYhFih6k2xAMLkBQEEJwdhQmenf2cFe9vXsQpLxaH7nS kL2Bjte/ApwDneI00iIktuluOZljCDjDKoxfx1YxyjhyyBQOAHI/ep8Mg3bhLzEVcvpu0z MY05FFXUZ5X5m8dkJ4yDkFPXspmu3tQ= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-96-F2VTZVOIMVaq4O3TxkEJqA-1; Tue, 13 Jun 2023 07:21:03 -0400 X-MC-Unique: F2VTZVOIMVaq4O3TxkEJqA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 09627803DBC for ; Tue, 13 Jun 2023 11:21:03 +0000 (UTC) Received: from P1.redhat.com (unknown [10.45.225.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id 333931121314; Tue, 13 Jun 2023 11:21:02 +0000 (UTC) From: Petr Lautrbach To: selinux@vger.kernel.org Cc: vmojzis@redhat.com, Petr Lautrbach Subject: [PATCH v4 4/4] python: update python.pot Date: Tue, 13 Jun 2023 13:20:10 +0200 Message-ID: <20230613112054.2694389-5-lautrbach@redhat.com> In-Reply-To: <20230613112054.2694389-1-lautrbach@redhat.com> References: <20230613094346.2667592-5-lautrbach@redhat.com> <20230613112054.2694389-1-lautrbach@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Signed-off-by: Petr Lautrbach Reviewed-by: Vit Mojzis Acked-by: James Carter --- python/po/python.pot | 963 ++++++++++++++++++++++--------------------- 1 file changed, 487 insertions(+), 476 deletions(-) diff --git a/python/po/python.pot b/python/po/python.pot index 16d04eb0f18e..435a1b764e34 100644 --- a/python/po/python.pot +++ b/python/po/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-18 11:57+0100\n" +"POT-Creation-Date: 2023-06-12 18:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,17 +17,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../audit2allow/audit2allow:239 -msgid "******************** IMPORTANT ***********************\n" +#: ../audit2allow/audit2allow:244 +msgid "IMPORTANT" msgstr "" -#: ../audit2allow/audit2allow:240 -#, python-format -msgid "" -"To make this policy package active, execute:\n" -"\n" -"semodule -i %s\n" -"\n" +#: ../audit2allow/audit2allow:245 +msgid "To make this policy package active, execute:" msgstr "" #: ../chcat/chcat:111 ../chcat/chcat:191 @@ -40,13 +35,13 @@ msgid "Can not modify sensitivity levels using '+' on %s" msgstr "" #: ../chcat/chcat:128 -#, python-format -msgid "%s is already in %s" +#, python-brace-format +msgid "{target} is already in {category}" msgstr "" #: ../chcat/chcat:210 ../chcat/chcat:220 -#, python-format -msgid "%s is not in %s" +#, python-brace-format +msgid "{target} is not in {category}" msgstr "" #: ../chcat/chcat:291 ../chcat/chcat:296 @@ -152,218 +147,222 @@ msgstr "" #: ../semanage/semanage:242 msgid "" -"\n" -"MLS/MCS Security Range (MLS/MCS Systems only)\n" -"SELinux Range for SELinux login mapping\n" -"defaults to the SELinux user record range.\n" -"SELinux Range for SELinux user defaults to s0.\n" +"MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux " +"login mapping defaults to the SELinux user record range. SELinux Range for " +"SELinux user defaults to s0." msgstr "" -#: ../semanage/semanage:251 +#: ../semanage/semanage:249 msgid "" -"\n" -" Protocol for the specified port (tcp|udp|dccp|sctp) or internet " -"protocol\n" -" version for the specified node (ipv4|ipv6).\n" +"Protocol for the specified port (tcp|udp|dccp|sctp) or internet protocol " +"version for the specified node (ipv4|ipv6)." msgstr "" -#: ../semanage/semanage:257 -msgid "" -"\n" -" Subnet prefix for the specified infiniband ibpkey.\n" +#: ../semanage/semanage:253 +msgid "Subnet prefix for the specified infiniband ibpkey." msgstr "" -#: ../semanage/semanage:262 -msgid "" -"\n" -" Name for the specified infiniband end port.\n" +#: ../semanage/semanage:256 +msgid "Name for the specified infiniband end port." msgstr "" -#: ../semanage/semanage:267 +#: ../semanage/semanage:259 #, python-format msgid "Modify a record of the %s object type" msgstr "" -#: ../semanage/semanage:271 +#: ../semanage/semanage:263 #, python-format msgid "List records of the %s object type" msgstr "" -#: ../semanage/semanage:275 +#: ../semanage/semanage:267 #, python-format msgid "Delete a record of the %s object type" msgstr "" -#: ../semanage/semanage:279 +#: ../semanage/semanage:271 msgid "Extract customizable commands, for use within a transaction" msgstr "" -#: ../semanage/semanage:283 +#: ../semanage/semanage:275 #, python-format msgid "Remove all %s objects local customizations" msgstr "" -#: ../semanage/semanage:287 +#: ../semanage/semanage:279 msgid "SELinux user name" msgstr "" -#: ../semanage/semanage:292 +#: ../semanage/semanage:284 msgid "Manage login mappings between linux users and SELinux confined users" msgstr "" -#: ../semanage/semanage:309 +#: ../semanage/semanage:301 #, python-format msgid "login_name | %%groupname" msgstr "" -#: ../semanage/semanage:361 +#: ../semanage/semanage:344 msgid "Manage file context mapping definitions" msgstr "" -#: ../semanage/semanage:375 +#: ../semanage/semanage:359 +msgid "" +"Substitute target path with sourcepath when generating default label. This " +"is used with fcontext. Requires source and target path arguments. The " +"context labeling for the target subtree is made equivalent to that defined " +"for the source." +msgstr "" + +#: ../semanage/semanage:363 msgid "" -"Substitute target path with sourcepath when generating default\n" -" label. " -"This is used with fcontext. Requires source and target\n" -" path " -"arguments. The context labeling for the target subtree is\n" -" made " -"equivalent to that defined for the source." +"File Type. This is used with fcontext. Requires a file type as shown in the " +"mode field by ls, e.g. use d to match only directories or f to match only " +"regular files. The following file type options can be passed: f (regular " +"file), d (directory), c (character device), b (block device), s (socket), l " +"(symbolic link), p (named pipe). If you do not specify a file type, the file " +"type will default to \"all files\"." msgstr "" -#: ../semanage/semanage:383 +#: ../semanage/semanage:371 msgid "" "Path to be labeled (may be in the form of a Perl compatible regular " "expression)" msgstr "" -#: ../semanage/semanage:411 +#: ../semanage/semanage:399 msgid "Manage SELinux confined users (Roles and levels for an SELinux user)" msgstr "" -#: ../semanage/semanage:429 +#: ../semanage/semanage:417 msgid "" -"\n" -"SELinux Roles. You must enclose multiple roles within quotes, separate by " -"spaces. Or specify -R multiple times.\n" +"SELinux Roles. You must enclose multiple roles within quotes, separate by " +"spaces. Or specify -R multiple times." msgstr "" -#: ../semanage/semanage:433 +#: ../semanage/semanage:419 msgid "selinux_name" msgstr "" -#: ../semanage/semanage:461 +#: ../semanage/semanage:447 msgid "Manage network port type definitions" msgstr "" -#: ../semanage/semanage:477 +#: ../semanage/semanage:463 msgid "port | port_range" msgstr "" -#: ../semanage/semanage:506 +#: ../semanage/semanage:492 msgid "Manage infiniband ibpkey type definitions" msgstr "" -#: ../semanage/semanage:522 +#: ../semanage/semanage:508 msgid "pkey | pkey_range" msgstr "" -#: ../semanage/semanage:549 +#: ../semanage/semanage:535 msgid "Manage infiniband end port type definitions" msgstr "" -#: ../semanage/semanage:565 +#: ../semanage/semanage:551 msgid "ibendport" msgstr "" -#: ../semanage/semanage:592 +#: ../semanage/semanage:578 msgid "Manage network interface type definitions" msgstr "" -#: ../semanage/semanage:607 +#: ../semanage/semanage:593 msgid "interface_spec" msgstr "" -#: ../semanage/semanage:631 +#: ../semanage/semanage:617 msgid "Manage SELinux policy modules" msgstr "" -#: ../semanage/semanage:642 +#: ../semanage/semanage:628 msgid "Add a module" msgstr "" -#: ../semanage/semanage:643 +#: ../semanage/semanage:629 msgid "Remove a module" msgstr "" -#: ../semanage/semanage:644 +#: ../semanage/semanage:630 msgid "Disable a module" msgstr "" -#: ../semanage/semanage:645 +#: ../semanage/semanage:631 msgid "Enable a module" msgstr "" -#: ../semanage/semanage:672 +#: ../semanage/semanage:658 msgid "Manage network node type definitions" msgstr "" -#: ../semanage/semanage:686 +#: ../semanage/semanage:672 msgid "Network Mask" msgstr "" -#: ../semanage/semanage:690 +#: ../semanage/semanage:676 msgid "node" msgstr "" -#: ../semanage/semanage:715 +#: ../semanage/semanage:701 msgid "Manage booleans to selectively enable functionality" msgstr "" -#: ../semanage/semanage:720 +#: ../semanage/semanage:706 msgid "boolean" msgstr "" -#: ../semanage/semanage:730 +#: ../semanage/semanage:716 msgid "Enable the boolean" msgstr "" -#: ../semanage/semanage:731 +#: ../semanage/semanage:717 msgid "Disable the boolean" msgstr "" -#: ../semanage/semanage:752 +#: ../semanage/semanage:738 msgid "semanage permissive: error: the following argument is required: type\n" msgstr "" -#: ../semanage/semanage:756 +#: ../semanage/semanage:742 msgid "Manage process type enforcement mode" msgstr "" -#: ../semanage/semanage:768 ../semanage/seobject.py:2677 +#: ../semanage/semanage:754 ../semanage/seobject.py:2672 msgid "type" msgstr "" -#: ../semanage/semanage:779 +#: ../semanage/semanage:765 msgid "Disable/Enable dontaudit rules in policy" msgstr "" -#: ../semanage/semanage:799 +#: ../semanage/semanage:785 msgid "Output local customizations" msgstr "" -#: ../semanage/semanage:801 +#: ../semanage/semanage:787 msgid "Output file" msgstr "" -#: ../semanage/semanage:894 +#: ../semanage/semanage:880 msgid "Import local customizations" msgstr "" -#: ../semanage/semanage:897 +#: ../semanage/semanage:883 msgid "Input file" msgstr "" +#: ../semanage/semanage:891 +msgid "" +"semanage is used to configure certain elements of SELinux policy with-out " +"requiring modification or recompilation from policy source." +msgstr "" + #: ../semanage/seobject.py:279 msgid "Could not create semanage handle" msgstr "" @@ -485,123 +484,115 @@ msgstr "" msgid "Customized Permissive Types" msgstr "" -#: ../semanage/seobject.py:510 -msgid "" -"The sepolgen python module is required to setup permissive domains.\n" -"In some distributions it is included in the policycoreutils-devel package.\n" -"# yum install policycoreutils-devel\n" -"Or similar for your distro." -msgstr "" - -#: ../semanage/seobject.py:520 +#: ../semanage/seobject.py:515 #, python-format msgid "Could not set permissive domain %s (module installation failed)" msgstr "" -#: ../semanage/seobject.py:526 +#: ../semanage/seobject.py:521 #, python-format msgid "Could not remove permissive domain %s (remove failed)" msgstr "" -#: ../semanage/seobject.py:563 ../semanage/seobject.py:633 -#: ../semanage/seobject.py:678 ../semanage/seobject.py:797 -#: ../semanage/seobject.py:827 ../semanage/seobject.py:892 -#: ../semanage/seobject.py:948 ../semanage/seobject.py:1226 -#: ../semanage/seobject.py:1492 ../semanage/seobject.py:2502 -#: ../semanage/seobject.py:2575 ../semanage/seobject.py:2599 -#: ../semanage/seobject.py:2730 ../semanage/seobject.py:2781 +#: ../semanage/seobject.py:558 ../semanage/seobject.py:628 +#: ../semanage/seobject.py:673 ../semanage/seobject.py:792 +#: ../semanage/seobject.py:822 ../semanage/seobject.py:887 +#: ../semanage/seobject.py:943 ../semanage/seobject.py:1221 +#: ../semanage/seobject.py:1487 ../semanage/seobject.py:2497 +#: ../semanage/seobject.py:2570 ../semanage/seobject.py:2594 +#: ../semanage/seobject.py:2725 ../semanage/seobject.py:2776 #, python-format msgid "Could not create a key for %s" msgstr "" -#: ../semanage/seobject.py:567 ../semanage/seobject.py:637 -#: ../semanage/seobject.py:682 ../semanage/seobject.py:688 +#: ../semanage/seobject.py:562 ../semanage/seobject.py:632 +#: ../semanage/seobject.py:677 ../semanage/seobject.py:683 #, python-format msgid "Could not check if login mapping for %s is defined" msgstr "" -#: ../semanage/seobject.py:569 +#: ../semanage/seobject.py:564 #, python-format msgid "Login mapping for %s is already defined" msgstr "" -#: ../semanage/seobject.py:574 +#: ../semanage/seobject.py:569 #, python-format msgid "Linux Group %s does not exist" msgstr "" -#: ../semanage/seobject.py:579 +#: ../semanage/seobject.py:574 #, python-format msgid "Linux User %s does not exist" msgstr "" -#: ../semanage/seobject.py:583 +#: ../semanage/seobject.py:578 #, python-format msgid "Could not create login mapping for %s" msgstr "" -#: ../semanage/seobject.py:587 ../semanage/seobject.py:841 +#: ../semanage/seobject.py:582 ../semanage/seobject.py:836 #, python-format msgid "Could not set name for %s" msgstr "" -#: ../semanage/seobject.py:592 ../semanage/seobject.py:851 +#: ../semanage/seobject.py:587 ../semanage/seobject.py:846 #, python-format msgid "Could not set MLS range for %s" msgstr "" -#: ../semanage/seobject.py:596 +#: ../semanage/seobject.py:591 #, python-format msgid "Could not set SELinux user for %s" msgstr "" -#: ../semanage/seobject.py:600 +#: ../semanage/seobject.py:595 #, python-format msgid "Could not add login mapping for %s" msgstr "" -#: ../semanage/seobject.py:616 +#: ../semanage/seobject.py:611 msgid "Requires seuser or serange" msgstr "" -#: ../semanage/seobject.py:639 ../semanage/seobject.py:684 +#: ../semanage/seobject.py:634 ../semanage/seobject.py:679 #, python-format msgid "Login mapping for %s is not defined" msgstr "" -#: ../semanage/seobject.py:643 +#: ../semanage/seobject.py:638 #, python-format msgid "Could not query seuser for %s" msgstr "" -#: ../semanage/seobject.py:658 +#: ../semanage/seobject.py:653 #, python-format msgid "Could not modify login mapping for %s" msgstr "" -#: ../semanage/seobject.py:690 +#: ../semanage/seobject.py:685 #, python-format msgid "Login mapping for %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:694 +#: ../semanage/seobject.py:689 #, python-format msgid "Could not delete login mapping for %s" msgstr "" -#: ../semanage/seobject.py:713 ../semanage/seobject.py:745 -#: ../semanage/seobject.py:991 +#: ../semanage/seobject.py:708 ../semanage/seobject.py:740 +#: ../semanage/seobject.py:986 msgid "Could not list login mappings" msgstr "" -#: ../semanage/seobject.py:772 ../semanage/seobject.py:784 +#: ../semanage/seobject.py:767 ../semanage/seobject.py:779 #: ../sepolicy/sepolicy/sepolicy.glade:1156 #: ../sepolicy/sepolicy/sepolicy.glade:3138 msgid "Login Name" msgstr "" -#: ../semanage/seobject.py:772 ../semanage/seobject.py:784 -#: ../semanage/seobject.py:1041 ../semanage/seobject.py:1046 +#: ../semanage/seobject.py:767 ../semanage/seobject.py:779 +#: ../semanage/seobject.py:1036 ../semanage/seobject.py:1041 #: ../sepolicy/sepolicy/sepolicy.glade:1182 #: ../sepolicy/sepolicy/sepolicy.glade:3156 #: ../sepolicy/sepolicy/sepolicy.glade:3242 @@ -609,938 +600,958 @@ msgstr "" msgid "SELinux User" msgstr "" -#: ../semanage/seobject.py:772 +#: ../semanage/seobject.py:767 msgid "MLS/MCS Range" msgstr "" -#: ../semanage/seobject.py:772 +#: ../semanage/seobject.py:767 msgid "Service" msgstr "" -#: ../semanage/seobject.py:800 ../semanage/seobject.py:831 -#: ../semanage/seobject.py:896 ../semanage/seobject.py:952 -#: ../semanage/seobject.py:958 +#: ../semanage/seobject.py:795 ../semanage/seobject.py:826 +#: ../semanage/seobject.py:891 ../semanage/seobject.py:947 +#: ../semanage/seobject.py:953 #, python-format msgid "Could not check if SELinux user %s is defined" msgstr "" -#: ../semanage/seobject.py:803 ../semanage/seobject.py:902 -#: ../semanage/seobject.py:964 +#: ../semanage/seobject.py:798 ../semanage/seobject.py:897 +#: ../semanage/seobject.py:959 #, python-format msgid "Could not query user for %s" msgstr "" -#: ../semanage/seobject.py:823 +#: ../semanage/seobject.py:818 #, python-format msgid "You must add at least one role for %s" msgstr "" -#: ../semanage/seobject.py:833 +#: ../semanage/seobject.py:828 #, python-format msgid "SELinux user %s is already defined" msgstr "" -#: ../semanage/seobject.py:837 +#: ../semanage/seobject.py:832 #, python-format msgid "Could not create SELinux user for %s" msgstr "" -#: ../semanage/seobject.py:846 -#, python-format -msgid "Could not add role %s for %s" +#: ../semanage/seobject.py:841 +#, python-brace-format +msgid "Could not add role {role} for {name}" msgstr "" -#: ../semanage/seobject.py:855 +#: ../semanage/seobject.py:850 #, python-format msgid "Could not set MLS level for %s" msgstr "" -#: ../semanage/seobject.py:858 -#, python-format -msgid "Could not add prefix %s for %s" +#: ../semanage/seobject.py:853 +#, python-brace-format +msgid "Could not add prefix {prefix} for {role}" msgstr "" -#: ../semanage/seobject.py:861 +#: ../semanage/seobject.py:856 #, python-format msgid "Could not extract key for %s" msgstr "" -#: ../semanage/seobject.py:865 +#: ../semanage/seobject.py:860 #, python-format msgid "Could not add SELinux user %s" msgstr "" -#: ../semanage/seobject.py:886 +#: ../semanage/seobject.py:881 msgid "Requires prefix, roles, level or range" msgstr "" -#: ../semanage/seobject.py:888 +#: ../semanage/seobject.py:883 msgid "Requires prefix or roles" msgstr "" -#: ../semanage/seobject.py:898 ../semanage/seobject.py:954 +#: ../semanage/seobject.py:893 ../semanage/seobject.py:949 #, python-format msgid "SELinux user %s is not defined" msgstr "" -#: ../semanage/seobject.py:927 +#: ../semanage/seobject.py:922 #, python-format msgid "Could not modify SELinux user %s" msgstr "" -#: ../semanage/seobject.py:960 +#: ../semanage/seobject.py:955 #, python-format msgid "SELinux user %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:971 +#: ../semanage/seobject.py:966 #, python-format msgid "Could not delete SELinux user %s" msgstr "" -#: ../semanage/seobject.py:1009 +#: ../semanage/seobject.py:1004 msgid "Could not list SELinux users" msgstr "" -#: ../semanage/seobject.py:1015 +#: ../semanage/seobject.py:1010 #, python-format msgid "Could not list roles for user %s" msgstr "" -#: ../semanage/seobject.py:1040 +#: ../semanage/seobject.py:1035 msgid "Labeling" msgstr "" -#: ../semanage/seobject.py:1040 +#: ../semanage/seobject.py:1035 msgid "MLS/" msgstr "" -#: ../semanage/seobject.py:1041 +#: ../semanage/seobject.py:1036 msgid "Prefix" msgstr "" -#: ../semanage/seobject.py:1041 +#: ../semanage/seobject.py:1036 msgid "MCS Level" msgstr "" -#: ../semanage/seobject.py:1041 +#: ../semanage/seobject.py:1036 msgid "MCS Range" msgstr "" -#: ../semanage/seobject.py:1041 ../semanage/seobject.py:1046 +#: ../semanage/seobject.py:1036 ../semanage/seobject.py:1041 #: ../sepolicy/sepolicy/sepolicy.glade:3262 #: ../sepolicy/sepolicy/sepolicy.glade:5233 #: ../sepolicy/sepolicy/sepolicy.glade:5382 msgid "SELinux Roles" msgstr "" -#: ../semanage/seobject.py:1071 +#: ../semanage/seobject.py:1066 msgid "Protocol has to be one of udp, tcp, dccp or sctp" msgstr "" -#: ../semanage/seobject.py:1073 +#: ../semanage/seobject.py:1068 msgid "Port is required" msgstr "" -#: ../semanage/seobject.py:1087 +#: ../semanage/seobject.py:1082 msgid "Invalid Port" msgstr "" -#: ../semanage/seobject.py:1091 ../semanage/seobject.py:1365 -#, python-format -msgid "Could not create a key for %s/%s" +#: ../semanage/seobject.py:1086 +#, python-brace-format +msgid "Could not create a key for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1102 ../semanage/seobject.py:1376 -#: ../semanage/seobject.py:1631 +#: ../semanage/seobject.py:1097 ../semanage/seobject.py:1371 +#: ../semanage/seobject.py:1626 msgid "Type is required" msgstr "" -#: ../semanage/seobject.py:1107 ../semanage/seobject.py:1172 +#: ../semanage/seobject.py:1102 ../semanage/seobject.py:1167 #, python-format msgid "Type %s is invalid, must be a port type" msgstr "" -#: ../semanage/seobject.py:1113 ../semanage/seobject.py:1178 -#: ../semanage/seobject.py:1244 ../semanage/seobject.py:1250 -#, python-format -msgid "Could not check if port %s/%s is defined" +#: ../semanage/seobject.py:1108 ../semanage/seobject.py:1173 +#: ../semanage/seobject.py:1239 ../semanage/seobject.py:1245 +#, python-brace-format +msgid "Could not check if port {proto}/{port} is defined" msgstr "" -#: ../semanage/seobject.py:1115 -#, python-format -msgid "Port %s/%s already defined" +#: ../semanage/seobject.py:1110 +#, python-brace-format +msgid "Port {proto}/{port} already defined" msgstr "" -#: ../semanage/seobject.py:1119 -#, python-format -msgid "Could not create port for %s/%s" +#: ../semanage/seobject.py:1114 +#, python-brace-format +msgid "Could not create port for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1125 ../semanage/seobject.py:1399 -#: ../semanage/seobject.py:1653 -#, python-format -msgid "Could not create context for %s/%s" +#: ../semanage/seobject.py:1120 +#, python-brace-format +msgid "Could not create context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1129 -#, python-format -msgid "Could not set user in port context for %s/%s" +#: ../semanage/seobject.py:1124 +#, python-brace-format +msgid "Could not set user in port context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1133 -#, python-format -msgid "Could not set role in port context for %s/%s" +#: ../semanage/seobject.py:1128 +#, python-brace-format +msgid "Could not set role in port context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1137 -#, python-format -msgid "Could not set type in port context for %s/%s" +#: ../semanage/seobject.py:1132 +#, python-brace-format +msgid "Could not set type in port context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1142 -#, python-format -msgid "Could not set mls fields in port context for %s/%s" +#: ../semanage/seobject.py:1137 +#, python-brace-format +msgid "Could not set mls fields in port context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1146 -#, python-format -msgid "Could not set port context for %s/%s" +#: ../semanage/seobject.py:1141 +#, python-brace-format +msgid "Could not set port context for {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1150 -#, python-format -msgid "Could not add port %s/%s" +#: ../semanage/seobject.py:1145 +#, python-brace-format +msgid "Could not add port {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1166 ../semanage/seobject.py:1438 -#: ../semanage/seobject.py:1692 ../semanage/seobject.py:1970 -#: ../semanage/seobject.py:2176 +#: ../semanage/seobject.py:1161 ../semanage/seobject.py:1433 +#: ../semanage/seobject.py:1687 ../semanage/seobject.py:1965 +#: ../semanage/seobject.py:2171 msgid "Requires setype or serange" msgstr "" -#: ../semanage/seobject.py:1168 ../semanage/seobject.py:1440 -#: ../semanage/seobject.py:1694 +#: ../semanage/seobject.py:1163 ../semanage/seobject.py:1435 +#: ../semanage/seobject.py:1689 msgid "Requires setype" msgstr "" -#: ../semanage/seobject.py:1180 ../semanage/seobject.py:1246 -#, python-format -msgid "Port %s/%s is not defined" +#: ../semanage/seobject.py:1175 ../semanage/seobject.py:1241 +#, python-brace-format +msgid "Port {proto}/{port} is not defined" msgstr "" -#: ../semanage/seobject.py:1184 -#, python-format -msgid "Could not query port %s/%s" +#: ../semanage/seobject.py:1179 +#, python-brace-format +msgid "Could not query port {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1198 -#, python-format -msgid "Could not modify port %s/%s" +#: ../semanage/seobject.py:1193 +#, python-brace-format +msgid "Could not modify port {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1213 +#: ../semanage/seobject.py:1208 msgid "Could not list the ports" msgstr "" -#: ../semanage/seobject.py:1230 +#: ../semanage/seobject.py:1225 #, python-format msgid "Could not delete the port %s" msgstr "" -#: ../semanage/seobject.py:1252 -#, python-format -msgid "Port %s/%s is defined in policy, cannot be deleted" +#: ../semanage/seobject.py:1247 +#, python-brace-format +msgid "Port {proto}/{port} is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:1256 -#, python-format -msgid "Could not delete port %s/%s" +#: ../semanage/seobject.py:1251 +#, python-brace-format +msgid "Could not delete port {proto}/{port}" msgstr "" -#: ../semanage/seobject.py:1274 ../semanage/seobject.py:1294 +#: ../semanage/seobject.py:1269 ../semanage/seobject.py:1289 msgid "Could not list ports" msgstr "" -#: ../semanage/seobject.py:1329 ../sepolicy/sepolicy/sepolicy.glade:2668 +#: ../semanage/seobject.py:1324 ../sepolicy/sepolicy/sepolicy.glade:2668 #: ../sepolicy/sepolicy/sepolicy.glade:2766 #: ../sepolicy/sepolicy/sepolicy.glade:4630 msgid "SELinux Port Type" msgstr "" -#: ../semanage/seobject.py:1329 +#: ../semanage/seobject.py:1324 msgid "Proto" msgstr "" -#: ../semanage/seobject.py:1329 ../semanage/seobject.py:1835 +#: ../semanage/seobject.py:1324 ../semanage/seobject.py:1830 #: ../sepolicy/sepolicy/sepolicy.glade:1407 msgid "Port Number" msgstr "" -#: ../semanage/seobject.py:1351 +#: ../semanage/seobject.py:1346 msgid "Subnet Prefix is required" msgstr "" -#: ../semanage/seobject.py:1361 +#: ../semanage/seobject.py:1356 msgid "Invalid Pkey" msgstr "" -#: ../semanage/seobject.py:1381 ../semanage/seobject.py:1445 +#: ../semanage/seobject.py:1360 +#, python-brace-format +msgid "Could not create a key for {subnet_prefix}/{pkey}" +msgstr "" + +#: ../semanage/seobject.py:1376 ../semanage/seobject.py:1440 #, python-format msgid "Type %s is invalid, must be a ibpkey type" msgstr "" -#: ../semanage/seobject.py:1387 ../semanage/seobject.py:1451 -#: ../semanage/seobject.py:1505 ../semanage/seobject.py:1511 -#, python-format -msgid "Could not check if ibpkey %s/%s is defined" +#: ../semanage/seobject.py:1382 ../semanage/seobject.py:1446 +#: ../semanage/seobject.py:1500 ../semanage/seobject.py:1506 +#, python-brace-format +msgid "Could not check if ibpkey {subnet_prefix}/{pkey} is defined" msgstr "" -#: ../semanage/seobject.py:1389 -#, python-format -msgid "ibpkey %s/%s already defined" +#: ../semanage/seobject.py:1384 +#, python-brace-format +msgid "ibpkey {subnet_prefix}/{pkey} already defined" msgstr "" -#: ../semanage/seobject.py:1393 -#, python-format -msgid "Could not create ibpkey for %s/%s" +#: ../semanage/seobject.py:1388 +#, python-brace-format +msgid "Could not create ibpkey for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1403 -#, python-format -msgid "Could not set user in ibpkey context for %s/%s" +#: ../semanage/seobject.py:1394 +#, python-brace-format +msgid "Could not create context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1407 -#, python-format -msgid "Could not set role in ibpkey context for %s/%s" +#: ../semanage/seobject.py:1398 +#, python-brace-format +msgid "Could not set user in ibpkey context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1411 -#, python-format -msgid "Could not set type in ibpkey context for %s/%s" +#: ../semanage/seobject.py:1402 +#, python-brace-format +msgid "Could not set role in ibpkey context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1416 -#, python-format -msgid "Could not set mls fields in ibpkey context for %s/%s" +#: ../semanage/seobject.py:1406 +#, python-brace-format +msgid "Could not set type in ibpkey context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1420 -#, python-format -msgid "Could not set ibpkey context for %s/%s" +#: ../semanage/seobject.py:1411 +#, python-brace-format +msgid "Could not set mls fields in ibpkey context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1424 -#, python-format -msgid "Could not add ibpkey %s/%s" +#: ../semanage/seobject.py:1415 +#, python-brace-format +msgid "Could not set ibpkey context for {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1453 ../semanage/seobject.py:1507 -#, python-format -msgid "ibpkey %s/%s is not defined" +#: ../semanage/seobject.py:1419 +#, python-brace-format +msgid "Could not add ibpkey {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1457 -#, python-format -msgid "Could not query ibpkey %s/%s" +#: ../semanage/seobject.py:1448 ../semanage/seobject.py:1502 +#, python-brace-format +msgid "ibpkey {subnet_prefix}/{pkey} is not defined" msgstr "" -#: ../semanage/seobject.py:1468 -#, python-format -msgid "Could not modify ibpkey %s/%s" +#: ../semanage/seobject.py:1452 +#, python-brace-format +msgid "Could not query ibpkey {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1481 +#: ../semanage/seobject.py:1463 +#, python-brace-format +msgid "Could not modify ibpkey {subnet_prefix}/{pkey}" +msgstr "" + +#: ../semanage/seobject.py:1476 msgid "Could not list the ibpkeys" msgstr "" -#: ../semanage/seobject.py:1496 +#: ../semanage/seobject.py:1491 #, python-format msgid "Could not delete the ibpkey %s" msgstr "" -#: ../semanage/seobject.py:1513 -#, python-format -msgid "ibpkey %s/%s is defined in policy, cannot be deleted" +#: ../semanage/seobject.py:1508 +#, python-brace-format +msgid "ibpkey {subnet_prefix}/{pkey} is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:1517 -#, python-format -msgid "Could not delete ibpkey %s/%s" +#: ../semanage/seobject.py:1512 +#, python-brace-format +msgid "Could not delete ibpkey {subnet_prefix}/{pkey}" msgstr "" -#: ../semanage/seobject.py:1533 ../semanage/seobject.py:1554 +#: ../semanage/seobject.py:1528 ../semanage/seobject.py:1549 msgid "Could not list ibpkeys" msgstr "" -#: ../semanage/seobject.py:1589 +#: ../semanage/seobject.py:1584 msgid "SELinux IB Pkey Type" msgstr "" -#: ../semanage/seobject.py:1589 +#: ../semanage/seobject.py:1584 msgid "Subnet_Prefix" msgstr "" -#: ../semanage/seobject.py:1589 +#: ../semanage/seobject.py:1584 msgid "Pkey Number" msgstr "" -#: ../semanage/seobject.py:1611 +#: ../semanage/seobject.py:1606 msgid "IB device name is required" msgstr "" -#: ../semanage/seobject.py:1616 +#: ../semanage/seobject.py:1611 msgid "Invalid Port Number" msgstr "" -#: ../semanage/seobject.py:1620 -#, python-format -msgid "Could not create a key for ibendport %s/%s" +#: ../semanage/seobject.py:1615 +#, python-brace-format +msgid "Could not create a key for ibendport {ibdev_name}/{ibendport}" msgstr "" -#: ../semanage/seobject.py:1636 ../semanage/seobject.py:1699 +#: ../semanage/seobject.py:1631 ../semanage/seobject.py:1694 #, python-format msgid "Type %s is invalid, must be an ibendport type" msgstr "" -#: ../semanage/seobject.py:1641 ../semanage/seobject.py:1705 -#: ../semanage/seobject.py:1757 ../semanage/seobject.py:1763 -#, python-format -msgid "Could not check if ibendport %s/%s is defined" +#: ../semanage/seobject.py:1636 +#, python-brace-format +msgid "Could not check if ibendport {ibdev_name}/{port} is defined" msgstr "" -#: ../semanage/seobject.py:1643 -#, python-format -msgid "ibendport %s/%s already defined" +#: ../semanage/seobject.py:1638 +#, python-brace-format +msgid "ibendport {ibdev_name}/{port} already defined" msgstr "" -#: ../semanage/seobject.py:1647 -#, python-format -msgid "Could not create ibendport for %s/%s" +#: ../semanage/seobject.py:1642 +#, python-brace-format +msgid "Could not create ibendport for {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1657 -#, python-format -msgid "Could not set user in ibendport context for %s/%s" +#: ../semanage/seobject.py:1648 +#, python-brace-format +msgid "Could not create context for {ibendport}/{port}" msgstr "" -#: ../semanage/seobject.py:1661 -#, python-format -msgid "Could not set role in ibendport context for %s/%s" +#: ../semanage/seobject.py:1652 +#, python-brace-format +msgid "Could not set user in ibendport context for {ibdev_name}/{port}" +msgstr "" + +#: ../semanage/seobject.py:1656 +#, python-brace-format +msgid "Could not set role in ibendport context for {ibdev_name}/{port}" +msgstr "" + +#: ../semanage/seobject.py:1660 +#, python-brace-format +msgid "Could not set type in ibendport context for {ibdev_name}/{port}" msgstr "" #: ../semanage/seobject.py:1665 -#, python-format -msgid "Could not set type in ibendport context for %s/%s" +#, python-brace-format +msgid "Could not set mls fields in ibendport context for {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1670 -#, python-format -msgid "Could not set mls fields in ibendport context for %s/%s" +#: ../semanage/seobject.py:1669 +#, python-brace-format +msgid "Could not set ibendport context for {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1674 -#, python-format -msgid "Could not set ibendport context for %s/%s" +#: ../semanage/seobject.py:1673 +#, python-brace-format +msgid "Could not add ibendport {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1678 -#, python-format -msgid "Could not add ibendport %s/%s" +#: ../semanage/seobject.py:1700 ../semanage/seobject.py:1752 +#: ../semanage/seobject.py:1758 +#, python-brace-format +msgid "Could not check if ibendport {ibdev_name}/{ibendport} is defined" msgstr "" -#: ../semanage/seobject.py:1707 ../semanage/seobject.py:1759 -#, python-format -msgid "ibendport %s/%s is not defined" +#: ../semanage/seobject.py:1702 ../semanage/seobject.py:1754 +#, python-brace-format +msgid "ibendport {ibdev_name}/{ibendport} is not defined" msgstr "" -#: ../semanage/seobject.py:1711 -#, python-format -msgid "Could not query ibendport %s/%s" +#: ../semanage/seobject.py:1706 +#, python-brace-format +msgid "Could not query ibendport {ibdev_name}/{ibendport}" msgstr "" -#: ../semanage/seobject.py:1722 -#, python-format -msgid "Could not modify ibendport %s/%s" +#: ../semanage/seobject.py:1717 +#, python-brace-format +msgid "Could not modify ibendport {ibdev_name}/{ibendport}" msgstr "" -#: ../semanage/seobject.py:1735 +#: ../semanage/seobject.py:1730 msgid "Could not list the ibendports" msgstr "" -#: ../semanage/seobject.py:1744 -#, python-format -msgid "Could not create a key for %s/%d" +#: ../semanage/seobject.py:1739 +#, python-brace-format +msgid "Could not create a key for {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1748 -#, python-format -msgid "Could not delete the ibendport %s/%d" +#: ../semanage/seobject.py:1743 +#, python-brace-format +msgid "Could not delete the ibendport {ibdev_name}/{port}" msgstr "" -#: ../semanage/seobject.py:1765 -#, python-format -msgid "ibendport %s/%s is defined in policy, cannot be deleted" +#: ../semanage/seobject.py:1760 +#, python-brace-format +msgid "" +"ibendport {ibdev_name}/{ibendport} is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:1769 -#, python-format -msgid "Could not delete ibendport %s/%s" +#: ../semanage/seobject.py:1764 +#, python-brace-format +msgid "Could not delete ibendport {ibdev_name}/{ibendport}" msgstr "" -#: ../semanage/seobject.py:1785 ../semanage/seobject.py:1805 +#: ../semanage/seobject.py:1780 ../semanage/seobject.py:1800 msgid "Could not list ibendports" msgstr "" -#: ../semanage/seobject.py:1835 +#: ../semanage/seobject.py:1830 msgid "SELinux IB End Port Type" msgstr "" -#: ../semanage/seobject.py:1835 +#: ../semanage/seobject.py:1830 msgid "IB Device Name" msgstr "" -#: ../semanage/seobject.py:1861 +#: ../semanage/seobject.py:1856 msgid "Node Address is required" msgstr "" -#: ../semanage/seobject.py:1873 ../semanage/seobject.py:1885 +#: ../semanage/seobject.py:1868 ../semanage/seobject.py:1880 msgid "Unknown or missing protocol" msgstr "" -#: ../semanage/seobject.py:1899 +#: ../semanage/seobject.py:1894 msgid "SELinux node type is required" msgstr "" -#: ../semanage/seobject.py:1904 ../semanage/seobject.py:1975 +#: ../semanage/seobject.py:1899 ../semanage/seobject.py:1970 #, python-format msgid "Type %s is invalid, must be a node type" msgstr "" -#: ../semanage/seobject.py:1908 ../semanage/seobject.py:1979 -#: ../semanage/seobject.py:2016 ../semanage/seobject.py:2117 -#: ../semanage/seobject.py:2180 ../semanage/seobject.py:2216 -#: ../semanage/seobject.py:2435 +#: ../semanage/seobject.py:1903 ../semanage/seobject.py:1974 +#: ../semanage/seobject.py:2011 ../semanage/seobject.py:2112 +#: ../semanage/seobject.py:2175 ../semanage/seobject.py:2211 +#: ../semanage/seobject.py:2430 #, python-format msgid "Could not create key for %s" msgstr "" -#: ../semanage/seobject.py:1912 ../semanage/seobject.py:1983 -#: ../semanage/seobject.py:2020 ../semanage/seobject.py:2026 +#: ../semanage/seobject.py:1907 ../semanage/seobject.py:1978 +#: ../semanage/seobject.py:2015 ../semanage/seobject.py:2021 #, python-format msgid "Could not check if addr %s is defined" msgstr "" -#: ../semanage/seobject.py:1914 +#: ../semanage/seobject.py:1909 #, python-format msgid "Addr %s already defined" msgstr "" -#: ../semanage/seobject.py:1918 +#: ../semanage/seobject.py:1913 #, python-format msgid "Could not create addr for %s" msgstr "" -#: ../semanage/seobject.py:1924 ../semanage/seobject.py:2132 -#: ../semanage/seobject.py:2389 +#: ../semanage/seobject.py:1919 ../semanage/seobject.py:2127 +#: ../semanage/seobject.py:2384 #, python-format msgid "Could not create context for %s" msgstr "" -#: ../semanage/seobject.py:1928 +#: ../semanage/seobject.py:1923 #, python-format msgid "Could not set mask for %s" msgstr "" -#: ../semanage/seobject.py:1932 +#: ../semanage/seobject.py:1927 #, python-format msgid "Could not set user in addr context for %s" msgstr "" -#: ../semanage/seobject.py:1936 +#: ../semanage/seobject.py:1931 #, python-format msgid "Could not set role in addr context for %s" msgstr "" -#: ../semanage/seobject.py:1940 +#: ../semanage/seobject.py:1935 #, python-format msgid "Could not set type in addr context for %s" msgstr "" -#: ../semanage/seobject.py:1945 +#: ../semanage/seobject.py:1940 #, python-format msgid "Could not set mls fields in addr context for %s" msgstr "" -#: ../semanage/seobject.py:1949 +#: ../semanage/seobject.py:1944 #, python-format msgid "Could not set addr context for %s" msgstr "" -#: ../semanage/seobject.py:1953 +#: ../semanage/seobject.py:1948 #, python-format msgid "Could not add addr %s" msgstr "" -#: ../semanage/seobject.py:1985 ../semanage/seobject.py:2022 +#: ../semanage/seobject.py:1980 ../semanage/seobject.py:2017 #, python-format msgid "Addr %s is not defined" msgstr "" -#: ../semanage/seobject.py:1989 +#: ../semanage/seobject.py:1984 #, python-format msgid "Could not query addr %s" msgstr "" -#: ../semanage/seobject.py:1999 +#: ../semanage/seobject.py:1994 #, python-format msgid "Could not modify addr %s" msgstr "" -#: ../semanage/seobject.py:2028 +#: ../semanage/seobject.py:2023 #, python-format msgid "Addr %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:2032 +#: ../semanage/seobject.py:2027 #, python-format msgid "Could not delete addr %s" msgstr "" -#: ../semanage/seobject.py:2046 +#: ../semanage/seobject.py:2041 msgid "Could not deleteall node mappings" msgstr "" -#: ../semanage/seobject.py:2060 +#: ../semanage/seobject.py:2055 msgid "Could not list addrs" msgstr "" -#: ../semanage/seobject.py:2113 ../semanage/seobject.py:2426 +#: ../semanage/seobject.py:2108 ../semanage/seobject.py:2421 msgid "SELinux Type is required" msgstr "" -#: ../semanage/seobject.py:2121 ../semanage/seobject.py:2184 -#: ../semanage/seobject.py:2220 ../semanage/seobject.py:2226 +#: ../semanage/seobject.py:2116 ../semanage/seobject.py:2179 +#: ../semanage/seobject.py:2215 ../semanage/seobject.py:2221 #, python-format msgid "Could not check if interface %s is defined" msgstr "" -#: ../semanage/seobject.py:2123 +#: ../semanage/seobject.py:2118 #, python-format msgid "Interface %s already defined" msgstr "" -#: ../semanage/seobject.py:2127 +#: ../semanage/seobject.py:2122 #, python-format msgid "Could not create interface for %s" msgstr "" -#: ../semanage/seobject.py:2136 +#: ../semanage/seobject.py:2131 #, python-format msgid "Could not set user in interface context for %s" msgstr "" -#: ../semanage/seobject.py:2140 +#: ../semanage/seobject.py:2135 #, python-format msgid "Could not set role in interface context for %s" msgstr "" -#: ../semanage/seobject.py:2144 +#: ../semanage/seobject.py:2139 #, python-format msgid "Could not set type in interface context for %s" msgstr "" -#: ../semanage/seobject.py:2149 +#: ../semanage/seobject.py:2144 #, python-format msgid "Could not set mls fields in interface context for %s" msgstr "" -#: ../semanage/seobject.py:2153 +#: ../semanage/seobject.py:2148 #, python-format msgid "Could not set interface context for %s" msgstr "" -#: ../semanage/seobject.py:2157 +#: ../semanage/seobject.py:2152 #, python-format msgid "Could not set message context for %s" msgstr "" -#: ../semanage/seobject.py:2161 +#: ../semanage/seobject.py:2156 #, python-format msgid "Could not add interface %s" msgstr "" -#: ../semanage/seobject.py:2186 ../semanage/seobject.py:2222 +#: ../semanage/seobject.py:2181 ../semanage/seobject.py:2217 #, python-format msgid "Interface %s is not defined" msgstr "" -#: ../semanage/seobject.py:2190 +#: ../semanage/seobject.py:2185 #, python-format msgid "Could not query interface %s" msgstr "" -#: ../semanage/seobject.py:2201 +#: ../semanage/seobject.py:2196 #, python-format msgid "Could not modify interface %s" msgstr "" -#: ../semanage/seobject.py:2228 +#: ../semanage/seobject.py:2223 #, python-format msgid "Interface %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:2232 +#: ../semanage/seobject.py:2227 #, python-format msgid "Could not delete interface %s" msgstr "" -#: ../semanage/seobject.py:2246 +#: ../semanage/seobject.py:2241 msgid "Could not delete all interface mappings" msgstr "" -#: ../semanage/seobject.py:2260 +#: ../semanage/seobject.py:2255 msgid "Could not list interfaces" msgstr "" -#: ../semanage/seobject.py:2285 +#: ../semanage/seobject.py:2280 msgid "SELinux Interface" msgstr "" -#: ../semanage/seobject.py:2285 ../semanage/seobject.py:2677 +#: ../semanage/seobject.py:2280 ../semanage/seobject.py:2672 msgid "Context" msgstr "" -#: ../semanage/seobject.py:2355 +#: ../semanage/seobject.py:2350 #, python-format msgid "Target %s is not valid. Target is not allowed to end with '/'" msgstr "" -#: ../semanage/seobject.py:2358 +#: ../semanage/seobject.py:2353 #, python-format msgid "Substitute %s is not valid. Substitute is not allowed to end with '/'" msgstr "" -#: ../semanage/seobject.py:2361 +#: ../semanage/seobject.py:2356 #, python-format msgid "Equivalence class for %s already exists" msgstr "" -#: ../semanage/seobject.py:2367 +#: ../semanage/seobject.py:2362 #, python-format msgid "File spec %s conflicts with equivalency rule '%s %s'" msgstr "" -#: ../semanage/seobject.py:2378 +#: ../semanage/seobject.py:2373 #, python-format msgid "Equivalence class for %s does not exist" msgstr "" -#: ../semanage/seobject.py:2395 +#: ../semanage/seobject.py:2390 #, python-format msgid "Could not set user in file context for %s" msgstr "" -#: ../semanage/seobject.py:2399 +#: ../semanage/seobject.py:2394 #, python-format msgid "Could not set role in file context for %s" msgstr "" -#: ../semanage/seobject.py:2404 ../semanage/seobject.py:2464 +#: ../semanage/seobject.py:2399 ../semanage/seobject.py:2459 #, python-format msgid "Could not set mls fields in file context for %s" msgstr "" -#: ../semanage/seobject.py:2410 +#: ../semanage/seobject.py:2405 msgid "Invalid file specification" msgstr "" -#: ../semanage/seobject.py:2412 +#: ../semanage/seobject.py:2407 msgid "File specification can not include spaces" msgstr "" -#: ../semanage/seobject.py:2417 +#: ../semanage/seobject.py:2412 #, python-format msgid "" "File spec %s conflicts with equivalency rule '%s %s'; Try adding '%s' instead" msgstr "" -#: ../semanage/seobject.py:2431 ../semanage/seobject.py:2496 +#: ../semanage/seobject.py:2426 ../semanage/seobject.py:2491 #, python-format msgid "Type %s is invalid, must be a file or device type" msgstr "" -#: ../semanage/seobject.py:2439 ../semanage/seobject.py:2444 -#: ../semanage/seobject.py:2506 ../semanage/seobject.py:2515 -#: ../semanage/seobject.py:2603 ../semanage/seobject.py:2607 +#: ../semanage/seobject.py:2434 ../semanage/seobject.py:2439 +#: ../semanage/seobject.py:2501 ../semanage/seobject.py:2510 +#: ../semanage/seobject.py:2598 ../semanage/seobject.py:2602 #, python-format msgid "Could not check if file context for %s is defined" msgstr "" -#: ../semanage/seobject.py:2447 +#: ../semanage/seobject.py:2442 #, python-format msgid "File context for %s already defined" msgstr "" -#: ../semanage/seobject.py:2451 +#: ../semanage/seobject.py:2446 #, python-format msgid "Could not create file context for %s" msgstr "" -#: ../semanage/seobject.py:2459 +#: ../semanage/seobject.py:2454 #, python-format msgid "Could not set type in file context for %s" msgstr "" -#: ../semanage/seobject.py:2467 ../semanage/seobject.py:2539 -#: ../semanage/seobject.py:2543 +#: ../semanage/seobject.py:2462 ../semanage/seobject.py:2534 +#: ../semanage/seobject.py:2538 #, python-format msgid "Could not set file context for %s" msgstr "" -#: ../semanage/seobject.py:2473 +#: ../semanage/seobject.py:2468 #, python-format msgid "Could not add file context for %s" msgstr "" -#: ../semanage/seobject.py:2492 +#: ../semanage/seobject.py:2487 msgid "Requires setype, serange or seuser" msgstr "" -#: ../semanage/seobject.py:2511 ../semanage/seobject.py:2521 +#: ../semanage/seobject.py:2506 ../semanage/seobject.py:2516 #, python-format msgid "Could not query file context for %s" msgstr "" -#: ../semanage/seobject.py:2517 ../semanage/seobject.py:2611 +#: ../semanage/seobject.py:2512 ../semanage/seobject.py:2606 #, python-format msgid "File context for %s is not defined" msgstr "" -#: ../semanage/seobject.py:2547 +#: ../semanage/seobject.py:2542 #, python-format msgid "Could not modify file context for %s" msgstr "" -#: ../semanage/seobject.py:2565 +#: ../semanage/seobject.py:2560 msgid "Could not list the file contexts" msgstr "" -#: ../semanage/seobject.py:2579 +#: ../semanage/seobject.py:2574 #, python-format msgid "Could not delete the file context %s" msgstr "" -#: ../semanage/seobject.py:2609 +#: ../semanage/seobject.py:2604 #, python-format msgid "File context for %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:2615 +#: ../semanage/seobject.py:2610 #, python-format msgid "Could not delete file context for %s" msgstr "" -#: ../semanage/seobject.py:2632 +#: ../semanage/seobject.py:2627 msgid "Could not list file contexts" msgstr "" -#: ../semanage/seobject.py:2636 +#: ../semanage/seobject.py:2631 msgid "Could not list file contexts for home directories" msgstr "" -#: ../semanage/seobject.py:2640 +#: ../semanage/seobject.py:2635 msgid "Could not list local file contexts" msgstr "" -#: ../semanage/seobject.py:2677 +#: ../semanage/seobject.py:2672 msgid "SELinux fcontext" msgstr "" -#: ../semanage/seobject.py:2690 +#: ../semanage/seobject.py:2685 msgid "" "\n" "SELinux Distribution fcontext Equivalence \n" msgstr "" -#: ../semanage/seobject.py:2695 +#: ../semanage/seobject.py:2690 msgid "" "\n" "SELinux Local fcontext Equivalence \n" msgstr "" -#: ../semanage/seobject.py:2733 ../semanage/seobject.py:2784 -#: ../semanage/seobject.py:2790 +#: ../semanage/seobject.py:2728 ../semanage/seobject.py:2779 +#: ../semanage/seobject.py:2785 #, python-format msgid "Could not check if boolean %s is defined" msgstr "" -#: ../semanage/seobject.py:2735 ../semanage/seobject.py:2786 +#: ../semanage/seobject.py:2730 ../semanage/seobject.py:2781 #, python-format msgid "Boolean %s is not defined" msgstr "" -#: ../semanage/seobject.py:2739 +#: ../semanage/seobject.py:2734 #, python-format msgid "Could not query file context %s" msgstr "" -#: ../semanage/seobject.py:2744 +#: ../semanage/seobject.py:2739 #, python-format msgid "You must specify one of the following values: %s" msgstr "" -#: ../semanage/seobject.py:2749 +#: ../semanage/seobject.py:2744 #, python-format msgid "Could not set active value of boolean %s" msgstr "" -#: ../semanage/seobject.py:2752 +#: ../semanage/seobject.py:2747 #, python-format msgid "Could not modify boolean %s" msgstr "" -#: ../semanage/seobject.py:2768 -#, python-format -msgid "Bad format %s: Record %s" +#: ../semanage/seobject.py:2763 +#, python-brace-format +msgid "Bad format {filename}: Record {record}" msgstr "" -#: ../semanage/seobject.py:2792 +#: ../semanage/seobject.py:2787 #, python-format msgid "Boolean %s is defined in policy, cannot be deleted" msgstr "" -#: ../semanage/seobject.py:2796 +#: ../semanage/seobject.py:2791 #, python-format msgid "Could not delete boolean %s" msgstr "" -#: ../semanage/seobject.py:2808 ../semanage/seobject.py:2825 +#: ../semanage/seobject.py:2803 ../semanage/seobject.py:2820 msgid "Could not list booleans" msgstr "" -#: ../semanage/seobject.py:2858 +#: ../semanage/seobject.py:2853 msgid "off" msgstr "" -#: ../semanage/seobject.py:2858 +#: ../semanage/seobject.py:2853 msgid "on" msgstr "" -#: ../semanage/seobject.py:2870 +#: ../semanage/seobject.py:2865 msgid "SELinux boolean" msgstr "" -#: ../semanage/seobject.py:2870 +#: ../semanage/seobject.py:2865 msgid "State" msgstr "" -#: ../semanage/seobject.py:2870 +#: ../semanage/seobject.py:2865 msgid "Default" msgstr "" -#: ../semanage/seobject.py:2870 ../sepolicy/sepolicy/sepolicy.glade:2140 +#: ../semanage/seobject.py:2865 ../sepolicy/sepolicy/sepolicy.glade:2140 #: ../sepolicy/sepolicy/sepolicy.glade:2510 #: ../sepolicy/sepolicy/sepolicy.glade:5099 msgid "Description" @@ -1555,151 +1566,151 @@ msgstr "" msgid "Missing interface definition for %s" msgstr "" -#: ../sepolicy/sepolicy/generate.py:140 +#: ../sepolicy/sepolicy/generate.py:138 msgid "Standard Init Daemon" msgstr "" -#: ../sepolicy/sepolicy/generate.py:141 +#: ../sepolicy/sepolicy/generate.py:139 msgid "DBUS System Daemon" msgstr "" -#: ../sepolicy/sepolicy/generate.py:142 +#: ../sepolicy/sepolicy/generate.py:140 msgid "Internet Services Daemon" msgstr "" -#: ../sepolicy/sepolicy/generate.py:143 +#: ../sepolicy/sepolicy/generate.py:141 msgid "Web Application/Script (CGI)" msgstr "" -#: ../sepolicy/sepolicy/generate.py:144 +#: ../sepolicy/sepolicy/generate.py:142 msgid "Sandbox" msgstr "" -#: ../sepolicy/sepolicy/generate.py:145 +#: ../sepolicy/sepolicy/generate.py:143 msgid "User Application" msgstr "" -#: ../sepolicy/sepolicy/generate.py:146 +#: ../sepolicy/sepolicy/generate.py:144 msgid "Existing Domain Type" msgstr "" -#: ../sepolicy/sepolicy/generate.py:147 +#: ../sepolicy/sepolicy/generate.py:145 msgid "Minimal Terminal Login User Role" msgstr "" -#: ../sepolicy/sepolicy/generate.py:148 +#: ../sepolicy/sepolicy/generate.py:146 msgid "Minimal X Windows Login User Role" msgstr "" -#: ../sepolicy/sepolicy/generate.py:149 +#: ../sepolicy/sepolicy/generate.py:147 msgid "Desktop Login User Role" msgstr "" -#: ../sepolicy/sepolicy/generate.py:150 +#: ../sepolicy/sepolicy/generate.py:148 msgid "Administrator Login User Role" msgstr "" -#: ../sepolicy/sepolicy/generate.py:151 +#: ../sepolicy/sepolicy/generate.py:149 msgid "Confined Root Administrator Role" msgstr "" -#: ../sepolicy/sepolicy/generate.py:152 +#: ../sepolicy/sepolicy/generate.py:150 msgid "Module information for a new type" msgstr "" -#: ../sepolicy/sepolicy/generate.py:158 +#: ../sepolicy/sepolicy/generate.py:156 msgid "Valid Types:\n" msgstr "" -#: ../sepolicy/sepolicy/generate.py:193 +#: ../sepolicy/sepolicy/generate.py:191 #, python-format msgid "Ports must be numbers or ranges of numbers from 1 to %d " msgstr "" -#: ../sepolicy/sepolicy/generate.py:205 +#: ../sepolicy/sepolicy/generate.py:203 msgid "You must enter a valid policy type" msgstr "" -#: ../sepolicy/sepolicy/generate.py:208 +#: ../sepolicy/sepolicy/generate.py:206 #, python-format msgid "You must enter a name for your policy module for your '%s'." msgstr "" -#: ../sepolicy/sepolicy/generate.py:346 +#: ../sepolicy/sepolicy/generate.py:344 msgid "" "Name must be alphanumeric with no spaces. Consider using option \"-n " "MODULENAME\"" msgstr "" -#: ../sepolicy/sepolicy/generate.py:438 +#: ../sepolicy/sepolicy/generate.py:436 msgid "User Role types can not be assigned executables." msgstr "" -#: ../sepolicy/sepolicy/generate.py:444 +#: ../sepolicy/sepolicy/generate.py:442 msgid "Only Daemon apps can use an init script." msgstr "" -#: ../sepolicy/sepolicy/generate.py:462 +#: ../sepolicy/sepolicy/generate.py:460 msgid "use_resolve must be a boolean value " msgstr "" -#: ../sepolicy/sepolicy/generate.py:468 +#: ../sepolicy/sepolicy/generate.py:466 msgid "use_syslog must be a boolean value " msgstr "" -#: ../sepolicy/sepolicy/generate.py:474 +#: ../sepolicy/sepolicy/generate.py:472 msgid "use_kerberos must be a boolean value " msgstr "" -#: ../sepolicy/sepolicy/generate.py:480 +#: ../sepolicy/sepolicy/generate.py:478 msgid "manage_krb5_rcache must be a boolean value " msgstr "" -#: ../sepolicy/sepolicy/generate.py:510 +#: ../sepolicy/sepolicy/generate.py:508 msgid "USER Types automatically get a tmp type" msgstr "" -#: ../sepolicy/sepolicy/generate.py:847 +#: ../sepolicy/sepolicy/generate.py:845 #, python-format msgid "'%s' policy modules require existing domains" msgstr "" -#: ../sepolicy/sepolicy/generate.py:872 +#: ../sepolicy/sepolicy/generate.py:870 msgid "Type field required" msgstr "" -#: ../sepolicy/sepolicy/generate.py:885 +#: ../sepolicy/sepolicy/generate.py:883 #, python-format msgid "" "You need to define a new type which ends with: \n" " %s" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1113 +#: ../sepolicy/sepolicy/generate.py:1111 msgid "You must enter the executable path for your confined process" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1378 +#: ../sepolicy/sepolicy/generate.py:1376 msgid "Created the following files:\n" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1379 +#: ../sepolicy/sepolicy/generate.py:1377 msgid "Type Enforcement file" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1380 +#: ../sepolicy/sepolicy/generate.py:1378 msgid "Interface file" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1381 +#: ../sepolicy/sepolicy/generate.py:1379 msgid "File Contexts file" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1383 +#: ../sepolicy/sepolicy/generate.py:1381 msgid "Spec file" msgstr "" -#: ../sepolicy/sepolicy/generate.py:1384 +#: ../sepolicy/sepolicy/generate.py:1382 msgid "Setup Script" msgstr "" @@ -2367,29 +2378,29 @@ msgstr "" msgid "named pipe" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:148 +#: ../sepolicy/sepolicy/__init__.py:149 msgid "No SELinux Policy installed" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:184 +#: ../sepolicy/sepolicy/__init__.py:185 #, python-format msgid "Failed to read %s policy file" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:470 +#: ../sepolicy/sepolicy/__init__.py:471 #, python-format msgid "-- Allowed %s [ %s ]" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:896 +#: ../sepolicy/sepolicy/__init__.py:897 msgid "You must regenerate interface info by running /usr/bin/sepolgen-ifgen" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:1221 +#: ../sepolicy/sepolicy/__init__.py:1230 msgid "unknown" msgstr "" -#: ../sepolicy/sepolicy/__init__.py:1230 +#: ../sepolicy/sepolicy/__init__.py:1239 #, python-brace-format msgid "Allow {subject} to {rest}" msgstr ""