1#!/bin/sh
2
3OUTFILE="$1"
4rm -f "$OUTFILE"
5> "$OUTFILE"
6
7# Page specific hacks
8case "$OUTFILE" in
9    sudo.mdoc.sed)
10	# Replace "0 minutes" with "unlimited"
11	cat >>"$OUTFILE" <<-'EOF'
12		/^\.Li 0$/ {
13			N
14			s/^\.Li 0\nminutes\.$/unlimited./
15		}
16	EOF
17
18	# BSD auth
19	BA_FLAG=
20	if [ X"$BAMAN" != X"1" ]; then
21		BA_FLAG='/^.*\n\.Op Fl a Ar auth_type/{;N;/^.*\n\.Ek$/d;};'
22		cat >>"$OUTFILE" <<-'EOF'
23			/^\.It Fl a Ar type/,/BSD authentication\.$/ {
24				d
25			}
26		EOF
27	fi
28
29	# BSD login class
30	LC_FLAG=
31	if [ X"$LCMAN" != X"1" ]; then
32		LC_FLAG='/^.*\n\.Op Fl c Ar class/{;N;/^.*\n\.Ek$/d;};'
33		cat >>"$OUTFILE" <<-'EOF'
34			/^\.It Fl c Ar class/,/BSD login classes\.$/ {
35				d
36			}
37			/^\.Xr login_cap 3 ,$/d
38			/^BSD login class$/ {
39				N
40				/^BSD login class\n\.It$/d
41			}
42		EOF
43	fi
44
45	# SELinux
46	SE_FLAG=
47	if [ X"$SEMAN" != X"1" ]; then
48		SE_FLAG='/^.*\n\.Op Fl r Ar role/{;N;/^.*\n\.Ek$/d;};/^.*\n\.Op Fl t Ar type/{;N;/^.*\n\.Ek$/d;};'
49		cat >>"$OUTFILE" <<-'EOF'
50			/^\.It Fl r Ar role/,/newline character\.$/ {
51				d
52			}
53			/^\.It Fl t Ar type/,/specified role\.$/ {
54				d
55			}
56			/^SELinux role and type$/ {
57				N
58				/^SELinux role and type\n\.It$/d
59			}
60		EOF
61	fi
62
63	# Solaris privileges
64	if [ X"$PSMAN" != X"1" ]; then
65		cat >>"$OUTFILE" <<-'EOF'
66			/^Solaris project$/ {
67				N
68				N
69				N
70				/^Solaris project\n\.It\nSolaris privileges\n\.It$/d
71			}
72		EOF
73	fi
74
75	# Unsupported flags must be removed together
76	if [ -n "$BA_FLAG$LC_FLAG$SE_FLAG" ]; then
77		cat >>"$OUTFILE" <<-EOF
78			/^\.Bk -words\$/ {
79			    N
80			    $BA_FLAG$LC_FLAG$SE_FLAG
81			}
82		EOF
83	fi
84	;;
85    sudoers.mdoc.sed)
86	# BSD login class
87	if [ X"$LCMAN" != X"1" ]; then
88		cat >>"$OUTFILE" <<-'EOF'
89			/^On BSD systems/,/\.$/ {
90				d
91			}
92			/^\.It use_loginclass$/,/^\.It/ {
93				/^\.It [^u][^s][^e][^_][^l]/!d
94			}
95		EOF
96	fi
97
98	# SELinux
99	if [ X"$SEMAN" != X"1" ]; then
100		cat >>"$OUTFILE" <<-'EOF'
101			s/SELinux_Spec? //
102			/^SELinux_Spec ::=/ {
103				N
104				d
105			}
106			/^\.Ss SELinux_Spec/,/^\.Ss/{;/^\.Ss [^S][^E][^L]/!d;};
107			/^\.It [rt][oy][lp]e$/,/^\.It/ {
108				/^\.It [^rt][^oy][^lp][^e]$/!d
109			}
110		EOF
111	fi
112	;;
113esac
114