Man page: Move the description of --info=progress2 to a better place.
[rsync/rsync.git] / support / file-attr-restore
index 11d7524..a053e1d 100755 (executable)
@@ -32,22 +32,23 @@ my $detail_line = qr{
     \d+ \s+                   # ignore size
     ([-bcdlps])               # 1. File type
     ( [-r][-w][-xsS]          # 2. user-permissions
-      [-r][-w][-xsS]          # 3. group-permissions
-      [-r][-w][-xtT] ) \s+    # 4. other-permissions
+      [-r][-w][-xsS]          #    group-permissions
+      [-r][-w][-xtT] ) \s+    #    other-permissions
     \d+ \s+                   # ignore number of links
-    (\S+) \s+                 # 5. owner
-    (\S+) \s+                 # 6. group
+    (\S+) \s+                 # 3. owner
+    (\S+) \s+                 # 4. group
     (?: \d+ \s+ )?            # ignore size (when present)
     \w+ \s+ \d+ \s+           # ignore month and date
     \d+ (?: : \d+ )? \s+      # ignore time or year
-    ([^\r\n]+) $              # 7. name
+    ([^\r\n]+) $              # 5. name
 }x;
 
 while (<>) {
     my($type, $perms, $owner, $group, $name) = /$detail_line/;
     die "Invalid input line $.:\n$_" unless defined $name;
     die "A filename is not properly escaped:\n$_" unless $name =~ /^[^"\\]*(\\(\d\d\d|\D)[^"\\]*)*$/;
-    my $fn = eval "\"$name\"";
+    my $fn = $name;
+    $fn =~ s/\\(\d+|.)/ eval "\"\\$1\"" /eg;
     if ($type eq '-') {
        undef $type unless -f $fn;
     } elsif ($type eq 'd') {