#!/usr/bin/perl
$LOCK_EX = 2;
$LOCK_NB = 4;

if (@ARGV[0] eq "-w") {
	$LOCK_NB = 0;
	shift;
}
$lock = @ARGV[0];
shift @ARGV;
die "Usage: flock [-w] lockfile command [args]\n" if ($#ARGV < 0);

if (! -f $lock) {
	open LOCK, ">$lock" || die "cannot create lock file $lock: $!\n";
	print LOCK "This is a lockfile created by flock.  Do not remove.\n";
} else {
	open LOCK, $lock || die "cannot open lock file $lock: $!\n";
}
if (flock LOCK, $LOCK_EX|$LOCK_NB) {
	system (@ARGV);
	exit $?
}
die "flock failed: $!\n";
exit 1
