chiark / gitweb /
from lalonde
[chiark-utils.git] / backup / backuplib.pl
index 279cbd6ec0e782c2355df1693d841aa2794bf497..1163b5a0012be6b0ba157c55aa6ca4bc4a56e236 100644 (file)
@@ -23,6 +23,8 @@
 
 require IO::File;
 
+$nice='nice ' if !defined $nice;
+
 sub printdate () {
     print scalar(localtime),"\n";
 }
@@ -141,7 +143,7 @@ sub readfsys ($) {
 # to be in $tf.
 sub parsefsys () {
     my ($dopts,$dopt);
-    if ($tf =~ m#^(/\S*)\s+(\w+)([,0-9a-z]+)$#) {
+    if ($tf =~ m#^(/\S*)\s+(\w+)([,=0-9a-z]*)$#) {
         # Line of form '/file/system   dumptype[,options]'
        $atf= $1;
        $tm= $2;
@@ -150,7 +152,7 @@ sub parsefsys () {
        stat $atf or die "stat $atf: $!";
        -d _ or die "not a dir: $atf";
        $rstr= '';
-    } elsif ($tf =~ m#^(/\S*)\s+(\w+)([,0-9a-z]+)\s+(\w+)$#) {
+    } elsif ($tf =~ m#^(/\S*)\s+(\w+)([,=0-9a-z]*)\s+(\w+)$#) {
         # Line of form '/file/system dumptype[,options] prefix'
         # (used for remote backups)
        $atf= $1;
@@ -168,10 +170,20 @@ sub parsefsys () {
            $dopt{$dopt}= 'y';
        } elsif ($dopt =~ m/\=/ && grep { $` eq $_ } qw(gz)) {
            $dopt{$`}= $';
-       } else {
-           die "unknown option $dopt";
+       } elsif (length $dopt) {
+           die "unknown option $dopt (in $dopts $tf)";
        }
     }
+
+    if ($dopt{'gz'} eq 'y') {
+       $gz= '1';
+    } elsif ($dopt{'gz'} =~ m/^\d$/) {
+       $gz= $dopt{'gz'};
+    } elsif (defined $dopt{'gz'}) {
+       die "$tf bad gz";
+    } else {
+       $gz= 0;
+    }
 }
 
 sub openlog () {