Server IP : 127.0.0.2 / Your IP : 52.14.93.216 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/perl5/Debconf/DbDriver/ |
Upload File : |
#!/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