[policycoreutils] Fix bugs introduced by previous patch. semanage port
Daniel J Walsh
dwalsh at fedoraproject.org
Fri Jul 19 11:07:44 UTC 2013
commit 7fa44b7304f140df868fe0cd9a1f26251cee4704
Author: Dan Walsh <dwalsh at redhat.com>
Date: Fri Jul 19 07:07:18 2013 -0400
Fix bugs introduced by previous patch. semanage port
- Update Translations
policycoreutils-rhat.patch | 553 +++++++++++++++++++++++---------------------
policycoreutils.spec | 11 +-
2 files changed, 299 insertions(+), 265 deletions(-)
---
diff --git a/policycoreutils-rhat.patch b/policycoreutils-rhat.patch
index e61c761..54019a2 100644
--- a/policycoreutils-rhat.patch
+++ b/policycoreutils-rhat.patch
@@ -13427,10 +13427,10 @@ index 151ca6a..741ff63 100644
+msgid "Boolean %s Allow Rules"
msgstr ""
diff --git a/policycoreutils/po/as.po b/policycoreutils/po/as.po
-index f5448a3..d096929 100644
+index f5448a3..c2b2cea 100644
--- a/policycoreutils/po/as.po
+++ b/policycoreutils/po/as.po
-@@ -3,18 +3,18 @@
+@@ -3,17 +3,18 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
@@ -13442,6 +13442,7 @@ index f5448a3..d096929 100644
+# Amitakhya Phukan <amitakhya.phukan at gmail.com>, 2006
+# Amitakhya Phukan <aphukan at fedoraproject.org>, 2008-2010
+# Amitakhya Phukan <aphukan at redhat.com>, 2008
++# ngoswami <ngoswami at redhat.com>, 2013
+# ngoswami <ngoswami at redhat.com>, 2011-2013
+# ngoswami <ngoswami at redhat.com>, 2013
msgid ""
@@ -13450,14 +13451,12 @@ index f5448a3..d096929 100644
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-01-04 12:01-0500\n"
-"PO-Revision-Date: 2013-01-07 14:17+0000\n"
--"Last-Translator: ngoswami <ngoswami at redhat.com>\n"
+"POT-Creation-Date: 2013-07-10 16:36-0400\n"
-+"PO-Revision-Date: 2013-07-10 20:43+0000\n"
-+"Last-Translator: dwalsh <dwalsh at redhat.com>\n"
++"PO-Revision-Date: 2013-07-19 09:56+0000\n"
+ "Last-Translator: ngoswami <ngoswami at redhat.com>\n"
"Language-Team: Assamese (http://www.transifex.com/projects/p/fedora/language/as/)\n"
"MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
-@@ -29,7 +29,7 @@ msgid ""
+@@ -29,7 +30,7 @@ msgid ""
" <args ...> are the arguments to that script."
msgstr "ব্যৱহাৰ: run_init <script> <args ...>\n এই ক্ষেত্ৰত: <script> দ্বাৰা সঞ্চালনৰ বাবে init স্ক্ৰিপ্ট চিহ্নিত কৰা হয়,\n <args ...> উপৰোক্ত স্ক্ৰিপ্টৰ তৰ্ক উল্লিখিত হয়।"
@@ -13466,7 +13465,7 @@ index f5448a3..d096929 100644
#, c-format
msgid "failed to initialize PAM\n"
msgstr "PAM আৰম্ভ কৰোঁতে ব্যৰ্থ\n"
-@@ -78,7 +78,7 @@ msgstr "দুঃক্ষিত, run_init অকল SELinux কাৰ্ণে
+@@ -78,7 +79,7 @@ msgstr "দুঃক্ষিত, run_init অকল SELinux কাৰ্ণে
msgid "authentication failed.\n"
msgstr "অনুমোদন কৰোঁতে ব্যৰ্থ।\n"
@@ -13475,7 +13474,7 @@ index f5448a3..d096929 100644
#, c-format
msgid "Could not set exec context to %s.\n"
msgstr "exec context %s লৈ স্থাপন কৰা নাযায়।\n"
-@@ -131,7 +131,7 @@ msgstr "semanage আদান-প্ৰদান সমাপ্ত কৰা
+@@ -131,7 +132,7 @@ msgstr "semanage আদান-প্ৰদান সমাপ্ত কৰা
msgid "Semanage transaction not in progress"
msgstr "Semanage আদান-প্ৰদান চলমান নহয়"
@@ -13484,7 +13483,7 @@ index f5448a3..d096929 100644
msgid "Could not list SELinux modules"
msgstr "SELinux অংশৰ তালিকা নিৰ্মাণ কৰা নাযায়"
-@@ -147,815 +147,830 @@ msgstr "ভাৰ্সান"
+@@ -147,815 +148,830 @@ msgstr "ভাৰ্সান"
msgid "Disabled"
msgstr "Disabled"
@@ -13492,7 +13491,7 @@ index f5448a3..d096929 100644
+#: ../semanage/seobject.py:288
+#, python-format
+msgid "Module does not exists %s "
-+msgstr ""
++msgstr "মডিউল অস্তিত্ববান নহয় %s"
+
+#: ../semanage/seobject.py:298
#, python-format
@@ -13533,7 +13532,7 @@ index f5448a3..d096929 100644
+"In some distributions it is included in the policycoreutils-devel patckage.\n"
+"# yum install policycoreutils-devel\n"
+"Or similar for your distro."
-+msgstr ""
++msgstr "অনুমোদিত ডমেইনসমূহ সংস্থাপন কৰিবলে sepolgen python মডিউলৰ প্ৰয়োজন।\nকিছুমান বিতৰণত ইয়াক policycoreutils-devel পেকেইজত অন্তৰ্ভুক্ত কৰা হৈছে।\n# yum install policycoreutils-devel\nঅথবা আপোনাৰ বিতৰণৰ সৈতে সদৃশ।"
+
+#: ../semanage/seobject.py:418
#, python-format
@@ -14507,7 +14506,7 @@ index f5448a3..d096929 100644
msgid "Description"
msgstr "বিৱৰণ"
-@@ -994,206 +1009,226 @@ msgstr "ত্ৰুটি! বৈধ শ্বেল ব্যৱহাৰ ক
+@@ -994,206 +1010,226 @@ msgstr "ত্ৰুটি! বৈধ শ্বেল ব্যৱহাৰ ক
msgid "Unable to clear environment\n"
msgstr "পৰিবেশ পৰিশ্ৰুত কৰোঁতে ব্যৰ্থ\n"
@@ -14775,7 +14774,7 @@ index f5448a3..d096929 100644
msgid "failed to exec shell\n"
msgstr "শ্বেল exec কৰোঁতে ব্যৰ্থ\n"
-@@ -1420,7 +1455,7 @@ msgstr "<b>আপুনি অন্তৰ্ভুক্ত কৰিব বি
+@@ -1420,7 +1456,7 @@ msgstr "<b>আপুনি অন্তৰ্ভুক্ত কৰিব বি
msgid "<b>Applications</b>"
msgstr "<b>এপ্লিকেচন</b>"
@@ -14784,7 +14783,7 @@ index f5448a3..d096929 100644
msgid "Standard Init Daemon"
msgstr "প্ৰমিত Init ডিমন"
-@@ -1430,7 +1465,7 @@ msgid ""
+@@ -1430,7 +1466,7 @@ msgid ""
"requires a script in /etc/rc.d/init.d"
msgstr "বুট কৰাৰ সময় init স্ক্ৰিপ্টৰ মাধ্যমে আৰম্ভ হোৱা ডিমনসমূহ প্ৰমিত Init ডিমন নামে পৰিচিত। সাধাৰণতে /etc/rc.d/init.d ত এটা স্ক্ৰিপ্ট উপস্থিত থকা আৱশ্যক।"
@@ -14793,7 +14792,7 @@ index f5448a3..d096929 100644
msgid "DBUS System Daemon"
msgstr "DBUS চিস্টেম ডিমন"
-@@ -1442,7 +1477,7 @@ msgstr "ইন্টাৰনেট সেৱাসমূহ ডিমন (inetd
+@@ -1442,7 +1478,7 @@ msgstr "ইন্টাৰনেট সেৱাসমূহ ডিমন (inetd
msgid "Internet Services Daemon are daemons started by xinetd"
msgstr "ইন্টাৰনেট সেৱাসমূহ ডিমনৰ ডিমনসমূহ xinetd দ্বাৰা আৰম্ভ কৰা হয়।"
@@ -14802,7 +14801,7 @@ index f5448a3..d096929 100644
msgid "Web Application/Script (CGI)"
msgstr "ৱেব এপ্লিকেচন/স্ক্ৰিপ্ট (CGI)"
-@@ -1451,7 +1486,7 @@ msgid ""
+@@ -1451,7 +1487,7 @@ msgid ""
"Web Applications/Script (CGI) CGI scripts started by the web server (apache)"
msgstr "ৱেব চাৰ্ভাৰ (apache) দ্বাৰা আৰম্ভ কৰা ৱেব এপ্লিকেচন/স্ক্ৰিপ্ট (CGI) CGI স্ক্ৰিপ্ট"
@@ -14811,7 +14810,7 @@ index f5448a3..d096929 100644
msgid "User Application"
msgstr "ব্যৱহাৰকাৰীসকলৰ এপ্লিকেচন"
-@@ -1461,7 +1496,7 @@ msgid ""
+@@ -1461,7 +1497,7 @@ msgid ""
"started by a user"
msgstr "ব্যৱহাৰকাৰী দ্বাৰা আৰম্ভ কৰা কোনো এপ্লিকেচন যা আৱদ্ধ কৰাৰ বাবে চিহ্নিত তাক ব্যৱহাৰকাৰীসকলৰ এপ্লিকেচন নামে পৰিচিত"
@@ -14820,7 +14819,7 @@ index f5448a3..d096929 100644
msgid "Sandbox"
msgstr "Sandbox"
-@@ -1536,7 +1571,8 @@ msgstr "এই ব্যৱহাৰকাৰী দ্বাৰা root পৰ
+@@ -1536,7 +1572,8 @@ msgstr "এই ব্যৱহাৰকাৰী দ্বাৰা root পৰ
msgid "<b>Enter name of application or user role:</b>"
msgstr "<b>এপ্লিকেচনৰ নাম অথবা ব্যৱহাৰকাৰী ভূমিকা সুমুৱাওক:</b>"
@@ -14830,7 +14829,7 @@ index f5448a3..d096929 100644
msgid "Name"
msgstr "নাম"
-@@ -1752,75 +1788,75 @@ msgstr "<b>আপুনি কোন ডাইৰেকটৰিত %s সৃজ
+@@ -1752,75 +1789,75 @@ msgstr "<b>আপুনি কোন ডাইৰেকটৰিত %s সৃজ
msgid "Policy Directory"
msgstr "নীতি ডাইৰেকটৰি"
@@ -14922,7 +14921,7 @@ index f5448a3..d096929 100644
msgid "Configue SELinux"
msgstr "SELinux বিন্যাস কৰক"
-@@ -1835,6 +1871,8 @@ msgid ""
+@@ -1835,6 +1872,8 @@ msgid ""
msgstr "SELinux পোৰ্ট\nধৰণ"
#: ../gui/portsPage.py:91 ../gui/system-config-selinux.glade:363
@@ -14931,7 +14930,7 @@ index f5448a3..d096929 100644
msgid "Protocol"
msgstr "প্ৰটোকল"
-@@ -1844,7 +1882,8 @@ msgid ""
+@@ -1844,7 +1883,8 @@ msgid ""
"Level"
msgstr "MLS/MCS\nস্তৰ"
@@ -14941,7 +14940,7 @@ index f5448a3..d096929 100644
msgid "Port"
msgstr "পোৰ্ট"
-@@ -1974,6 +2013,9 @@ msgid "SELinux Administration"
+@@ -1974,6 +2014,9 @@ msgid "SELinux Administration"
msgstr "SELinux ব্যৱস্থাপনা"
#: ../gui/system-config-selinux.glade:1122
@@ -14951,7 +14950,7 @@ index f5448a3..d096929 100644
msgid "Add"
msgstr "যোগ কৰক"
-@@ -2043,6 +2085,10 @@ msgstr "স্বনিৰ্ধাৰিত আৰু সকল বুলিয়
+@@ -2043,6 +2086,10 @@ msgstr "স্বনিৰ্ধাৰিত আৰু সকল বুলিয়
#: ../gui/system-config-selinux.glade:2467
#: ../gui/system-config-selinux.glade:2692
#: ../gui/system-config-selinux.glade:2867
@@ -14962,7 +14961,7 @@ index f5448a3..d096929 100644
msgid "Filter"
msgstr "ফিল্টাৰ"
-@@ -2166,264 +2212,6 @@ msgstr "label59"
+@@ -2166,264 +2213,6 @@ msgstr "label59"
msgid "SELinux user '%s' is required"
msgstr "SELinux ব্যৱহাৰকাৰী '%s'ৰ উপস্থিত আৱশ্যক"
@@ -15227,7 +15226,7 @@ index f5448a3..d096929 100644
#: booleans.py:1
msgid ""
"Allow ABRT to modify public files used for public file transfer services."
-@@ -2435,13 +2223,13 @@ msgid ""
+@@ -2435,13 +2224,13 @@ msgid ""
msgstr "ABRT ক ABRT ঘটনা স্ক্ৰিপ্টসমূহ নিয়ন্ত্ৰণ কৰিবলে abrt_handle_event_t ডমেইনত চলাৰ অনুমতি দিয়ক"
#: booleans.py:3
@@ -15245,7 +15244,7 @@ index f5448a3..d096929 100644
#: booleans.py:5
msgid "Allow auditadm to exec content"
msgstr "auditadm ক সমল exec কৰাৰ অনুমতি দিয়ক"
-@@ -2461,51 +2249,55 @@ msgid "Allow users to login using a yubikey server"
+@@ -2461,51 +2250,55 @@ msgid "Allow users to login using a yubikey server"
msgstr "ব্যৱহাৰকাৰীসকলক এটা yubikey চাৰ্ভাৰ ব্যৱহাৰ কৰি লগিন কৰাৰ অনুমতি দিয়ক"
#: booleans.py:9
@@ -15324,7 +15323,7 @@ index f5448a3..d096929 100644
#: booleans.py:20
msgid ""
-@@ -2513,8 +2305,8 @@ msgid ""
+@@ -2513,8 +2306,8 @@ msgid ""
msgstr "চিস্টেম cron কাৰ্য্যসমূহক ফাইল পৰিপ্ৰেক্ষতিত পুনৰসংৰক্ষণ কৰাৰ বাবে ফাইলচিস্টেম পুনৰলেবেল কৰাৰ অনুমতি দিয়ক।"
#: booleans.py:21
@@ -15335,7 +15334,7 @@ index f5448a3..d096929 100644
#: booleans.py:22
msgid "Allow all daemons to write corefiles to /"
-@@ -2529,958 +2321,1760 @@ msgid "Allow all daemons the ability to read/write terminals"
+@@ -2529,958 +2322,1760 @@ msgid "Allow all daemons the ability to read/write terminals"
msgstr "সকলো ডিমনক টাৰ্মিনেলসমূহ পঢ়া/লিখাৰ ক্ষমতা প্ৰদান কৰক"
#: booleans.py:25
@@ -15394,6 +15393,9 @@ index f5448a3..d096929 100644
msgid "Allow all domains to have the kernel load modules"
msgstr "সকলো ডমেইনক কাৰনেল ল'ড মডিউলসমূহ থকাৰ অনুমতি দিয়ক"
+-#: booleans.py:35
+-msgid "Allow the use of the audio devices as the source for the entropy feeds"
+-msgstr "এনট্ৰপি ফিডসমূহৰ উৎস হিচাপে অডিঅ' ডিভাইচসমূহৰ ব্যৱহাৰৰ অনুমতি দিয়ক"
+#: booleans.py:33
+msgid ""
+"Determine whether entropyd can use audio devices as the source for the "
@@ -15404,9 +15406,7 @@ index f5448a3..d096929 100644
+msgid "Determine whether exim can connect to databases."
+msgstr "exim এ ডাটাবেইচসমূহৰ সৈতে সংযোগ কৰিব পাৰিব নে নিৰ্ধাৰণ কৰক।"
+
- #: booleans.py:35
--msgid "Allow the use of the audio devices as the source for the entropy feeds"
--msgstr "এনট্ৰপি ফিডসমূহৰ উৎস হিচাপে অডিঅ' ডিভাইচসমূহৰ ব্যৱহাৰৰ অনুমতি দিয়ক"
++#: booleans.py:35
+msgid ""
+"Determine whether exim can create, read, write, and delete generic user "
+"content files."
@@ -15637,7 +15637,7 @@ index f5448a3..d096929 100644
-#: booleans.py:70
+#: booleans.py:72
+msgid "Allow http daemon to connect to mythtv"
-+msgstr ""
++msgstr "http ডিমনক mythtv ৰ সৈতে সংযোগ কৰাৰ অনুমতি দিয়ক"
+
+#: booleans.py:73
msgid "Allow http daemon to connect to zabbix"
@@ -15801,7 +15801,7 @@ index f5448a3..d096929 100644
-#: booleans.py:100
+#: booleans.py:103
+msgid "Allow httpd to connect to sasl"
-+msgstr ""
++msgstr "httpd ক sasl ৰ সৈতে সংযোগ কৰাৰ অনুমতি দিয়ক"
+
+#: booleans.py:104
msgid "Allow Apache to query NS records"
@@ -15892,7 +15892,7 @@ index f5448a3..d096929 100644
-msgstr "যিকোনো ডাইৰেকটৰি অথবা ফাইল মাউন্ট কৰিবলে mount কমান্ডৰ অনুমতি দিয়ক।"
+#: booleans.py:121
+msgid "Allow the mount commands to mount any directory or file."
-+msgstr ""
++msgstr "মাউন্ট কমান্ডসমূহক যিকোনো ডাইৰেকটৰি অথবা ফাইল মাউন্ট কৰাৰ অনুমতি দিয়ক।"
-#: booleans.py:110
+#: booleans.py:122
@@ -15905,12 +15905,12 @@ index f5448a3..d096929 100644
-msgstr "mozilla_plugins ক ব্যৱহাৰকাৰীসমূহৰ ঘৰ ডাইৰেকটৰিত যাদৃচ্ছিক সমল সৃষ্টি কৰাৰ অনুমতি দিয়ক"
+#: booleans.py:123
+msgid "Allow mozilla plugin to support GPS."
-+msgstr ""
++msgstr "mozilla প্লাগিনক GPS সমৰ্থন কৰাৰ অনুমতি দিয়ক।"
-#: booleans.py:112
+#: booleans.py:124
+msgid "Allow mozilla plugin to support spice protocols."
-+msgstr ""
++msgstr "mozilla প্লাগিনক spice প্ৰটোকলসমূহ সমৰ্থন কৰাৰ অনুমতি দিয়ক।"
+
+#: booleans.py:125
msgid "Allow confined web browsers to read home directory content"
@@ -16080,7 +16080,7 @@ index f5448a3..d096929 100644
-"Allow privoxy to connect to all ports, not just HTTP, FTP, and Gopher ports."
-msgstr "privoxy ক কেৱল HTTP, FTP, আৰু Gopher পোৰ্টসমূহলে নহয়, সকলো পোৰ্টৰ সৈতে সংযোগ কৰাৰ অনুমতি দিয়ক।"
+"Permit to prosody to bind apache port. Need to be activated to use BOSH."
-+msgstr ""
++msgstr "apache পৰ্ট বান্ধীবলে prosody ক অনুমতি দিয়ক। BOSH ব্যৱহাৰ কৰিবলে সক্ৰিয় কৰাৰ প্ৰয়োজন।"
-#: booleans.py:139
+#: booleans.py:156
@@ -16428,7 +16428,7 @@ index f5448a3..d096929 100644
-#: booleans.py:196
+#: booleans.py:211
+msgid "Allow testpolicy to exec content"
-+msgstr ""
++msgstr "testpolicy ক সমল exec কৰাৰ অনুমতি দিয়ক"
+
+#: booleans.py:212
msgid ""
@@ -16618,7 +16618,7 @@ index f5448a3..d096929 100644
+msgid ""
+"Allow the graphical login program to create files in HOME dirs as "
+"xdm_home_t."
-+msgstr ""
++msgstr "গ্ৰাফিকেল লগিন প্ৰগ্ৰামক HOME ডাইৰেকটৰিসমূহত xdm_home_t ৰূপে ফাইলসমূহ সৃষ্টি কৰাৰ অনুমতি দিয়ক।"
+
+#: booleans.py:243
msgid "Allow xen to manage nfs files"
@@ -16693,7 +16693,7 @@ index f5448a3..d096929 100644
+
+#: booleans.py:256
+msgid "Allow ZoneMinder to run su/sudo."
-+msgstr ""
++msgstr "ZoneMinder ক su/sudo চলোৱাৰ অনুমতি দিয়ক।"
+
+#: ../sepolicy/sepolicy.py:194
+#, python-format
@@ -16702,7 +16702,7 @@ index f5448a3..d096929 100644
+
+#: ../sepolicy/sepolicy.py:281
+msgid "Graphical User Interface for SELinux Policy"
-+msgstr ""
++msgstr "SELinux নীতিৰ বাবে গ্ৰাফিকেল ব্যৱহাৰকাৰী আন্তঃপৃষ্ঠ"
+
+#: ../sepolicy/sepolicy.py:305
+msgid "Generate SELinux man pages"
@@ -16836,11 +16836,11 @@ index f5448a3..d096929 100644
+
+#: ../sepolicy/sepolicy.py:528
+msgid "Enter SELinux role(s) to which the administror domain will transition"
-+msgstr ""
++msgstr "SELinux ভূমিকা(বোৰ) য'লৈ প্ৰশাসক ডমেইনে পৰিবৰ্তন কৰিব সুমুৱাওক"
+
+#: ../sepolicy/sepolicy.py:531
+msgid "Enter domain(s) which this confined admin will administrate"
-+msgstr ""
++msgstr "এই অন্তৰ্ভুক্ত প্ৰশাসকে যি ডমেইন(সমূহ) প্ৰশাসন কৰিব সুমুৱাওক"
+
+#: ../sepolicy/sepolicy.py:534
+msgid "name of policy to generate"
@@ -16887,35 +16887,35 @@ index f5448a3..d096929 100644
+
+#: ../sepolicy/sepolicy/__init__.py:167 ../sepolicy/sepolicy/gui.py:479
+msgid "all files"
-+msgstr ""
++msgstr "সকলো ফাইল"
+
+#: ../sepolicy/sepolicy/__init__.py:168
+msgid "regular file"
-+msgstr ""
++msgstr "সাধাৰণ ফাইল"
+
+#: ../sepolicy/sepolicy/__init__.py:169
+msgid "directory"
-+msgstr ""
++msgstr "ডাইৰেকটৰি"
+
+#: ../sepolicy/sepolicy/__init__.py:170
+msgid "character device"
-+msgstr ""
++msgstr "আখৰ ডিভাইচ"
+
+#: ../sepolicy/sepolicy/__init__.py:171
+msgid "block device"
-+msgstr ""
++msgstr "খণ্ড ডিভাইচ"
+
+#: ../sepolicy/sepolicy/__init__.py:172
+msgid "socket file"
-+msgstr ""
++msgstr "চকেট ফাইল"
+
+#: ../sepolicy/sepolicy/__init__.py:173
+msgid "symbolic link"
-+msgstr ""
++msgstr "সাংকেতিক লিঙ্ক"
+
+#: ../sepolicy/sepolicy/__init__.py:174
+msgid "named pipe"
-+msgstr ""
++msgstr "নাম থকা পাইপ"
+
+#: ../sepolicy/sepolicy/__init__.py:306
+msgid "No SELinux Policy installed"
@@ -16923,7 +16923,7 @@ index f5448a3..d096929 100644
+
+#: ../sepolicy/sepolicy/__init__.py:386
+msgid "You must regenerate interface info by running /usr/bin/sepolgen-ifgen"
-+msgstr ""
++msgstr "আপুনি /usr/bin/sepolgen-ifgen চলাই আন্তঃপৃষ্ঠ তথ্য পুনৰ সৃজন কৰিব লাগিব"
+
+#: ../sepolicy/sepolicy/__init__.py:591
+#, python-format
@@ -17060,368 +17060,368 @@ index f5448a3..d096929 100644
+
+#: ../sepolicy/sepolicy/sepolicy.glade:7
+msgid "SELinux Gui"
-+msgstr ""
++msgstr "SELinux Gui"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:33
+msgid "Type to search for a process"
-+msgstr ""
++msgstr "এটা প্ৰক্ৰিয়া সন্ধান কৰিবলে টাইপ কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:35
+msgid "Select domain"
-+msgstr ""
++msgstr "ডমেইন বাছক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:70
+#: ../sepolicy/sepolicy/sepolicy.glade:308
+msgid "Booleans"
-+msgstr ""
++msgstr "বুলিয়ান"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:74
+msgid ""
+"Display boolean information that can be used to modify the policy for the "
+"'selected domain'."
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' ৰ বাবে নীতি পৰিবৰ্তন কৰিবলে ব্যৱহাৰ কৰিব পৰা বুলিয়ান তথ্য প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:85
+#: ../sepolicy/sepolicy/sepolicy.glade:710
+msgid "Files"
-+msgstr ""
++msgstr "ফাইলসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:89
+msgid ""
+"Display file type information that can be used by the 'selected domain'."
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' দ্বাৰা ব্যৱহাৰ কৰিব পৰা ফাইল ধৰণ তথ্য প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:100
+#: ../sepolicy/sepolicy/sepolicy.glade:1062
+msgid "Network"
-+msgstr ""
++msgstr "নেটৱাৰ্ক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:104
+msgid ""
+"Display network ports to which the 'selected domain' can connect or listen "
+"to."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ 'নিৰ্বাচিত' ডমেইনে সংযোগ অথবা শুনিব পাৰিব প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:115
+#: ../sepolicy/sepolicy/sepolicy.glade:1361
+msgid "Transitions"
-+msgstr ""
++msgstr "পৰিবৰ্তনসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:119
+msgid ""
+"Display applications that can transition into or out of the 'selected "
+"domain'."
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' ত অথবা বাহিৰত পৰিবৰ্তন কৰিব পৰা এপ্লিকেচনসমূহ প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:188
+#: ../sepolicy/sepolicy/sepolicy.glade:358
+#: ../sepolicy/sepolicy/sepolicy.glade:765
+#: ../sepolicy/sepolicy/sepolicy.glade:1113
+msgid "Show Modified Only"
-+msgstr ""
++msgstr "কেৱল পৰিৱৰ্তীতক দেখুৱাওক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:219
+msgid ""
+"If-Then-Else rules written in policy that can \n"
+"allow alternative access control."
-+msgstr ""
++msgstr "নীতিত লিখা If-Then-Else নিয়মসমূহ যি \nবৈকল্পিক অভিগম নিয়ন্ত্ৰণৰ অনুমতি দিয়ে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:373
+#: ../sepolicy/sepolicy/sepolicy.glade:787
+#: ../sepolicy/sepolicy/sepolicy.glade:1128
+msgid "Modify"
-+msgstr ""
++msgstr "সলনি কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:377
+#: ../sepolicy/sepolicy/sepolicy.glade:791
+msgid "Modify an existing item"
-+msgstr ""
++msgstr "এটা অস্তিত্ববান বস্তু পৰিবৰ্তন কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:389
+#: ../sepolicy/sepolicy/sepolicy.glade:803
+#: ../sepolicy/sepolicy/sepolicy.glade:1142
+msgid "Delete"
-+msgstr ""
++msgstr "মচি পেলাওক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:393
+#: ../sepolicy/sepolicy/sepolicy.glade:807
+msgid "Delete an existing item"
-+msgstr ""
++msgstr "এটা অস্তিত্ববান বস্তু মচি পেলাওক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:409
+#: ../sepolicy/sepolicy/sepolicy.glade:823
+msgid "Add a new item"
-+msgstr ""
++msgstr "এটা নতুন বস্তু যোগ কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:442
+msgid "File path used to enter the above selected process domain."
-+msgstr ""
++msgstr "নিৰ্বাচিত উপৰক্ত প্ৰক্ৰিয়া ডমেইন সুমুৱাবলে ব্যৱহাৰ কৰা ফাইল পথ।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:450
+#: ../sepolicy/sepolicy/sepolicy.glade:531
+msgid "File Path"
-+msgstr ""
++msgstr "ফাইল পথ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:468
+#: ../sepolicy/sepolicy/sepolicy.glade:549
+msgid "SELinux File Label"
-+msgstr ""
++msgstr "SELinux ফাইল লেবেল"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:485
+#: ../sepolicy/sepolicy/sepolicy.glade:567
+#: ../sepolicy/sepolicy/sepolicy.glade:660
+msgid "Class"
-+msgstr ""
++msgstr "শ্ৰেণী"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:505
+msgid "File path used to enter the 'selected domain'."
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' সুমুৱাবলে ব্যৱহাৰ কৰা ফাইল পথ।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:506
+msgid "Executable Files"
-+msgstr ""
++msgstr "এক্সিকিউটেবুল ফাইলসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:523
+msgid "Files to which the above selected process domain can write."
-+msgstr ""
++msgstr "ফাইলসমূহ য'লৈ উপৰক্ত নিৰ্বাচিত প্ৰক্ৰিয়া ডমেইনে লিখিব পাৰিব।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:591
+msgid "Files to which the 'selected domain' can write."
-+msgstr ""
++msgstr "ফাইলসমূহ য'লৈ 'নিৰ্বাচিত ডমেইন' এ লিখিব পাৰিব।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:592
+msgid "Writable Files"
-+msgstr ""
++msgstr "লিখিব পৰা ফাইলসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:610
+msgid "File Types defined for the selected domain"
-+msgstr ""
++msgstr "নিৰ্বাচিত ডমেইনৰ বাবে বিৱৰিত ফাইল ধৰণসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:618
+msgid "File path"
-+msgstr ""
++msgstr "ফাইল পথ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:686
+msgid "File Types defined for the 'selected domain'."
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' ৰ বাবে বিৱৰিত ফাইল ধৰণসমূহ'।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:687
+msgid "Application File Types"
-+msgstr ""
++msgstr "এপ্লিকেচন ফাইল ধৰণসমূহ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:856
+msgid "Network Ports to which the selected domain is allowed to connect."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ নিৰ্বাচিত ডমেইনৰ সংযোগ কৰাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:898
+#: ../sepolicy/sepolicy/sepolicy.glade:997
+msgid "Modified"
-+msgstr ""
++msgstr "পৰিবৰ্তিত"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:937
+msgid "Network Ports to which the 'selected domain' is allowed to connect."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ 'নিৰ্বাচিত ডমেইন' ৰ সংযোগ কৰাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:938
+msgid "Outbound"
-+msgstr ""
++msgstr "বহিৰ্গামী"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:955
+msgid "Network Ports to which the selected domain is allowed to listen."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ নিৰ্বাচিত ডমেইনৰ শুনাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1038
+msgid "Network Ports to which the 'selected domain' is allowed to listen."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ 'নিৰ্বাচিত ডমেইন' ৰ শুনাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1039
+msgid "Inbound"
-+msgstr ""
++msgstr "অন্তগামী"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1189
+#: ../sepolicy/sepolicy/sepolicy.glade:1260
+msgid ""
+"Executables which will transition to a different domain, when the 'selected "
+"domain' executes them."
-+msgstr ""
++msgstr "এক্সিকিউটেবুলসমূহ যি এটা ভিন্ন ডমেইনলৈ পৰিবৰ্তন কৰিব, যেতিয়া 'নিৰ্বাচিত ডমেইন' এ সিহতক এক্সিকিউট কৰে।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1194
+#: ../sepolicy/sepolicy/sepolicy.glade:1285
+msgid "Enabled"
-+msgstr ""
++msgstr "সামৰ্থবান"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1223
+msgid "Executable File Type"
-+msgstr ""
++msgstr "এক্সিকিউটেবুল ফাইল ধৰণ"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1239
+msgid "Transtype"
-+msgstr ""
++msgstr "Transtype"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1263
+msgid "Transitions From 'select domain'"
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' ৰ পৰা পৰিবৰ্তন"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1280
+#: ../sepolicy/sepolicy/sepolicy.glade:1337
+msgid ""
+"Executables which will transition to the 'selected domain', when executing a"
+" selected domains entrypoint."
-+msgstr ""
++msgstr "এক্সিকিউটেবুলসমূহ যি এটা 'নিৰ্বাচিত ডমেইন' লৈ পৰিবৰ্তন কৰিব, যেতিয়া নিৰ্বাচিত ডমেইনৰ প্ৰৱেশবিন্দু এক্সিকিউট কৰা হয়।"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1299
+msgid "Calling Process Domain"
-+msgstr ""
++msgstr "কল কৰা প্ৰক্ৰিয়া ডমেইন"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1313
+msgid "Executable File"
-+msgstr ""
++msgstr "এক্সিকিউটেবুল ফাইল"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1338
+msgid "Transitions Into 'select domain'"
-+msgstr ""
++msgstr "'নিৰ্বাচিত ডমেইন' লৈ পৰিবৰ্তন"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1388
+msgid "Reset"
-+msgstr ""
++msgstr "পুনৰসংহতি কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1392
+msgid "Reset to system default"
-+msgstr ""
++msgstr "চিস্টেম অবিকল্পিতলৈ পুনৰসংহতি কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1403
+msgid "Update"
-+msgstr ""
++msgstr "আপডেইট কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1407
+msgid "Save your changes"
-+msgstr ""
++msgstr "আপোনাৰ পৰিবৰ্তনসমূহ সংৰক্ষণ কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1454
+#: ../sepolicy/sepolicy/sepolicy.glade:1541
+#: ../sepolicy/sepolicy/sepolicy.glade:1629
+msgid "Add a File"
-+msgstr ""
++msgstr "এটা ফাইল যোগ কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1504
+#: ../sepolicy/sepolicy/sepolicy.glade:1592
+#: ../sepolicy/sepolicy/sepolicy.glade:1680
+msgid "Save changes"
-+msgstr ""
++msgstr "পৰিবৰ্তনসমূহ সংৰক্ষণ কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1518
+#: ../sepolicy/sepolicy/sepolicy.glade:1606
+#: ../sepolicy/sepolicy/sepolicy.glade:1694
+msgid "Reset Changes"
-+msgstr ""
++msgstr "পৰিবৰ্তনসমূহ পুনৰসংহতি কৰক"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1780
+msgid "Applicaiton more detailed view"
-+msgstr ""
++msgstr "এপ্লিকেচনৰ অধিক বিৱৰিত দৰ্শন"
+
+#: ../sepolicy/sepolicy/sepolicy.glade:1874
+msgid "Analyzing Policy..."
-+msgstr ""
++msgstr "নীতি বিশ্লেষণ কৰা হৈছে..."
+
+#: ../sepolicy/sepolicy/gui.py:49
+msgid "No"
-+msgstr ""
++msgstr "নহয়"
+
+#: ../sepolicy/sepolicy/gui.py:49
+msgid "Yes"
-+msgstr ""
++msgstr "হয়"
+
+#: ../sepolicy/sepolicy/gui.py:61
+msgid "GTK Not Available"
-+msgstr ""
++msgstr "GTK উপলব্ধ নহয়"
+
+#: ../sepolicy/sepolicy/gui.py:195
+msgid "System Status: Enforcing"
-+msgstr ""
++msgstr "চিস্টেমৰ অৱস্থা: Enforcing"
+
+#: ../sepolicy/sepolicy/gui.py:197
+msgid "System Status: Permissive"
-+msgstr ""
++msgstr "চিস্টেমৰ অবস্থা: Permissive"
+
+#: ../sepolicy/sepolicy/gui.py:199
+msgid "System Status: Disabled"
-+msgstr ""
++msgstr "চিস্টেমৰ অবস্থা: Disabled"
+
+#: ../sepolicy/sepolicy/gui.py:413
+#, python-format
+msgid "File path used to enter the '%s' domain."
-+msgstr ""
++msgstr "'%s' ডমেইন সুমুৱাবলে ব্যৱহৃত ফাইল পথ।"
+
+#: ../sepolicy/sepolicy/gui.py:414
+#, python-format
+msgid "Files to which the '%s' domain can write."
-+msgstr ""
++msgstr "ফাইলসমূহ য'লৈ '%s' ডমেইনে লিখিব পাৰিব।"
+
+#: ../sepolicy/sepolicy/gui.py:415
+#, python-format
+msgid "Network Ports to which the '%s' is allowed to connect."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ '%s' ৰ সংযোগ কৰাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/gui.py:416
+#, python-format
+msgid "Network Ports to which the '%s' is allowed to listen."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ '%s' ৰ শুনাৰ অনুমতি আছে।"
+
+#: ../sepolicy/sepolicy/gui.py:417
+#, python-format
+msgid "File Types defined for the '%s'."
-+msgstr ""
++msgstr "'%s' ৰ বাবে বিৱৰিত ফাইল ধৰণসমূহ'।"
+
+#: ../sepolicy/sepolicy/gui.py:418
+#, python-format
+msgid ""
+"Display boolean information that can be used to modify the policy for the "
+"'%s'."
-+msgstr ""
++msgstr "'%s' ৰ বাবে নীতি পৰিবৰ্তন কৰিবলে ব্যৱহাৰ কৰিব পৰা বুলিয়ান তথ্য প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/gui.py:419
+#, python-format
+msgid "Display file type information that can be used by the '%s'."
-+msgstr ""
++msgstr "'%s' দ্বাৰা ব্যৱহাৰ কৰিব পৰা ফাইল ধৰণ তথ্য প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/gui.py:420
+#, python-format
+msgid "Display network ports to which the '%s' can connect or listen to."
-+msgstr ""
++msgstr "নেটৱাৰ্ক পৰ্টসমূহ য'লৈ '%s' ডমেইনে সংযোগ অথবা শুনিব পাৰিব প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/gui.py:421
+#, python-format
+msgid "Transitions Into '%s'"
-+msgstr ""
++msgstr "'%s' লৈ পৰিবৰ্তন"
+
+#: ../sepolicy/sepolicy/gui.py:422
+#, python-format
+msgid "Transitions From '%s'"
-+msgstr ""
++msgstr "'%s' ৰ পৰা পৰিবৰ্তন"
+
+#: ../sepolicy/sepolicy/gui.py:423
+#, python-format
+msgid ""
+"Executables which will transition to the '%s', when executing a selected "
+"domains entrypoint."
-+msgstr ""
++msgstr "এক্সিকিউটেবুলসমূহ যি এটা '%s' লৈ পৰিবৰ্তন কৰিব, যেতিয়া নিৰ্বাচিত ডমেইনৰ প্ৰৱেশবিন্দু এক্সিকিউট কৰা হয়।"
+
+#: ../sepolicy/sepolicy/gui.py:424
+#, python-format
+msgid ""
+"Executables which will transition to a different domain, when the '%s' "
+"executes them."
-+msgstr ""
++msgstr "এক্সিকিউটেবুলসমূহ যি এটা ভিন্ন ডমেইনলৈ পৰিবৰ্তন কৰিব, যেতিয়া '%s' এ সিহতক এক্সিকিউট কৰে।"
+
+#: ../sepolicy/sepolicy/gui.py:425
+#, python-format
+msgid "Display applications that can transition into or out of the '%s'."
-+msgstr ""
++msgstr "'%s' ত অথবা বাহিৰত পৰিবৰ্তন কৰিব পৰা এপ্লিকেচনসমূহ প্ৰদৰ্শন কৰক।"
+
+#: ../sepolicy/sepolicy/gui.py:604
+#, python-format
+msgid "Boolean %s Allow Rules"
-+msgstr ""
++msgstr "বুলিয়ান %s অনুমতিৰ নিয়মবোৰ"
diff --git a/policycoreutils/po/ast.po b/policycoreutils/po/ast.po
index 7b3df31..fb806e7 100644
--- a/policycoreutils/po/ast.po
@@ -318089,7 +318089,7 @@ index 0000000..e2befdb
+ packages=["policycoreutils"],
+)
diff --git a/policycoreutils/semanage/semanage b/policycoreutils/semanage/semanage
-index 6e33c85..4708c98 100644
+index 6e33c85..ce4e23d 100644
--- a/policycoreutils/semanage/semanage
+++ b/policycoreutils/semanage/semanage
@@ -1,5 +1,7 @@
@@ -318101,7 +318101,7 @@ index 6e33c85..4708c98 100644
# see file 'COPYING' for use and warranty information
#
# semanage is a tool for managing SELinux configuration files
-@@ -19,564 +21,770 @@
+@@ -19,564 +21,797 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA
#
@@ -318139,10 +318139,10 @@ index 6e33c85..4708c98 100644
+usage_fcontext_dict = {' --add':('(','-t TYPE','-f FTYPE','-r RANGE','-s SEUSER', '|','-e EQUAL', ')','FILE_SPEC',')' ,),' --delete':('(','-t TYPE','-f FTYPE','|','-e EQUAL',')','FILE_SPEC', ')',),' --modify':('(','-t TYPE','-f FTYPE','-r RANGE','-s SEUSER','|','-e EQUAL',')','FILE_SPEC )',),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
+
+usage_user = "semanage fcontext [-h] [-n] [-N] [-s STORE] ["
-+usage_user_dict = {' --add':('(','-L LEVEL','-P PREFIX','-R ROLES','-r RANGE','-s SEUSER','selinux_name'')'),' --delete':('selinux_name',),' --modify':('(','-L LEVEL','-P PREFIX','-R ROLES','-r RANGE','-s SEUSER','selinux_name',')'),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
++usage_user_dict = {' --add':('(','-L LEVEL','-R ROLES','-r RANGE','-s SEUSER','selinux_name'')'),' --delete':('selinux_name',),' --modify':('(','-L LEVEL','-R ROLES','-r RANGE','-s SEUSER','selinux_name',')'),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
+
+usage_port = "semanage port [-h] [-n] [-N] [-s STORE] ["
-+usage_port_dict = {' --add':('-t TYPE','-p PROTOCOL','-r RANGE','port_name','|','port_range'),' --modify':('-t TYPE','-p PROTOCOL','-r RANGE','port_name','|','port_range'), ' --delete':('-p PROTOCOL', 'port_name','|','port_range'),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
++usage_port_dict = {' --add':('-t TYPE','-p PROTOCOL','-r RANGE','(','port_name','|','port_range',')'),' --modify':('-t TYPE','-p PROTOCOL','-r RANGE','(','port_name','|','port_range',')'), ' --delete':('-p PROTOCOL','(','port_name','|','port_range',')'),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
+
+usage_node = "semanage node [-h] [-n] [-N] [-s STORE] ["
+usage_node_dict = {' --add':('-M NETMASK','-p PROTOCOL','-t TYPE','-r RANGE','node'),' --modify':('-M NETMASK','-p PROTOCOL','-t TYPE','-r RANGE','node'), ' --delete':('-M NETMASK','-p PROTOCOL','node'),' --list':('-C',), ' --extract':('',), ' --deleteall':('',)}
@@ -318308,31 +318308,76 @@ index 6e33c85..4708c98 100644
+ for i in OBJECT.customized():
+ print "%s %s" % (object, str(i))
+
-+def setupLoginParser(subparsers):
-+ generated_usage = generate_custom_usage(usage_login, usage_login_dict)
-+ loginParser = subparsers.add_parser('login', usage=generated_usage, help=_("Manage login mappings between linux users and SELinux confined users"))
-+ loginParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_("Do not print heading when listing the specified object type"))
-+ loginParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_("Do not reload policy after commit"))
-+ loginParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
-+ loginParser.add_argument('-S', '--store', action=SetStore, help=_("Select an alternate SELinux Policy Store to manage"))
++def parser_add_store(parser, name):
++ parser.add_argument('-S', '--store', action=SetStore, help=_("Select an alternate SELinux Policy Store to manage"))
+
-+ login_action = loginParser.add_mutually_exclusive_group(required=True)
-+ login_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_("Add a record of the specified object type"))
-+ login_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_("Delete a record of the specified object type"))
-+ login_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_("Modify a record of the specified object type"))
-+ login_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_("List records of the specified object type"))
-+ login_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_("Extract customizable commands, for use within a transaction"))
-+ login_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_("Remove all OBJECTS local customizations"))
-+
-+ loginParser.add_argument('-s', '--seuser', default=None,
-+ help=_("SELinux user name"))
-+ loginParser.add_argument('-r', '--range', default="",
++def parser_add_noheading(parser, name):
++ parser.add_argument('-n', '--noheading', action='store_false', default=True, help=_("Do not print heading when listing %s object types") % name )
++
++def parser_add_noreload(parser, name):
++ parser.add_argument('-N', '--noreload', action='store_false', default=True, help=_('Do not reload policy after commit'))
++
++def parser_add_locallist(parser, name):
++ parser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List %s local customizations") % name )
++
++def parser_add_add(parser, name):
++ parser.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_("Add a record of the %s object type") % name )
++
++def parser_add_type(parser, name):
++ parser.add_argument('-t', '--type', help=_('SELinux Type for the object'))
++def parser_add_level(parser, name):
++ parser.add_argument('-L', '--level', default="s0", help=_('Default SELinux Level for SELinux user, s0 Default. (MLS/MCS Systems only)'))
++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.
+'''))
++def parser_add_proto(parser, name):
++ parser.add_argument('-p', '--proto', help=_('''
++ Protocol for the specified port (tcp|udp) or internet protocol
++ version for the specified node (ipv4|ipv6).
++'''))
++
++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 )
++
++def parser_add_list(parser, name):
++ parser.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_("List records of the %s object type") % name )
++
++def parser_add_delete(parser, name):
++ parser.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_("Delete a record of the %s object type") % name )
++
++def parser_add_extract(parser, name):
++ parser.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_("Extract customizable commands, for use within a transaction"))
++
++def parser_add_deleteall(parser, name):
++ parser.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all %s objects local customizations') % name )
++
++def parser_add_seuser(parser, name):
++ parser.add_argument('-s', '--seuser', default=None, help=_("SELinux user name"))
++
++def setupLoginParser(subparsers):
++ generated_usage = generate_custom_usage(usage_login, usage_login_dict)
++ loginParser = subparsers.add_parser('login', usage=generated_usage, help=_("Manage login mappings between linux users and SELinux confined users"))
++ parser_add_locallist(loginParser, "login")
++ parser_add_noheading(loginParser, "login")
++ parser_add_noreload(loginParser, "login")
++ parser_add_store(loginParser, "login")
++
++ login_action = loginParser.add_mutually_exclusive_group(required=True)
++
++ parser_add_add(login_action, "login")
++ parser_add_delete(login_action, "login")
++ parser_add_modify(login_action, "login")
++ parser_add_list(login_action, "login")
++ parser_add_extract(login_action, "login")
++ parser_add_deleteall(login_action, "login")
++ parser_add_seuser(loginParser, "login")
++
++ parser_add_range(login_action, "login")
+ loginParser.add_argument('login', nargs='?', default=None, help=_("login_name | %%groupname"))
+ loginParser.set_defaults(func=handleLogin)
+
@@ -318386,29 +318431,27 @@ index 6e33c85..4708c98 100644
+'''
+ generate_usage = generate_custom_usage(usage_fcontext, usage_fcontext_dict)
+ fcontextParser = subparsers.add_parser('fcontext',usage=generate_usage, help=_("Manage file context mapping definitions"))
-+ fcontextParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_("Do not print heading when listing the specified object type"))
-+ fcontextParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_("Do not reload policy after commit"))
-+ fcontextParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
-+ fcontextParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
++ parser_add_locallist(fcontextParser, "fcontext")
++ parser_add_noheading(fcontextParser, "fcontext")
++ parser_add_noreload(fcontextParser, "fcontext")
++ parser_add_store(fcontextParser, "fcontext")
+
+ fcontext_action = fcontextParser.add_mutually_exclusive_group(required=False)
-+ fcontext_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ fcontext_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ fcontext_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ fcontext_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ fcontext_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ fcontext_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
++ parser_add_add(fcontext_action, "fcontext")
++ parser_add_delete(fcontext_action, "fcontext")
++ parser_add_modify(fcontext_action, "fcontext")
++ parser_add_list(fcontext_action, "fcontext")
++ 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=["all files", '""',"--","-d","-c","-b","-s","-l","-p"], help=_(ftype_help))
-+ fcontextParser.add_argument('-s', '--seuser', default="", help=_('SELinux user name'))
-+ fcontextParser.add_argument('-t', '--type', help=_('SELinux Type for the object'))
-+ fcontextParser.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_seuser(fcontextParser, "fcontext")
++ parser_add_type(fcontextParser, "fcontext")
++ parser_add_range(fcontextParser, "fcontext")
+ fcontextParser.add_argument('file_spec', nargs='?', default=None, help=_('file_spec'))
+ fcontextParser.set_defaults(func=handleFcontext)
+
@@ -318437,31 +318480,27 @@ index 6e33c85..4708c98 100644
+def setupUserParser(subparsers):
+ generated_usage = generate_custom_usage(usage_user, usage_user_dict)
+ userParser = subparsers.add_parser('user', usage=generated_usage,help=_('Manage SELinux confined users (Roles and levels for an SELinux user)'))
-+ userParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ userParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ userParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ userParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
++ parser_add_locallist(userParser, "user")
++ parser_add_noheading(userParser, "user")
++ parser_add_noreload(userParser, "user")
++ parser_add_store(userParser, "user")
+
+ user_action = userParser.add_mutually_exclusive_group(required=True)
-+ user_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ user_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ user_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ user_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ user_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ user_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
-+
-+ userParser.add_argument('-L', '--level', default="", help=_('Default SELinux Level for SELinux user, s0 Default. (MLS/MCS Systems only)'))
-+ userParser.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_add(user_action, "user")
++ parser_add_delete(user_action, "user")
++ parser_add_modify(user_action, "user")
++ parser_add_list(user_action, "user")
++ parser_add_extract(user_action, "user")
++ parser_add_deleteall(user_action, "user")
++
++ parser_add_level(userParser, "user")
++ 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.
+'''))
-+ userParser.add_argument('-P', '--prefix', default="user", help=_('''SELinux Prefix. Prefix added to home_dir_t and home_t for
-+ labeling users home directories.'''))
++ 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)
+
@@ -318490,25 +318529,21 @@ index 6e33c85..4708c98 100644
+def setupPortParser(subparsers):
+ generated_usage = generate_custom_usage(usage_port, usage_port_dict)
+ portParser = subparsers.add_parser('port', usage=generated_usage, help=_('Manage network port type definitions'))
-+ portParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ portParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ portParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ portParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
++ parser_add_locallist(portParser, "port")
++ parser_add_noheading(portParser, "port")
++ parser_add_noreload(portParser, "port")
++ parser_add_store(portParser, "port")
+
+ port_action = portParser.add_mutually_exclusive_group(required=True)
-+ port_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ port_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ port_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ port_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ port_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ port_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
-+ portParser.add_argument('-t', '--type', help=_('SELinux type for the object'))
-+ portParser.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.'''))
-+ portParser.add_argument('-p', '--proto', help=_('''Protocol for the specified port (tcp|udp) or internet protocol
-+ version for the specified node (ipv4|ipv6).'''))
++ parser_add_add(port_action, "port")
++ parser_add_delete(port_action, "port")
++ parser_add_modify(port_action, "port")
++ parser_add_list(port_action, "port")
++ parser_add_extract(port_action, "port")
++ parser_add_deleteall(port_action, "port")
++ parser_add_type(portParser, "port")
++ parser_add_range(portParser, "port")
++ parser_add_proto(portParser, "port")
+ portParser.add_argument('port', nargs='?', default=None, help=_('port | port_range'))
+ portParser.set_defaults(func=handlePort)
+
@@ -318537,24 +318572,20 @@ index 6e33c85..4708c98 100644
+def setupInterfaceParser(subparsers):
+ generated_usage = generate_custom_usage(usage_interface, usage_interface_dict)
+ interfaceParser = subparsers.add_parser('interface', usage=generated_usage, help=_('Manage network interface type definitions'))
-+ interfaceParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ interfaceParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ interfaceParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ interfaceParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
++ parser_add_locallist(interfaceParser, "interface")
++ parser_add_noheading(interfaceParser, "interface")
++ parser_add_noreload(interfaceParser, "interface")
++ parser_add_store(interfaceParser, "interface")
+
+ interface_action = interfaceParser.add_mutually_exclusive_group(required=True)
-+ interface_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ interface_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ interface_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ interface_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ interface_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ interface_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
-+
-+ interfaceParser.add_argument('-t', '--type', help=_('SELinux type for the object'))
-+ interfaceParser.add_argument('-r', '--range', 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_add(interface_action, "interface")
++ parser_add_delete(interface_action, "interface")
++ parser_add_modify(interface_action, "interface")
++ parser_add_list(interface_action, "interface")
++ parser_add_extract(interface_action, "interface")
++ parser_add_deleteall(interface_action, "interface")
++ parser_add_type(interface_action, "interface")
++ parser_add_range(interface_action, "interface")
+ interfaceParser.add_argument('interface', nargs='?', default=None, help=_('interface_spec'))
+ interfaceParser.set_defaults(func=handleInterface)
+
@@ -318574,15 +318605,15 @@ index 6e33c85..4708c98 100644
+
+def setupModuleParser(subparsers):
+ moduleParser = subparsers.add_parser('module', help=_('Manage SELinux policy modules'))
-+ moduleParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ moduleParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ moduleParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
++ parser_add_noheading(moduleParser, "module")
++ parser_add_noreload(moduleParser, "module")
++ parser_add_store(moduleParser, "module")
+
+ mgroup = moduleParser.add_mutually_exclusive_group(required=True)
-+ mgroup.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ mgroup.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ mgroup.add_argument('-m', '--modify', dest='action', choices=['enable', 'disable'], help=_('Enable or Disable specified module'))
-+ mgroup.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
++ parser_add_add(mgroup, "module")
++ parser_add_delete(mgroup, "module")
++ parser_add_modify(mgroup, "module")
++ parser_add_list(mgroup, "module")
+
+ moduleParser.add_argument('module_name', nargs='?', default=None, help=_('Name of the module to act on'))
+ moduleParser.set_defaults(func=handleModule)
@@ -318611,27 +318642,23 @@ index 6e33c85..4708c98 100644
+def setupNodeParser(subparsers):
+ generated_usage = generate_custom_usage(usage_node, usage_node_dict)
+ nodeParser = subparsers.add_parser('node', usage=generated_usage, help=_('Manage network node type definitions'))
-+ nodeParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ nodeParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ nodeParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ nodeParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
++ parser_add_locallist(nodeParser, "node")
++ parser_add_noheading(nodeParser, "node")
++ parser_add_noreload(nodeParser, "node")
++ parser_add_store(nodeParser, "node")
+
+ node_action = nodeParser.add_mutually_exclusive_group(required=True)
-+ node_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ node_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ node_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ node_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ node_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ node_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
++ parser_add_add(node_action, "node")
++ parser_add_delete(node_action, "node")
++ parser_add_modify(node_action, "node")
++ parser_add_list(node_action, "node")
++ parser_add_extract(node_action, "node")
++ parser_add_deleteall(node_action, "node")
+
+ nodeParser.add_argument('-M', '--netmask', help=_('Network Mask'))
-+ nodeParser.add_argument('-t', '--type', help=_('SELinux type for the object'))
-+ nodeParser.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.'''))
-+ nodeParser.add_argument('-p', '--proto', help=_('''Protocol for the specified port (tcp|udp) or internet protocol
-+ version for the specified node (ipv4|ipv6).'''))
++ parser_add_type(nodeParser, "node")
++ parser_add_range(nodeParser, "node")
++ parser_add_proto(nodeParser, "node")
+ nodeParser.add_argument('node', nargs='?', default=None, help=_('node'))
+ nodeParser.set_defaults(func=handleNode)
+
@@ -318667,19 +318694,19 @@ index 6e33c85..4708c98 100644
+def setupBooleanParser(subparsers):
+ generated_usage = generate_custom_usage(usage_boolean, usage_boolean_dict)
+ booleanParser = subparsers.add_parser('boolean',usage=generated_usage, help=_('Manage booleans to selectively enable functionality'))
-+ booleanParser.add_argument('-n', '--noheading', action='store_false', default=True, help=_('Do not print heading when listing the specified object type'))
-+ booleanParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ booleanParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ booleanParser.add_argument('-C', '--locallist', action='store_true', default=False, help=_("List OBJECTS local customizations"))
++ parser_add_locallist(booleanParser, "boolean")
++ parser_add_noheading(booleanParser, "boolean")
++ parser_add_noreload(booleanParser, "boolean")
++ parser_add_store(booleanParser, "boolean")
+ booleanParser.add_argument('boolean', nargs="?", default=None, help=_('boolean | boolean_file'))
+
+ boolean_action = booleanParser.add_mutually_exclusive_group(required=False)
-+ #boolean_action.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type')
-+ boolean_action.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ boolean_action.add_argument('-m', '--modify', dest='action', action='store_const', const='modify', help=_('Modify a record of the specified object type'))
-+ boolean_action.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
-+ boolean_action.add_argument('-E', '--extract', dest='action', action='store_const', const='extract', help=_('Extract customizable commands, for use within a transaction'))
-+ boolean_action.add_argument('-D', '--deleteall', dest='action', action='store_const', const='deleteall', help=_('Remove all OBJECTS local customizations'))
++ #add_add(boolean_action)
++ parser_add_delete(boolean_action, "boolean")
++ parser_add_modify(boolean_action, "boolean")
++ parser_add_list(boolean_action, "boolean")
++ parser_add_extract(boolean_action, "boolean")
++ parser_add_deleteall(boolean_action, "boolean")
+
+ booleanGroup = booleanParser.add_mutually_exclusive_group(required=False)
+ booleanGroup.add_argument('-1', '--on', dest='state', action='store_const', const='on', help=_('Enable the boolean'))
@@ -318702,15 +318729,15 @@ index 6e33c85..4708c98 100644
+ permissiveParser = subparsers.add_parser('permissive', help=_('Manage process type enforcement mode'))
+
+ pgroup = permissiveParser.add_mutually_exclusive_group(required=True)
-+ pgroup.add_argument('-a', '--add', dest='action', action='store_const', const='add', help=_('Add a record of the specified object type'))
-+ pgroup.add_argument('-d', '--delete', dest='action', action='store_const', const='delete', help=_('Delete a record of the specified object type'))
-+ pgroup.add_argument('-l', '--list', dest='action', action='store_const', const='list', help=_('List records of the specified object type'))
++ parser_add_add(pgroup, "permissive")
++ parser_add_delete(pgroup, "permissive")
++ parser_add_list(pgroup, "permissive")
+ #TODO: probably should be also added => need to implement own option handling
-+ #pgroup.add_argument('-D', '--deleteall', action='store_true', help=_('Remove all local customizations for the specified object type')
++ #parser_add_deleteall(pgroup)
+
-+ permissiveParser.add_argument('-n', '--noheading', action='store_true', help=_('Do not print heading when listing the specified object type'))
-+ permissiveParser.add_argument('-N', '--noreload', action='store_true', help=_('Do not reload the policy after commit'))
-+ permissiveParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
++ parser_add_noheading(permissiveParser, "permissive")
++ parser_add_noreload(permissiveParser, "permissive")
++ parser_add_store(permissiveParser, "permissive")
+ permissiveParser.add_argument('type', nargs='?', default=None, help=_('type'))
+ permissiveParser.set_defaults(func=handlePermissive)
+
@@ -318721,8 +318748,8 @@ index 6e33c85..4708c98 100644
+
+def setupDontauditParser(subparsers):
+ dontauditParser = subparsers.add_parser('dontaudit', help=_('Disable/Enable dontaudit rules in policy'))
-+ dontauditParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
-+ dontauditParser.add_argument('-N', '--noreload', action='store_true', help=_('Do not reload the policy after commit'))
++ parser_add_noreload(dontauditParser, "dontaudit")
++ parser_add_store(dontauditParser, "dontaudit")
+ dontauditParser.add_argument('action', choices=["on", "off"])
+ dontauditParser.set_defaults(func=handleDontaudit)
+
@@ -318738,7 +318765,7 @@ index 6e33c85..4708c98 100644
+
+def setupExportParser(subparsers):
+ exportParser = subparsers.add_parser('export', help=_('Output local customizations'))
-+ exportParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
++ parser_add_store(exportParser, "export")
+ exportParser.add_argument('-f', '--output_file', dest='output_file', action=SetExportFile, help=_('Output file'))
+ exportParser.set_defaults(func=handleExport)
+
@@ -318813,8 +318840,8 @@ index 6e33c85..4708c98 100644
+
+def setupImportParser(subparsers):
+ importParser = subparsers.add_parser('import', help=_('Output local customizations'))
-+ importParser.add_argument('-N', '--noreload', action='store_false', default=False, help=_('Do not reload policy after commit'))
-+ importParser.add_argument('-S', '--store', action=SetStore, help=_('Select an alternate SELinux Policy Store to manage'))
++ parser_add_noreload(importParser, "import")
++ parser_add_store(importParser, "import")
+ importParser.add_argument('-f', '--input_file', dest='input_file', action=SetImportFile, help=_('Input file'))
+ importParser.set_defaults(func=handleImport)
+
diff --git a/policycoreutils.spec b/policycoreutils.spec
index cb8c60c..8b1abe3 100644
--- a/policycoreutils.spec
+++ b/policycoreutils.spec
@@ -7,7 +7,7 @@
Summary: SELinux policy core utilities
Name: policycoreutils
Version: 2.1.14
-Release: 65%{?dist}
+Release: 67%{?dist}
License: GPLv2
Group: System Environment/Base
# Based on git repository with tag 20101221
@@ -330,8 +330,15 @@ The policycoreutils-restorecond package contains the restorecond service.
%systemd_postun_with_restart restorecond.service
%changelog
+* Fri Jul 19 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-67
+- Fix bugs introduced by previous patch. semanage port
+- Update Translations
+
+* Wed Jul 17 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-66
+- Rewrite argparse code in semanage and fix reload problem.
+
* Tue Jul 16 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-65
-- Don't generate shell script or spec file for sepolicy generate --newtype
+- Do not generate shell script or spec file for sepolicy generate --newtype
- Update translations
- Fix sepolicy generate --admin_user man page again
- Fix setsebool to print less verbose error messages by default, add -V for ve
More information about the scm-commits
mailing list