# -*- coding: utf-8; srcfile:/adv/perl/A2E/Osver.pm.tmpl; mode: perl -*-
# Time-stamp: <2019-06-05 14:47:17 phm>

=head1 NAME

       A2E::Osver

=head1 Version

0.0.1

=cut

our $VERSION = '0.0.1';

=head2 DESCRIPTION

Provide the osver function.

A mix-in library.

Other mix-in libraries include

    A2E::Lokvars
    A2E::Sqltab

Applications include

    A2E::SiteMakefileCache

=head1 IMPLEMENTATION

=head2 Header

=cut
 
package A2E::Osver;
use base 'A2E::Prog';
use File::Spec::Functions;
use strict;

=head2 Functions

=head3 Function osver

return a symbol string like 'suse10_3'.

=cut

sub osver {
    my $m = shift;
    $m->dpuc('osver', @_);
    $m->open_fayl('/etc/os-release', 'i', 'r');
    my %N2V = ();
    while ($m->getlini('i')) {
	chomp $_;
	my ($nom, $val) = m(\A(\w+)\s*\=\s*\"\s*(\S.*\S)\s*\"\s*\Z);
	$N2V{$nom} = $val;
    };
    $m->kloz_fayl('i');
    my $os = $N2V{NAME};
    my $ver = $N2V{VERSION_ID};
    do { $m->dpop('osver');return } unless $ver;
    $os = 'suse' if $os =~ m(suse)i;
    $ver =~ y(.)(_);
    my $ret = $os . $ver;
    $m->dpop('osver', $ret);return $ret;
};

=head3 Function osvernum

return a numeric string like 1003 for the version number of the os (e.g. for suse10_3)

=cut

sub osvernum {
    my $m = shift;
    $m->dpuc('osvernum', @_);
    my $osver = $m->osver;
    my ($os, $maj, $min) = $osver =~ m(\A([a-z,\_]+)(\d+)\_(\d+));
    my $num = $maj . sprintf('%02d', $min);
    $m->dpop('osvernum', $num);return $num;
};

=head1 The End

=cut

return 1;

# Local Variables:
# coding: utf-8
# mode: perl;
# srcfile:/adv/perl/A2E/Osver.pm
# End:
 
