#!/usr/bin/perl -w
# $Header: /afs/sipb.mit.edu/service/rt/src/local/dcm-thing/RCS/dcm-caller.pl,v 1.4 2002/11/10 20:56:02 seph Exp $

# this script checks to see if there's new dcm files, and if so,
# call's the dcm->rt importer

use strict;

my $dcm_dir="/var/local/dcm";
my $dcm_script="/var/cache/sipb-rt/arch/share/bin/dcm.pl";
my $tmp_dir="/var/tmp/dcm-times";

mkdir("$tmp_dir");

# get the various files
opendir(DCM_DIR, $dcm_dir) || die "can't opendir $dcm_dir: $!";
my @dcm_files = grep { ! /^\./ && -f "$dcm_dir/$_"  } readdir(DCM_DIR);
closedir DCM_DIR;

my $call_dcm = 0;
my %dcm_times;
foreach (@dcm_files) {
    my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, 
     $atime, $mtime, $ctime, $blksize, $blocks)
	= stat("$dcm_dir/$_");

    if( is_timestamp_newer($_, $mtime) ) {
	$call_dcm = 1;
	update_timestamp($_, $mtime);
    }
}

call_dcm() if($call_dcm);



sub is_timestamp_newer {
    my $file = shift;
    my $mtime = shift;

    open(FILE, "<$tmp_dir/$file") || return 1;
    my $old_mtime = <FILE> || return 1;
    close(FILE);
    
    return 1 if($old_mtime =~ /[^0-9]/ );
    return 0 if($mtime eq $old_mtime);
    return 1;    
}
    

sub update_timestamp {
    my $file = shift;
    my $mtime = shift;

    open(FILE, ">$tmp_dir/$file");
    print FILE $mtime;
    close(FILE);
}

sub call_dcm {
    exec($dcm_script) || print STDERR "couldn't exec $dcm_script: $!";
}
