- if ($mode eq "gzipped") { # deflate gzipped retrieved file
- print "deflating just retrieved file ...\n";
- $cont = ""; # reset $cont, cause $cont actually contain gzipped data
- $gz = gzopen($filename, "r") or die "Cannot open gzip'ed file $filename: $gzerrno";
- while ( $gz->gzread($buffer) > 0 ) {
- $cont .= $buffer;
- }
- die "Error while reading : $gzerrno\n" if $gzerrno != Z_STREAM_END ;
- $gz->gzclose();
- # now $cont contain deflated, clear text data
+ print "Storing the $str file\n";
+ mkdirs($filename);
+ open(FD, ">".$filename.".tmp") or die "Cannot open $filename.tmp\n";
+ print FD $cont;
+ close(FD);
+
+ # handle cache conversion normal->gzipped or gzipped->normal as user choice
+ if (($cachemode eq 'normal') and ($resourcetype eq 'normal')) { # cache the file as is
+ rename "$filename.tmp", $filename;
+ } elsif (($cachemode eq 'gzipped') and ($resourcetype eq 'gzipped')) { # cache the file as is
+ # and update the $cont variabile with deflated content
+ rename "$filename.tmp", $filename;
+ $cont = gunzip($filename);
+ } elsif (($cachemode eq 'normal') and ($resourcetype eq 'gzipped')) { # deflate cache entry
+ # and update $cont
+ open(FD, "> $basefname") or die "cannot open $basefname\n";
+ $cont = gunzip($filename.".tmp");
+ print FD $cont;
+ close(FD);
+ unlink "$filename.tmp"; # delete old gzipped file
+ } elsif (($cachemode eq 'gzipped') and ($resourcetype eq 'normal')) { # compress cache entry
+ gzip($cont, $basefname.".gz");
+ unlink "$filename.tmp"; # delete old uncompressed file
+ } else {
+ die "Internal error, unsopported cachemode, resourcetype couple\n";