Imported Upstream version 1.8.6p8
[debian/sudo] / doc / fixmdoc.sh
1 #!/bin/sh
2
3 OUTFILE="$1"
4 rm -f "$OUTFILE"
5 > "$OUTFILE"
6
7 # Page specific hacks
8 case "$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         # Subsections to remove (SELinux and Solaris are adjacent)
87         RM_SS=
88         if [ X"$PSMAN" != X"1" ]; then
89             if [ X"$SEMAN" != X"1" ]; then
90                 RM_SS='/^\.Ss SELinux_Spec/,/^\.Ss [^S]/{;/^\.Ss [^S][^o][^l]/!d;};'
91             else
92                 RM_SS='/^\.Ss Solaris_Priv_Spec/,/^\.Ss/{;/^\.Ss [^S][^o][^l]/!d;};'
93             fi
94         elif [ X"$SEMAN" != X"1" ]; then
95                 RM_SS='/^\.Ss SELinux_Spec/,/^\.Ss/{;/^\.Ss [^S][^E][^L]/!d;};'
96         fi
97         if [ -n "$RM_SS" ]; then
98                 cat >>"$OUTFILE" <<-EOF
99                         $RM_SS
100                 EOF
101         fi
102
103         # BSD login class
104         if [ X"$LCMAN" != X"1" ]; then
105                 cat >>"$OUTFILE" <<-'EOF'
106                         /^On BSD systems/,/\.$/ {
107                                 d
108                         }
109                         /^\.It use_loginclass$/,/^\.It/ {
110                                 /^\.It [^u][^s][^e][^_][^l]/!d
111                         }
112                 EOF
113         fi
114
115         # Solaris PrivSpec
116         if [ X"$PSMAN" != X"1" ]; then
117                 cat >>"$OUTFILE" <<-'EOF'
118                         s/Solaris_Priv_Spec? //
119                         /^Solaris_Priv_Spec ::=/ {
120                                 N
121                                 d
122                         }
123                         /^\.It limitprivs$/,/^\.It/ {
124                                 /^\.It [^l][^i][^m][^i][^t]/!d
125                         }
126                         /^\.It privs$/,/^\.It/ {
127                                 /^\.It [^p][^r][^i][^v][^s]$/!d
128                         }
129                         /^On Solaris 10/,/^\.Pp/ {
130                                 d
131                         }
132                 EOF
133         fi
134
135         # SELinux
136         if [ X"$SEMAN" != X"1" ]; then
137                 cat >>"$OUTFILE" <<-'EOF'
138                         s/SELinux_Spec? //
139                         /^SELinux_Spec ::=/ {
140                                 N
141                                 d
142                         }
143                         /^\.It [rt][oy][lp]e$/,/^\.It/ {
144                                 /^\.It [^rt][^oy][^lp][^e]$/!d
145                         }
146                 EOF
147         fi
148         ;;
149 esac