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

Reply via email to