This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
update Perl::OSType from 1.002 to 1.003
[perl5.git] / cpan / Perl-OSType / lib / Perl / OSType.pm
1 use strict;
2 use warnings;
3 package Perl::OSType;
4 # ABSTRACT: Map Perl operating system names to generic types
5 our $VERSION = '1.003'; # VERSION
6
7 require Exporter;
8 our @ISA = qw(Exporter);
9
10 our %EXPORT_TAGS = (
11   all => [ qw( os_type is_os_type ) ]
12 );
13
14 our @EXPORT_OK = @{ $EXPORT_TAGS{all} };
15
16 # originally taken from Module::Build by Ken Williams et al.
17 my %OSTYPES = qw(
18   aix         Unix
19   bsdos       Unix
20   beos        Unix
21   dgux        Unix
22   dragonfly   Unix
23   dynixptx    Unix
24   freebsd     Unix
25   linux       Unix
26   haiku       Unix
27   hpux        Unix
28   iphoneos    Unix
29   irix        Unix
30   darwin      Unix
31   machten     Unix
32   midnightbsd Unix
33   mirbsd      Unix
34   next        Unix
35   openbsd     Unix
36   netbsd      Unix
37   dec_osf     Unix
38   nto         Unix
39   svr4        Unix
40   svr5        Unix
41   sco_sv      Unix
42   unicos      Unix
43   unicosmk    Unix
44   solaris     Unix
45   sunos       Unix
46   cygwin      Unix
47   os2         Unix
48   interix     Unix
49   gnu         Unix
50   gnukfreebsd Unix
51   nto         Unix
52   qnx         Unix
53
54   dos         Windows
55   MSWin32     Windows
56
57   os390       EBCDIC
58   os400       EBCDIC
59   posix-bc    EBCDIC
60   vmesa       EBCDIC
61
62   MacOS       MacOS
63   VMS         VMS
64   vos         VOS
65   riscos      RiscOS
66   amigaos     Amiga
67   mpeix       MPEiX
68 );
69
70 sub os_type {
71   my ($os) = @_;
72   $os = $^O unless defined $os;
73   return $OSTYPES{ $os } || q{};
74 }
75
76 sub is_os_type {
77   my ($type, $os) = @_;
78   return unless $type;
79   $os = $^O unless defined $os;
80   return os_type($os) eq $type;
81 }
82
83 1;
84
85 __END__
86
87 =pod
88
89 =head1 NAME
90
91 Perl::OSType - Map Perl operating system names to generic types
92
93 =head1 VERSION
94
95 version 1.003
96
97 =head1 SYNOPSIS
98
99   use Perl::OSType ':all';
100
101   $current_type = os_type();
102   $other_type = os_type('dragonfly'); # gives 'Unix'
103
104 =head1 DESCRIPTION
105
106 Modules that provide OS-specific behaviors often need to know if
107 the current operating system matches a more generic type of
108 operating systems. For example, 'linux' is a type of 'Unix' operating system
109 and so is 'freebsd'.
110
111 This module provides a mapping between an operating system name as given by
112 C<$^O> and a more generic type.  The initial version is based on the OS type
113 mappings provided in L<Module::Build> and L<ExtUtils::CBuilder>.  (Thus,
114 Microsoft operating systems are given the type 'Windows' rather than 'Win32'.)
115
116 =head1 USAGE
117
118 No functions are exported by default. The export tag ":all" will export
119 all functions listed below.
120
121 =head2 os_type()
122
123   $os_type = os_type();
124   $os_type = os_type('MSWin32');
125
126 Returns a single, generic OS type for a given operating system name.  With no
127 arguments, returns the OS type for the current value of C<$^O>.  If the
128 operating system is not recognized, the function will return the empty string.
129
130 =head2 is_os_type()
131
132   $is_windows = is_os_type('Windows');
133   $is_unix    = is_os_type('Unix', 'dragonfly');
134
135 Given an OS type and OS name, returns true or false if the OS name is of the
136 given type.  As with C<os_type>, it will use the current operating system as a
137 default if no OS name is provided.
138
139 =head1 SEE ALSO
140
141 =over 4
142
143 =item *
144
145 L<Devel::CheckOS>
146
147 =back
148
149 =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
150
151 =head1 SUPPORT
152
153 =head2 Bugs / Feature Requests
154
155 Please report any bugs or feature requests through the issue tracker
156 at L<https://github.com/dagolden/perl-ostype/issues>.
157 You will be notified automatically of any progress on your issue.
158
159 =head2 Source Code
160
161 This is open source software.  The code repository is available for
162 public review and contribution under the terms of the license.
163
164 L<https://github.com/dagolden/perl-ostype>
165
166   git clone git://github.com/dagolden/perl-ostype.git
167
168 =head1 AUTHOR
169
170 David Golden <dagolden@cpan.org>
171
172 =head1 CONTRIBUTORS
173
174 =over 4
175
176 =item *
177
178 Jonas B. Nielsen <jonasbn@hoarfrost.local>
179
180 =item *
181
182 Paul Green <Paul.Green@stratus.com>
183
184 =back
185
186 =head1 COPYRIGHT AND LICENSE
187
188 This software is copyright (c) 2013 by David Golden.
189
190 This is free software; you can redistribute it and/or modify it under
191 the same terms as the Perl 5 programming language system itself.
192
193 =cut