-#!/bin/perl -T
+#!/bin/perl
#============================================================= -*-perl-*-
#
# BackupPC_zipCreate: create a zip archive of an existing dump
# Based on Backup_tarCreate by Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2002 Craig Barratt and Guillaume Filion
+# Copyright (C) 2002-2003 Craig Barratt and Guillaume Filion
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#
#========================================================================
#
-# Version 2.0.0_CVS, released 18 Jan 2003.
+# Version 2.1.0, released 20 Jun 2004.
#
# See http://backuppc.sourceforge.net.
#
#========================================================================
use strict;
+no utf8;
use lib "/usr/local/BackupPC/lib";
use Archive::Zip qw(:ERROR_CODES);
use File::Path;
my %Conf = $bpc->Conf();
my %opts;
-getopts("th:n:p:r:s:c:", \%opts);
-if ( @ARGV < 1 ) {
+if ( !getopts("th:n:p:r:s:c:", \%opts) || @ARGV < 1 ) {
print(STDERR "usage: $0 [-t] [-h host] [-n dumpNum] [-s shareName]"
. " [-r pathRemove] [-p pathAdd] [-c compressionLevel]"
. " files/directories...\n");
$fh->fdopen(fileno(STDOUT),"w");
my $zipfh = Archive::Zip->new();
+binmode(STDOUT);
foreach my $dir ( @ARGV ) {
archiveWrite($zipfh, $dir);
}
}
return if ( !$zipmember );
- # Set the attributes and permissions
- $zipmember->setLastModFileDateTimeFromUnix($hdr->{mtime});
+ #
+ # Set the attributes and permissions. The standard zip file
+ # header cannot handle dates prior to 1/1/1980, or 315561600
+ # unix seconds, so we round up the mtime.
+ #
+ my $mtime = $hdr->{mtime};
+ $mtime = 315561600 if ( $mtime < 315561600 );
+ $zipmember->setLastModFileDateTimeFromUnix($mtime);
$zipmember->unixFileAttributes($hdr->{mode});
# Zip files don't accept uid and gid, so we put them in the comment field.
$zipmember->fileComment("uid=".$hdr->{uid}." gid=".$hdr->{gid})