[leafnode-list] Removing read articles according to .newsrc
Kris Kennaway
kris at obsecurity.org
Fri Feb 4 08:33:16 CET 2005
On Sun, Jan 23, 2005 at 06:51:31PM +0100, Matthias Andree wrote:
> Kris Kennaway schrieb am 2005-01-22:
>
> > I'd like to remove from my leafnode spool all the articles that I have
> > read, as listed in my .newsrc file (slrn, if it matters). Has anyone
> > written a script to do this?
>
> I am not aware of any scripts that would parse the .newsrc.
>
> If someone has a decent script to treat .newsrc, let me know and I may
> consider setting a link to it.
I wrote the following awk script which seemed to work nicely for me
(it spits out a list of files corresponding to articles that are
listed in the .jnewsrc as read, which can be piped to xargs rm). a
texpire run will then clean up the actual articles that are no longer
linked.
Kris
-------------- next part --------------
# Copyright (C) 2005 Kristian D. Kennaway. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# Parse a .jnewsrc from slrn (other news readers may also be compatible)
# and generate a corresponding list of read articles in the news spool.
# These files may be removed, e.g. by running
#
# awk -f cleanspool | xargs rm
#
# and the corresponding articles will be unlinked the next time texpire
# is run.
#
# You will need to adjust the newsrc and spooldir variables as appropriate
# before using.
function nextlist( err) {
while (getline < newsrc) {
if ($0 !~ /\!/) {
break
}
}
return $0
}
function findgroup(name, line) {
while (1) {
getline line < newsrc
reg=sprintf("^%s: ", name)
if (match(line,reg)) {
break
}
}
return line
}
BEGIN {
newsrc="/home/kkenn/.jnewsrc"
spooldir="/mnt/news/leafnode/"
group="XXX"
while(group != "") {
group=nextlist();
rangelist=gensub(/^.*:( )*/,"","g",group)
nranges=split(rangelist,ranges,",")
currange=0
nextrange()
dir=spooldir tolower(gensub("\\\.","/","g",substr(group,0,index(group,":")-1)))
if (dir == spooldir) {
exit 0
}
cmd=sprintf("test -d %s && cd %s && find . -name '[0-9]*' -depth 1 -type f | sed -e 's,^./,,' | sort -n", dir, dir)
while (cmd | getline) {
while ( ($0 + 0) > (rangeupper + 0)) {
err = nextrange()
if (err) {
break
}
}
if ( ($0+0) >= (rangelower+0) && ($0+0) <= (rangeupper+0)) {
print dir "/" $0
}
}
}
}
function nextrange() {
currange++
if (currange > nranges) {
return 1
}
range=ranges[currange]
if ( range !~ "-" ) {
rangelower=range
rangeupper=range
} else {
rangelower=gensub(/-[0-9]+$/,"",g,range)
rangeupper=gensub(/^[0-9]+-/,"",g,range)
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: <http://krusty.dt.e-technik.tu-dortmund.de/pipermail/leafnode-list/attachments/20050203/4ca1f64a/attachment.pgp>
More information about the leafnode-list
mailing list