|
|
1.1 root 1: : check active file for missing or extra newsgroups
2: : '@(#)checkgroups 1.23 9/24/87'
3:
4: if test ! -s LIBDIR/newsgroups
5: then
6: cp /dev/null LIBDIR/newsgroups
7: fi
8: echo "" >/tmp/$$out
9: # Read first line of stdin. If of the form "-n group", then only check
10: # for the specified group. Otherwise, assume doing standard groups
11: sed -e "/^From: /w /tmp/$$out" -e '/^[a-zA-Z-]*: /d' -e '/^$/d' -e '/^[#:]/d' | (
12: read line
13: case "${line}" in
14: -n*)
15: # Doing specific group. extract group name and preserve
16: # all of current newsgroups file except for that group.
17: # Then append entries for this group.
18: group=`echo "x${line}" | sed -e 's/x-n /^/' -e 's/$/[. ]/'`
19: egrep -v "${group}" LIBDIR/newsgroups > /tmp/$$a
20: cat /tmp/$$a - > LIBDIR/newsgroups
21: ;;
22: *)
23: # Get the distributions from the checkgroups message itself
24: # This allows sites to append their local groups to the distributed
25: # checkgroups message and prevents stray checkgroups from other sites
26: # from showing all the local groups as being bad groups.
27: #
28: echo "${line}" > /tmp/$$msg
29: cat >> /tmp/$$msg
30: cp /dev/null /tmp/$$b
31: sed -e "s;[ ].*;;" -e "s;\..*;;" -e "s;^!;;" /tmp/$$msg | sort -u |
32: while read dist
33: do
34: group=`cat /tmp/$$b`
35: group="${group}|^$dist[. ]"
36: echo "${group}" > /tmp/$$b
37: done
38: group=`cat /tmp/$$b`
39: egrep -v "${group}" LIBDIR/newsgroups > /tmp/$$a
40: cat /tmp/$$a > LIBDIR/newsgroups
41: sed -e "/^!/d" /tmp/$$msg >> LIBDIR/newsgroups
42: rm -f /tmp/$$b /tmp/$$msg
43: ;;
44: esac
45:
46: egrep "${group}" LIBDIR/active | sed 's/ .*//' | sort >/tmp/$$active
47: egrep "${group}" LIBDIR/newsgroups | sed 's/[ ].*//' | sort >/tmp/$$newsgrps
48:
49: comm -13 /tmp/$$active /tmp/$$newsgrps >/tmp/$$missing
50: comm -23 /tmp/$$active /tmp/$$newsgrps >/tmp/$$remove
51:
52: egrep "${group}" LIBDIR/active | sed -n "/m\$/s/ .*//p" |
53: sort > /tmp/$$amod.all
54: egrep "${group}" LIBDIR/newsgroups |
55: sed -n "/Moderated/s/[ ][ ]*.*//p" | sort > /tmp/$$ng.mod
56:
57: comm -12 /tmp/$$missing /tmp/$$ng.mod >/tmp/$$add.mod
58: comm -23 /tmp/$$missing /tmp/$$ng.mod >/tmp/$$add.unmod
59: cat /tmp/$$add.mod /tmp/$$add.unmod >>/tmp/$$add
60:
61: comm -23 /tmp/$$amod.all /tmp/$$remove >/tmp/$$amod
62: comm -13 /tmp/$$ng.mod /tmp/$$amod >/tmp/$$ismod
63: comm -23 /tmp/$$ng.mod /tmp/$$amod >/tmp/$$nm.all
64: comm -23 /tmp/$$nm.all /tmp/$$add >/tmp/$$notmod
65:
66: echo "" >>/tmp/$$out
67: if test -s /tmp/$$remove
68: then
69: (
70: echo "The following newsgroups are non-standard."
71: sed "s/^/ /" /tmp/$$remove
72: echo ""
73: echo "You can remove them by executing the commands:"
74: echo \ LIBDIR/rmgroup `cat /tmp/$$remove`
75: echo ""
76: ) 2>&1 >>/tmp/$$out
77: fi
78:
79: if test -s /tmp/$$add
80: then
81: (
82: echo "The following newsgroups were missing and should be added."
83: sed "s/^/ /" /tmp/$$add
84: echo ""
85: echo "You can do this by executing the command(s):"
86: for i in `cat /tmp/$$add.unmod`
87: do
88: echo 'LIBDIR/inews -C '$i' </dev/null'
89: done
90: for i in `cat /tmp/$$add.mod`
91: do
92: echo 'LIBDIR/inews -C '$i' moderated </dev/null'
93: done
94: echo ""
95: ) 2>&1 >>/tmp/$$out
96: fi
97:
98: if test -s /tmp/$$ismod
99: then
100: (
101: echo "The following newsgroups are not moderated and are marked moderated."
102: sed "s/^/ /" /tmp/$$ismod
103: echo ""
104: echo "You can correct this by executing the command(s):"
105: for i in `cat /tmp/$$ismod`
106: do
107: echo 'LIBDIR/inews -C '$i' </dev/null'
108: done
109: echo ""
110: ) 2>&1 >>/tmp/$$out
111: fi
112:
113: if test -s /tmp/$$notmod
114: then
115: (
116: echo "The following newsgroups are moderated and not marked so."
117: sed "s/^/ /" /tmp/$$notmod
118: echo ""
119: echo "You can correct this by executing the command(s):"
120: for i in `cat /tmp/$$notmod`
121: do
122: echo 'LIBDIR/inews -C '$i' moderated </dev/null'
123: done
124: echo ""
125: ) 2>&1 >>/tmp/$$out
126: fi
127:
128: if test -s /tmp/$$out
129: then
130: (echo "Subject: Problems with your active file"
131: echo ""
132: cat /tmp/$$out
133: ) | if test $# -gt 0
134: then
135: mail $1
136: else
137: cat
138: fi
139: fi
140: )
141:
142: rm -f /tmp/$$*
143:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.