ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Cache/CacheUtilities.pm
Revision: 1.13
Committed: Mon Dec 17 10:51:00 2012 UTC (12 years, 4 months ago) by muzaffar
Content type: text/plain
Branch: MAIN
CVS Tags: V2_2_5_pre2, V2_2_5_pre1, V2_2_4, V2_2_4_pre9, HEAD
Changes since 1.12: +2 -32 lines
Log Message:
remove dependency on Compress::Zlib, set LOCALTOP at the time of project area creation

File Contents

# User Rev Content
1 sashby 1.2 package Cache::CacheUtilities;
2     require 5.004;
3 muzaffar 1.12 use Data::Dumper;
4     BEGIN {
5 muzaffar 1.13 $Cache::CacheUtilities::zipUntility="GZip";
6 muzaffar 1.12 $Data::Dumper::Varname='cache';
7     }
8 sashby 1.5
9 sashby 1.2 sub read()
10     {
11 muzaffar 1.12 my ($file) = @_;
12     my $data=();
13     my $func="read${zipUntility}";
14     &$func($file,\$data);
15     my $cache = eval "$data";
16     die "Cache $file load error: ",$@,"\n", if ($@);
17 sashby 1.2 return $cache;
18     }
19    
20     sub write()
21     {
22 muzaffar 1.12 my ($cache,$file)=@_;
23 sashby 1.2 use File::Copy;
24 muzaffar 1.12 if (-r $file){move($file,"${file}.bak");}
25     my $ok=1; my $err="";
26     my $fcache=();
27     eval {$fcache=Dumper($cache);};
28     if ($@){$err=$@;$ok=0;}
29     else
30     {
31     my $func="write${zipUntility}";
32     $ok = &$func($fcache,$file);
33     }
34     if ($ok)
35     {
36     unlink ("${file}.bak");
37     my $mode=0644;
38     chmod $mode,$file;
39     }
40     else
41     {
42     if (-r "${file}.bak"){move("${file}.bak",$file);}
43     die "ERROR: Writing Cache file $file: $err\n";
44     }
45     return;
46     }
47 sashby 1.8
48 muzaffar 1.13 ###### Using gzip #################
49 muzaffar 1.12 sub readGZip()
50     {
51     my $file = shift;
52     my $data = shift;
53     my $gz;
54     if (open($gz,"gzip -cd $file |"))
55     {
56     binmode $gz;
57     my $buf;
58     while (read($gz,$buf,1024*1024) > 0){${$data}.=$buf;}
59     close($gz);
60     }
61     else{die "Can not open file for reading using \"gzip\": $file\n";}
62     return;
63     }
64    
65     sub writeGZip()
66     {
67     my ($cache,$file) = @_;
68     my $gz;
69     if (open($gz,"| gzip >$file"))
70     {
71     binmode $gz;
72     print $gz $cache;
73     close($gz);
74     }
75     else{die "Can not open file for reading using \"gzip\": $file\n";}
76     return 1;
77     }
78 sashby 1.3
79 sashby 1.2 1;