This is an automated email from the git hooks/post-receive script. gregoa pushed a commit to annotated tag v0.22 in repository liblinux-distribution-perl.
commit 061677913b0383fb394e7bc6660f6c38c3b54a57 Author: Alexandr Ciornii <alexcho...@gmail.com> Date: Sun Dec 5 17:36:30 2010 +0200 CentOS detection --- Changes | 1 + lib/Linux/Distribution.pm | 28 +++++++++++++++++++++------- t/centos.t | 14 ++++++++++++++ t/centos/files | 5 +++++ t/centos/redhat-release | 1 + 5 files changed, 42 insertions(+), 7 deletions(-) diff --git a/Changes b/Changes index 64d80e0..3cd613e 100644 --- a/Changes +++ b/Changes @@ -1,4 +1,5 @@ Fixed version detection for Gentoo +CentOS detection (modified patch from XSAWYERX) * 2008-11-02 version 0.14_01 diff --git a/lib/Linux/Distribution.pm b/lib/Linux/Distribution.pm index d57baa6..e3d9855 100644 --- a/lib/Linux/Distribution.pm +++ b/lib/Linux/Distribution.pm @@ -12,6 +12,7 @@ our @EXPORT_OK = qw( distribution_name distribution_version ); our $VERSION = '0.14_01'; +our $release_files_directory='/etc'; our $standard_release_file = 'lsb-release'; our %release_files = ( @@ -51,6 +52,7 @@ our %version_match = ( 'redhat' => 'Red Hat Linux release (.*) \(', 'slackware' => '^Slackware (.+)$', 'pardus' => '^Pardus (.+)$', + 'centos' => '^CentOS release (.+)(?:\s\(Final\))', ); @@ -80,8 +82,8 @@ sub distribution_name { } foreach ('fedora-release') { - if (-f "/etc/$_" && !-l "/etc/$_"){ - if (-f "/etc/$_" && !-l "/etc/$_"){ + if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){ + if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){ $self->{'DISTRIB_ID'} = $release_files{$_}; $self->{'release_file'} = $_; return $self->{'DISTRIB_ID'}; @@ -90,10 +92,21 @@ sub distribution_name { } foreach (keys %release_files) { - if (-f "/etc/$_" && !-l "/etc/$_"){ - if (-f "/etc/$_" && !-l "/etc/$_"){ - $self->{'DISTRIB_ID'} = $release_files{$_}; + if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){ + if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){ + if ( $release_files{$_} eq 'redhat' ) { + $self->{'pattern'} = $version_match{'centos'}; + $self->{'release_file'}='redhat-release'; + if ( $self->_get_file_info() ) { + $self->{'DISTRIB_ID'} = 'centos'; + $self->{'release_file'} = $_; + return $self->{'DISTRIB_ID'}; + } else { + $self->{'pattern'}=''; + } + } $self->{'release_file'} = $_; + $self->{'DISTRIB_ID'} = $release_files{$_}; return $self->{'DISTRIB_ID'}; } } @@ -118,7 +131,7 @@ sub _get_lsb_info { my $self = shift; my $field = shift || 'DISTRIB_ID'; my $tmp = $self->{'release_file'}; - if ( -r '/etc/' . $standard_release_file ) { + if ( -r "$release_files_directory/" . $standard_release_file ) { $self->{'release_file'} = $standard_release_file; $self->{'pattern'} = $field . '=(.+)'; my $info = $self->_get_file_info(); @@ -134,8 +147,9 @@ sub _get_lsb_info { sub _get_file_info { my $self = shift; - open my $fh, '<', '/etc/' . $self->{'release_file'} or die 'Cannot open file: /etc/' . $self->{'release_file'}; + open my $fh, '<', "$release_files_directory/" . $self->{'release_file'} or die 'Cannot open file: '.$release_files_directory.'/' . $self->{'release_file'}; my $info = ''; + local $_; while (<$fh>){ chomp $_; ($info) = $_ =~ m/$self->{'pattern'}/; diff --git a/t/centos.t b/t/centos.t new file mode 100644 index 0000000..b8a4c70 --- /dev/null +++ b/t/centos.t @@ -0,0 +1,14 @@ +use 5.006000; +use strict; +use warnings; + +use Test::More tests => 2; +use lib '../lib/'; +use Linux::Distribution; + +local $Linux::Distribution::release_files_directory='centos/'; +my $linux = Linux::Distribution->new; +my $distro = $linux->distribution_name(); +is($distro,'centos'); +my $version = $linux->distribution_version(); +is ($version,'5.5'); diff --git a/t/centos/files b/t/centos/files new file mode 100644 index 0000000..36395eb --- /dev/null +++ b/t/centos/files @@ -0,0 +1,5 @@ +exists: +redhat-release +do not: +redhat_version +lsb-release diff --git a/t/centos/redhat-release b/t/centos/redhat-release new file mode 100644 index 0000000..f449f3f --- /dev/null +++ b/t/centos/redhat-release @@ -0,0 +1 @@ +CentOS release 5.5 (Final) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/liblinux-distribution-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits