|
|
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.