[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