#! /usr/bin/perl -s
#
# getdate -date 
#	Extract the date from the RCS Id string in a file on stdin.
#
# getdate -version
#	Extract the RCS version from the RCS Id string in a file on stdin.
#
# getdate -describe
#	Extract the "last modified" date from a describe(1) database 
#	source file.
#
# $Id: getdate,v 1.1 1998/01/14 05:10:10 gdr Exp $
#

push(@month,
     "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
     "Oct", "Nov", "Dec" );

# for ($i=0; $i<12; $i++) {
#     printf("month %d is %s\n", $i, $month[$i]);
# }

if (defined($date)) {
    $printdate = 1;
}
if (defined($version)) {
    $printversion = 1;
}
if (defined($describe)) {
    while(<>) {
	(/^\#\s+Last\s+revision:\s+(.*)/) && printf("%s\n", $1) && last;
    }
    exit(0);
}

while(<>) {
    if (/\$Id([^\$]*)\$/) {
	$_ = $1;
	if (/^:\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+/) {
	    $file=$1;
	    $version=$2;
	    $rawdate=$3;
	    $time=$4;
	    if ($rawdate =~ m,(\d+)/(\d+)/(\d+),) {
		$year = $1;
		$m = $2;
		$day = $3;
		$mon = @month[int($2) - 1];
		$date = "$day $mon $year";
	    }
	} else {
	    $date = "(unspecified date)";
	}
	if ($printdate) {
	    printf("%s\n", $date);
	} elsif ($printversion) {
	    printf("%s\n", $version);
	} else {
	    printf("getdate: bad invocation\n");
	    exit(1);
	}
	exit(0);
    }
}

exit(1);
