X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=backup%2Fbackuplib.pl;h=e80f779ca0a6d77d8988d5ce85800c589a1a1626;hp=26a8533d1150e85ee3e2fa7079f742ddf2df5647;hb=35eebe42ba3cd77674422cebf674e316d5a258b1;hpb=75b4ab2309a4391110249e2ce2f6611c71526b5b;ds=sidebyside diff --git a/backup/backuplib.pl b/backup/backuplib.pl index 26a8533..e80f779 100644 --- a/backup/backuplib.pl +++ b/backup/backuplib.pl @@ -21,6 +21,8 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +require IO::File; + sub printdate () { print scalar(localtime),"\n"; } @@ -49,6 +51,29 @@ sub startprocess ($$$) { exec $c; die "$c: $!"; } +sub rewind_raw () { + system "mt -f $tape rewind"; $? and die $?; +} + +sub readtapeid_raw () { + open T, ">>TAPEID" or die $!; close T; + unlink 'TAPEID' or die $!; + rewind_raw(); + system "mt -f $tape setblk $blocksizebytes"; $? and die $?; + system "dd if=$tape bs=${blocksize}b count=10 ". + "| tar -b$blocksize -vvxf - TAPEID"; +} + +sub writetapeid ($) { + open T, ">TAPEID" or die $!; + print T "$_[0]\n" or die $!; + close T or die $!; + + system "tar -b$blocksize -vvcf TAPEID.tar TAPEID"; $? and die $?; + system "dd if=TAPEID.tar of=$ntape bs=${blocksize}b count=10"; + $? and die $?; +} + sub endprocesses () { while (keys %processes) { $p= waitpid(-1,0) or die "wait: $!"; @@ -93,14 +118,15 @@ sub readfsysfile ($) { } elsif (m/^exclude\s+(\S.*\S)$/) { push @excl,$1; } elsif (m/^include\s+(\S.*\S)$/) { + $sfn = $1; $sfn =~ s/^\./fsys./; - $sfn = "$etc/$sfn" if $sfn !~ m,^/,; + $sfn = "$etc/$sfn" unless $sfn =~ m,^/,; readfsysfile($sfn); } else { push @fsys,$_; } } - close $fn or die $!; + close $fh or die $!; } sub readfsys ($) {