#!/usr/bin/perl
#	Date: Mon, 16 Oct 1995 12:12:13 +0100
#	Subject: simple perl script for ports update checking 
#	To: freebsd-ports@freebsd.org
#	From: Chris Stenton <jacs@gnome.co.uk>
#	Message-Id: <jacs-9509161112.AA00062262@hawk.gnome.co.uk>
#	Sender: owner-ports@freebsd.org
#	
#	Here is a simple perl script for checking the current ports tree 
#	against a users installed packages and notifying the user which ports 
#	have been either updated or removed.  I find this useful to keep my
#	40 or so ports upto date.
#
# $Header: /home/jacs/perl/updated,v 1.2 1995/10/14 22:52:24 jacs Exp $
#
# $Log: updated,v $
# Revision 1.2  1995/10/14  22:52:24  jacs
# *** initial version ***

#
#read packages directory
opendir(PKGDIR, "/var/db/pkg") || die "Could not open /var/db/pkg";
@allfiles = grep(!/^\.\.?$/, readdir(PKGDIR));
closedir(PKGDIR);

#read ports index
open(INDEXFH, "/usr/ports/INDEX")  || die "Could not open /usr/ports/INDEX";
@indexfile = <INDEXFH>;
close(INDEXFH);

#search index file for each package
ENTRY:
foreach $pkg (@allfiles) {
    foreach $line(@indexfile) {
	if(index($line, $pkg) ==0) {
            next ENTRY;
	}
    }
    #package is not in the INDEX file
    #checking to see if has been updated or removed
    printf "port %20s has been ", $pkg;
    $pkg =~ s/-.*/-/;
    
    foreach $line(@indexfile) {
	if(index($line, $pkg) ==0) {
	    $line =~ s/\|.*//;
	    print "updated too\t", $line;
            next ENTRY;
	}
    }
    print "removed \n";
}
