Files
tuend-work 18736081c6 a
2025-11-13 08:41:45 +07:00

62 lines
1.3 KiB
Perl

#!/bin/perl
# medit: lock and edit a Majordomo-managed file, then unlock when done.
#
# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by
# permission only.
#
# $Source: /sources/cvsrepos/majordomo/medit,v $
# $Revision: 1.10 $
# $Date: 1997/04/28 18:38:05 $
# $Author: cwilson $
# $State: Exp $
#
# $Locker: $
# set our path explicitly
$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb";
# Read and execute the .cf file
$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf";
if ($ARGV[0] eq "-C") {
$cf = $ARGV[1];
shift(@ARGV);
shift(@ARGV);
}
if (! -r $cf) {
die("$cf not readable; stopped");
}
require "$cf";
# All these should be in the standard PERL library
unshift(@INC, $homedir);
require "shlock.pl"; # NNTP-style file locking
require "majordomo.pl";
# Here's where the fun begins...
(defined($listdir) && chdir "$listdir")
|| die("can't access \$listdir $listdir");
$editor = $ENV{"EDITOR"} || "vi";
foreach (@ARGV) {
$lockfile = $_;
$lockfile =~ s,([^/]*)$,L.$1,;
$shlock'waittime = 5;
for ($tries = 0 ; $tries < 60 ; $tries++) {
if (&set_lock($lockfile)) {
# got the lock
system("$editor $_");
&free_lock($lockfile);
last;
} else {
print "Waiting for lock on $_...\n";
}
}
if ($tries > 60) {
print "Giving up on lock for $_...\n";
}
}