#!/usr/athena/bin/perl

require "fcntl.ph";

$tee = '/bin/tee';
$sort = '/usr/bin/sort';
$gzip = '/usr//bin/gzip';
$mkindex = '/rtfm/bin/mkindex';
$pubdir = '/rtfm/ftp/pub';
$topdir = '/rtfm/ftp';
($EX,$NB) = (2, 4);

chdir($topdir) || die "$!";
system('touch lock');
open(lockf, '>lock') || die "$!";
flock(lockf, $EX|$NB) || exit 0;
fcntl(lockf, &F_SETFD, 1) || warn "fcntl: $!";

open(mkindex, "$mkindex pub |") || die "$mkindex: $!";
open(byname, "> .Index-byname.$$") || die "byname: $!";
open(byname_gz, "| $gzip >.Index-byname.$$.gz") || die "byname_z: $!";
open(bytime, "| $sort -n -r >.Index-bytime.$$") || die "bytime: $!";

while (<mkindex>) {
	print byname;
	print byname_gz;
	print bytime;
}

close(mkindex);
close(byname);
close(byname_gz);
close(bytime);

# takes a long time since this is when sort(1) runs
system("$gzip <.Index-bytime.$$ >.Index-bytime.$$.gz");

foreach $x ('name', 'time') {
	rename(".Index-by$x.$$", "Index-by$x") || die "rename($x): $!";
	rename(".Index-by$x.$$.gz", "Index-by$x.gz") || die "rename($x.Z): $!";
}

unlink <.Index-by{name,time}.*>;

close(lockf);

exit(0);
