1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/usr/bin/perl
- # * Copyright 2001 Paul Mangan <claws@thewildbeast.co.uk>
- # *
- # * This file is free software; you can redistribute it and/or modify it
- # * under the terms of the GNU General Public License as published by
- # * the Free Software Foundation; either version 2 of the License, or
- # * (at your option) any later version.
- # *
- # * This program is distributed in the hope that it will be useful, but
- # * WITHOUT ANY WARRANTY; without even the implied warranty of
- # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # * General Public License for more details.
- # *
- # * You should have received a copy of the GNU General Public License
- # * along with this program; if not, write to the Free Software
- # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- # *
- use File::Path;
- chdir;
- chdir '.sylpheed-claws' || die("You don't appear to have Sylpheed-Claws installed\n");
- open(ACCOUNTRC, "<accountrc") || die("Can't find accountrc\n");
- @accountrc = <ACCOUNTRC>;
- close ACCOUNTRC;
- foreach $accountrc (@accountrc) {
- if ($accountrc =~ m/nntp_server=[A-Za-z0-9]/) {
- $accountrc =~ s/nntp_server=//;
- chomp $accountrc;
- push(@newsserver, "$accountrc");
- }
- }
- %seen = ();
- foreach $newsserver (@newsserver) {
- $seen{$newsserver}++;
- }
- opendir(NEWSCACHE, "newscache") || die("Can't open newscache\n");
- push(@cached,(readdir(NEWSCACHE)));
- closedir(NEWSCACHE);
- splice(@cached, 0, 2);
- foreach $cached (@cached) { ## remove old newsserver directory tree
- rmtree("./newscache/$cached") unless $seen{$cached};
- }
- open(FOLDERLIST, "<folderlist.xml") || die("Can't find folderlist.xml\n");
- @folderlist = <FOLDERLIST>;
- close FOLDERLIST;
- %saw = ();
- $wegotnews = 0;
- foreach $folderlist (@folderlist) { ## remove old newsgroups directory trees
- unless ($wegotnews) {
- if ($folderlist =~ m/<folder type="news"/) {
- $wegotnews = 1;
- $done_grp = 0;
- $nntpserver = shift(@newsserver);
- }
- }
- if ($wegotnews && $folderlist =~ m/<\/folder>\n/ && !$done_grp) {
- opendir(NEWSGCACHE, "newscache/$nntpserver") || die("Can't open newscache/$nntpserver\n");
- push(@cachedgrp,(readdir(NEWSGCACHE)));
- closedir(NEWSGCACHE);
- splice(@cachedgrp, 0, 2);
- foreach $cachedgrp (@cachedgrp) {
- rmtree("./newscache/$nntpserver/$cachedgrp") unless ($saw{$cachedgrp}) || ($cachedgrp eq ".newsgroup_list");
- }
- $done_grp = 1;
- $wegotnews = 0;
- @cachedgrp = ();
- }
- if ($wegotnews && $folderlist !~ m/<\/folder>\n/) {
- if ($folderlist =~ m/<folderitem type="normal"/) {
- $folderlist =~ s/<folderitem type="normal" name="[A-Z0-9.]+" path="//i;
- $folderlist =~ s/" threaded="[0-1]+//;
- $folderlist =~ s/" hidereadmsgs="[0-1]+//;
- $folderlist =~ s/" mtime="[0-9]+" new="[0-9]+" unread="[0-9]+" total="[0-9]+" \/>//;
- $folderlist =~ s/ +//;
- chomp $folderlist;
- $saw{$folderlist}++;
- }
- }
- }
- print "Finished cleaning Sylpheed-Claws' newscache\n";
- exit;
|