3 # Copyright (c) 2012-2013 Todd C. Miller <Todd.Miller@courtesan.com>
5 # Permission to use, copy, modify, and distribute this software for any
6 # purpose with or without fee is hereby granted, provided that the above
7 # copyright notice and this permission notice appear in all copies.
9 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 # Replace "0 minutes" with "unlimited"
26 cat >>"$OUTFILE" <<-'EOF'
29 s/^\.Li 0\nminutes\.$/unlimited./
35 if [ X"$BAMAN" != X"1" ]; then
36 BA_FLAG='/^.*\n\.Op Fl a Ar auth_type/{;N;/^.*\n\.Ek$/d;};'
37 cat >>"$OUTFILE" <<-'EOF'
38 /^\.It Fl a Ar type/,/BSD authentication\.$/ {
46 if [ X"$LCMAN" != X"1" ]; then
47 LC_FLAG='/^.*\n\.Op Fl c Ar class/{;N;/^.*\n\.Ek$/d;};'
48 cat >>"$OUTFILE" <<-'EOF'
49 /^\.It Fl c Ar class/,/BSD login classes\.$/ {
52 /^\.Xr login_cap 3 ,$/d
55 /^BSD login class\n\.It$/d
62 if [ X"$SEMAN" != X"1" ]; then
63 SE_FLAG='/^.*\n\.Op Fl r Ar role/{;N;/^.*\n\.Ek$/d;};/^.*\n\.Op Fl t Ar type/{;N;/^.*\n\.Ek$/d;};'
64 cat >>"$OUTFILE" <<-'EOF'
65 /^\.It Fl r Ar role/,/^\.Ar role \.$/ {
68 /^\.It Fl t Ar type/,/specified role\.$/ {
71 /^SELinux role and type$/ {
73 /^SELinux role and type\n\.It$/d
79 if [ X"$PSMAN" != X"1" ]; then
80 cat >>"$OUTFILE" <<-'EOF'
85 /^Solaris project\n\.It\nSolaris privileges\n\.It$/d
90 # Unsupported flags must be removed together
91 if [ -n "$BA_FLAG$LC_FLAG$SE_FLAG" ]; then
92 cat >>"$OUTFILE" <<-EOF
95 $BA_FLAG$LC_FLAG$SE_FLAG
101 # Subsections to remove (SELinux and Solaris are adjacent)
103 if [ X"$PSMAN" != X"1" ]; then
104 if [ X"$SEMAN" != X"1" ]; then
105 RM_SS='/^\.Ss SELinux_Spec/,/^\.Ss [^S]/{;/^\.Ss [^S][^o][^l]/!d;};'
107 RM_SS='/^\.Ss Solaris_Priv_Spec/,/^\.Ss/{;/^\.Ss [^S][^o][^l]/!d;};'
109 elif [ X"$SEMAN" != X"1" ]; then
110 RM_SS='/^\.Ss SELinux_Spec/,/^\.Ss/{;/^\.Ss [^S][^E][^L]/!d;};'
112 if [ -n "$RM_SS" ]; then
113 cat >>"$OUTFILE" <<-EOF
119 if [ X"$LCMAN" != X"1" ]; then
120 cat >>"$OUTFILE" <<-'EOF'
121 /^On BSD systems/,/\.$/ {
124 /^\.It use_loginclass$/,/^\.It/ {
125 /^\.It [^u][^s][^e][^_][^l]/!d
131 if [ X"$PSMAN" != X"1" ]; then
132 cat >>"$OUTFILE" <<-'EOF'
133 s/Solaris_Priv_Spec? //
134 /^Solaris_Priv_Spec ::=/ {
138 /^\.It limitprivs$/,/^\.It/ {
139 /^\.It [^l][^i][^m][^i][^t]/!d
141 /^\.It privs$/,/^\.It/ {
142 /^\.It [^p][^r][^i][^v][^s]$/!d
144 /^On Solaris 10/,/^\.Pp/ {
151 if [ X"$SEMAN" != X"1" ]; then
152 cat >>"$OUTFILE" <<-'EOF'
154 /^SELinux_Spec ::=/ {
158 /^\.It [rt][oy][lp]e$/,/^\.It/ {
159 /^\.It [^rt][^oy][^lp][^e]$/!d