xref: /netbsd-src/external/bsd/ntp/dist/scripts/build/updateBEDate (revision b8ecfcfef0e343ad71faea7a54fb5fcb42ad4e27)
1*b8ecfcfeSchristos#! /usr/bin/env perl
2*b8ecfcfeSchristosuse warnings;
3*b8ecfcfeSchristosuse strict;
4*b8ecfcfeSchristos
5*b8ecfcfeSchristos# for each filename on the command line
6*b8ecfcfeSchristos# get the modtime
7*b8ecfcfeSchristos# make a backup of the file
8*b8ecfcfeSchristos# - error if there is already a backup?
9*b8ecfcfeSchristos# flush the  live version(?)
10*b8ecfcfeSchristos# start a line-by-line copy of the backup to the new file,
11*b8ecfcfeSchristos# doing the BeginDate/EndDate substitution
12*b8ecfcfeSchristos
13*b8ecfcfeSchristos# <!-- #BeginDate format:En1m -->3-oct-11  18:20<!-- #EndDate -->
14*b8ecfcfeSchristos# <!-- #BeginDate format:En2m -->01-Aug-2011  17:56<!-- #EndDate -->
15*b8ecfcfeSchristos# without the 'm' no minutes are included.
16*b8ecfcfeSchristos
17*b8ecfcfeSchristosmy $i;
18*b8ecfcfeSchristosmy $mod_time;
19*b8ecfcfeSchristosmy $stamp;
20*b8ecfcfeSchristosmy @m_abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
21*b8ecfcfeSchristos
22*b8ecfcfeSchristosforeach ( @ARGV ) {
23*b8ecfcfeSchristos    $i = $_;
24*b8ecfcfeSchristos    $mod_time = (stat ($i))[9];
25*b8ecfcfeSchristos    $stamp = localtime($mod_time);
26*b8ecfcfeSchristos    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
27*b8ecfcfeSchristos                                                localtime($mod_time);
28*b8ecfcfeSchristos    $year += 1900;
29*b8ecfcfeSchristos
30*b8ecfcfeSchristos    # print "<$i> at <$stamp>\n";
31*b8ecfcfeSchristos
32*b8ecfcfeSchristos    open(my $IFILE, "<", $i) or die "Cannot open < $i: $!";
33*b8ecfcfeSchristos    open(my $OFILE, ">", $i.".new") or die "Cannot open > $i.new: $!";
34*b8ecfcfeSchristos    while(<$IFILE>) {
35*b8ecfcfeSchristos	if (/(.*<!--\s*#BeginDate\s*format:)(\S*)(\s*-->).*(<!--\s*#EndDate\s*-->.*)/) {
36*b8ecfcfeSchristos	    # print "Got: $_";
37*b8ecfcfeSchristos	    # print "as: <$1><$2><$3>...<$4>\n";
38*b8ecfcfeSchristos	    print { $OFILE } $1,$2,$3;
39*b8ecfcfeSchristos	    printf { $OFILE } "%s-%s-%s  %02d:%02d", $mday,$m_abbr[$mon],$year,$hour,$min;
40*b8ecfcfeSchristos	    print { $OFILE } $4,"\n";
41*b8ecfcfeSchristos	}
42*b8ecfcfeSchristos	else {
43*b8ecfcfeSchristos	    print { $OFILE } $_;
44*b8ecfcfeSchristos	}
45*b8ecfcfeSchristos    }
46*b8ecfcfeSchristos    close($IFILE);
47*b8ecfcfeSchristos    close($OFILE);
48*b8ecfcfeSchristos    #
49*b8ecfcfeSchristos    utime(time, $mod_time, "$i.new") || die "touch $i.new failed: $!";
50*b8ecfcfeSchristos    #
51*b8ecfcfeSchristos    rename $i,"$i.old" || die "rename $i,$i.old failed: $!";
52*b8ecfcfeSchristos    rename "$i.new",$i || die "rename $i.new,$i failed: $!";
53*b8ecfcfeSchristos}
54