K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / share / perl5 / Debconf / DbDriver /
server ip : 104.21.89.46

your ip : 108.162.241.19

H O M E


Filename/usr/share/perl5/Debconf/DbDriver/PackageDir.pm
Size3.58 kb
Permissionrw-r--r--
Ownerroot : root
Create time27-Apr-2025 09:50
Last modified23-Feb-2014 22:30
Last accessed06-Jul-2025 10:57
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
#!/usr/bin/perl -w
# This file was preprocessed, do not edit!


package Debconf::DbDriver::PackageDir;
use strict;
use Debconf::Log qw(:all);
use IO::File;
use Fcntl qw(:DEFAULT :flock);
use Debconf::Iterator;
use base 'Debconf::DbDriver::Directory';


use fields qw(mode _loaded);


sub init {
my $this=shift;

if (exists $this->{mode}) {
$this->{mode} = oct($this->{mode});
}
else {
$this->{mode} = 0600;
}
$this->SUPER::init(@_);
}


sub loadfile {
my $this=shift;
my $file=$this->{directory}."/".shift;

return if $this->{_loaded}->{$file};
$this->{_loaded}->{$file}=1;

debug "db $this->{name}" => "loading $file";
return unless -e $file;

my $fh=IO::File->new;
open($fh, $file) or $this->error("$file: $!");
my @item = $this->{format}->read($fh);
while (@item) {
$this->cacheadd(@item);
@item = $this->{format}->read($fh);
}
close $fh;
}


sub load {
my $this=shift;
my $item=shift;
$this->loadfile($this->filename($item));
}


sub filename {
my $this=shift;
my $item=shift;

if ($item =~ m!^([^/]+)(?:/|$)!) {
return $1.$this->{extension};
}
else {
$this->error("failed parsing item name \"$item\"\n");
}
}


sub iterator {
my $this=shift;

my $handle;
opendir($handle, $this->{directory}) ||
$this->error("opendir: $!");

while (my $file=readdir($handle)) {
next if length $this->{extension} and
not $file=~m/$this->{extension}/;
next unless -f $this->{directory}."/".$file;
next if $file eq '.lock' || $file =~ /-old$/;
$this->loadfile($file);
}

$this->SUPER::iterator;
}


sub exists {
my $this=shift;
my $name=shift;
my $incache=$this->Debconf::DbDriver::Cache::exists($name);
return $incache if (!defined $incache or $incache);
my $file=$this->{directory}.'/'.$this->filename($name);
return unless -e $file;

$this->load($name);

return $this->Debconf::DbDriver::Cache::exists($name);
}


sub shutdown {
my $this=shift;

return if $this->{readonly};

my (%files, %filecontents, %killfiles, %dirtyfiles);
foreach my $item (keys %{$this->{cache}}) {
my $file=$this->filename($item);
$files{$file}++;

if (! defined $this->{cache}->{$item}) {
$killfiles{$file}++;
delete $this->{cache}->{$item};
}
else {
push @{$filecontents{$file}}, $item;
}

if ($this->{dirty}->{$item}) {
$dirtyfiles{$file}++;
$this->{dirty}->{$item}=0;
}
}

foreach my $file (keys %files) {
if (! $filecontents{$file} && $killfiles{$file}) {
debug "db $this->{name}" => "removing $file";
my $filename=$this->{directory}."/".$file;
unlink $filename or
$this->error("unable to remove $filename: $!");
if (-e $filename."-old") {
unlink $filename."-old" or
$this->error("unable to remove $filename-old: $!");
}
}
elsif ($dirtyfiles{$file}) {
debug "db $this->{name}" => "saving $file";
my $filename=$this->{directory}."/".$file;

sysopen(my $fh, $filename."-new",
O_WRONLY|O_TRUNC|O_CREAT,$this->{mode}) or
$this->error("could not write $filename-new: $!");
$this->{format}->beginfile;
foreach my $item (@{$filecontents{$file}}) {
$this->{format}->write($fh, $this->{cache}->{$item}, $item)
or $this->error("could not write $filename-new: $!");
}
$this->{format}->endfile;

$fh->flush or $this->error("could not flush $filename-new: $!");
$fh->sync or $this->error("could not sync $filename-new: $!");

if (-e $filename && $this->{backup}) {
rename($filename, $filename."-old") or
debug "db $this->{name}" => "rename failed: $!";
}
rename($filename."-new", $filename) or
$this->error("rename failed: $!");
}
}

$this->SUPER::shutdown(@_);
return 1;
}


1