Annotation of loncom/debugging_tools/db_copy.pl, revision 1.2

1.1       albertel    1: #!/usr/bin/perl
                      2: 
                      3: 
                      4: use strict;
                      5: use warnings;
                      6: use lib '/home/httpd/lib/perl';
                      7: use GDBM_File;
                      8: use File::Find;
                      9: use LONCAPA;
                     10: use LONCAPA::Configuration;
                     11: use Cwd;
                     12: 
                     13: my $dump_db = './dump_db';
1.2     ! albertel   14: my $create_db = './create_db';
        !            15: my $dir = './annarbor';
1.1       albertel   16: 
                     17: my  %perlvar=%{&LONCAPA::Configuration::read_conf('loncapa.conf')};
                     18: 
                     19: {
                     20:     my $straight;
                     21:     sub lock_db {
                     22: 	my ($fname) = @_;
                     23: 	my $dbref;
                     24: 	$fname = &Cwd::abs_path($fname);
                     25: 	if ($fname =~ m/^\Q$perlvar{'lonUsersDir'}\E/) {
                     26: 	    $dbref=&LONCAPA::locking_hash_tie($fname,&GDBM_READER());
                     27: 	    $straight=0;
                     28: 	} else {
                     29: 	    if (tie(my %db,'GDBM_File',$fname,&GDBM_READER(),0640)) {
                     30: 		$dbref = \%db;
                     31: 	    }
                     32: 	    $straight=1;
                     33: 	}
                     34: 	return $dbref;
                     35:     }
                     36: 
                     37:     sub unlock_db {
                     38: 	my ($dbref) = @_;
                     39: 	if ($straight) {
                     40: 	    untie($dbref);
                     41: 	} else {
                     42: 	    &LONCAPA::locking_hash_untie($dbref);
                     43: 	}
                     44:     }
                     45: }
                     46: 
                     47: sub process_db {
                     48:     return if ($_!~m/\.db$/);
                     49:     my $file = $_;
                     50:     my $dbref =&lock_db($file);
1.2     ! albertel   51:     print("attempting $file\n");
1.1       albertel   52:     my %newdb;
                     53:     my $new_file = $file.'.new';
1.2     ! albertel   54:     system("$dump_db -f $file|$create_db -f $new_file");
        !            55: #    print("finishing $dbref\n");
1.1       albertel   56:     untie($dbref);
                     57:     system("/bin/mv $file $file.old");
                     58:     system("/bin/mv $file.new $file");
                     59:     &unlock_db($dbref);
                     60: }
                     61: 
                     62: sub main {
                     63:     find(
                     64: 	 {
                     65: 	     no_chdir   => 1,
                     66: 	     wanted     => \&process_db,
                     67: 	 }, 
                     68: 	 $dir
                     69: 	 #$perlvar->{'lonUsersDir'}
                     70: 	 );
                     71: }
                     72: 
                     73: &main();

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>