* Fixed handling of $Conf{HardLinkMax} in BackupPC/Lib.pm. Reported
[BackupPC.git] / configure.pl
index b66231e..f95ed52 100755 (executable)
 #
 #========================================================================
 #
-# Version __VERSION__, released __RELEASEDATE__.
+# Version 2.0.0_CVS, released 18 Jan 2003.
 #
 # See http://backuppc.sourceforge.net.
 #
 #========================================================================
 
 use strict;
+no  utf8;
 use vars qw(%Conf %OrigConf);
 use lib "./lib";
 
@@ -99,7 +100,7 @@ my $bpc;
 if ( $ConfigPath ne "" && -r $ConfigPath ) {
     (my $topDir = $ConfigPath) =~ s{/[^/]+/[^/]+$}{};
     die("BackupPC::Lib->new failed\n")
-            if ( !($bpc = BackupPC::Lib->new($topDir, ".")) );
+            if ( !($bpc = BackupPC::Lib->new($topDir, ".", 1)) );
     %Conf = $bpc->Conf();
     %OrigConf = %Conf;
     $Conf{TopDir} = $topDir;
@@ -415,7 +416,8 @@ foreach my $lib ( qw(BackupPC/Lib.pm BackupPC/FileZIO.pm BackupPC/Attrib.pm
         BackupPC/PoolWrite.pm BackupPC/View.pm BackupPC/Xfer/Tar.pm
         BackupPC/Xfer/Smb.pm BackupPC/Xfer/Rsync.pm
         BackupPC/Xfer/RsyncFileIO.pm BackupPC/Zip/FileMember.pm
-        BackupPC/Lang/en.pm BackupPC/Lang/fr.pm
+        BackupPC/Lang/en.pm BackupPC/Lang/fr.pm BackupPC/Lang/es.pm
+        BackupPC/Lang/de.pm
     ) ) {
     InstallFile("lib/$lib", "$Conf{InstallDir}/lib/$lib", 0444);
 }
@@ -429,7 +431,8 @@ if ( $Conf{CgiImageDir} ne "" ) {
 }
 
 printf("Making init.d scripts\n");
-foreach my $init ( qw(linux-backuppc solaris-backuppc debian-backuppc) ) {
+foreach my $init ( qw(gentoo-backuppc gentoo-backuppc.conf linux-backuppc
+                     solaris-backuppc debian-backuppc suse-backuppc) ) {
     InstallFile("init.d/src/$init", "init.d/$init", 0444);
 }
 
@@ -461,6 +464,33 @@ $Conf{EMailAdminUserName} ||= $Conf{BackupPCUser};
 # Update various config parameters
 #
 
+#
+# Guess $Conf{CgiURL}
+#
+if ( !defined($Conf{CgiURL}) ) {
+    if ( $Conf{CgiDir} =~ m{cgi-bin(/.*)} ) {
+       $Conf{CgiURL} = "'http://$Conf{ServerHost}/cgi-bin$1/BackupPC_Admin'";
+    } else {
+       $Conf{CgiURL} = "'http://$Conf{ServerHost}/cgi-bin/BackupPC_Admin'";
+    }
+}
+
+#
+# The smbclient commands have moved from hard-coded to the config file.
+# $Conf{SmbClientArgs} no longer exists, so merge it into the new
+# commands if it still exists.
+#
+if ( defined($Conf{SmbClientArgs}) ) {
+    if ( $Conf{SmbClientArgs} ne "" ) {
+        foreach my $param ( qw(SmbClientRestoreCmd SmbClientFullCmd
+                                SmbClientIncrCmd) ) {
+            $newConf->[$newVars->{$param}]{text}
+                            =~ s/(-E\s+-N)/$1 $Conf{SmbClientArgs}/;
+        }
+    }
+    delete($Conf{SmbClientArgs});
+}
+
 #
 # IncrFill should now be off
 #
@@ -475,7 +505,7 @@ if ( defined($Conf{PingArgs}) ) {
     if ( $^O eq "solaris" || $^O eq "sunos" ) {
        $Conf{PingCmd} = '$pingPath -s $host 56 1';
     } elsif ( ($^O eq "linux" || $^O eq "openbsd" || $^O eq "netbsd")
-           && !system("$Conf{PingClientPath} -c 1 -w 3 localhost") ) {
+           && !system("$Conf{PingPath} -c 1 -w 3 localhost") ) {
        $Conf{PingCmd} = '$pingPath -c 1 -w 3 $host';
     } else {
        $Conf{PingCmd} = '$pingPath -c 1 $host';
@@ -515,7 +545,8 @@ if ( -f $dest && !-f $confCopy ) {
                                            unless chown($uid, $gid, $confCopy);
     die("can't chmod $mode $confCopy\n")   unless chmod($mode, $confCopy);
 }
-open(OUT, ">$dest") || die("can't open $dest for writing\n");
+open(OUT, ">", $dest) || die("can't open $dest for writing\n");
+binmode(OUT);
 my $blockComment;
 foreach my $var ( @$newConf ) {
     if ( length($blockComment)
@@ -570,6 +601,20 @@ will need to do:
 Enjoy!
 EOF
 
+if ( $ENV{LANG} =~ /utf/i && $^V ge v5.8.0 ) {
+    print <<EOF;
+
+WARNING: Your LANG environment variable is set to $ENV{LANG}, which
+doesn't behave well with this version of perl.  Please set the
+LANG environment variable to en_US before running BackupPC.
+
+On RH-8 this setting is in the file /etc/sysconfig/i18n, or you
+could set it in BackupPC's init.d script.
+EOF
+}
+
+exit(0);
+
 ###########################################################################
 # Subroutines
 ###########################################################################
@@ -593,26 +638,20 @@ sub InstallFile
     if ( $binary ) {
        die("can't copy($prog, $dest)\n") unless copy($prog, $dest);
     } else {
-       open(PROG, $prog)   || die("can't open $prog for reading\n");
-       open(OUT, ">$dest") || die("can't open $dest for writing\n");
+       open(PROG, $prog)     || die("can't open $prog for reading\n");
+       open(OUT, ">", $dest) || die("can't open $dest for writing\n");
+       binmode(PROG);
+       binmode(OUT);
        while ( <PROG> ) {
            s/__INSTALLDIR__/$Conf{InstallDir}/g;
            s/__TOPDIR__/$Conf{TopDir}/g;
            s/__BACKUPPCUSER__/$Conf{BackupPCUser}/g;
            s/__CGIDIR__/$Conf{CgiDir}/g;
            if ( $first && /^#.*bin\/perl/ ) {
-               if ( $Perl56 ) {
-                   #
-                   # perl56 and later is taint ok
-                   #
-                   print OUT "#!$Conf{PerlPath} -T\n";
-               } else {
-                   #
-                   # prior to perl56, File::Find fails taint checks,
-                   # so we run without -T.  It's still safe.
-                   #
-                   print OUT "#!$Conf{PerlPath}\n";
-               }
+               #
+               # Fill in correct path to perl (no taint for >= 2.0.1).
+               #
+               print OUT "#!$Conf{PerlPath}\n";
            } else {
                print OUT;
            }
@@ -638,6 +677,7 @@ sub ConfigParse
 {
     my($file) = @_;
     open(C, $file) || die("can't open $file");
+    binmode(C);
     my($out, @conf, $var);
     my $comment = 1;
     my $allVars = {};