File: osinit.pl

package info (click to toggle)
mhonarc 2.1-1
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 1,932 kB
  • ctags: 2,849
  • sloc: perl: 7,329; makefile: 51
file content (87 lines) | stat: -rw-r--r-- 3,412 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
##---------------------------------------------------------------------------##
##  File:
##	@(#) osinit.pl 1.2 97/01/28 12:19:10 @(#)
##  Author:
##      Earl Hood       ehood@medusa.acs.uci.edu
##  Description:
##	A library for setting up a script based upon the OS the script
##	is running under.  The main routine defined is OSinit.  See
##	the routine for specific information.
##---------------------------------------------------------------------------##
##    Copyright (C) 1995-1997	Earl Hood, ehood@medusa.acs.uci.edu
##
##    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, write to the Free Software
##    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##---------------------------------------------------------------------------##

package os_init;

##---------------------------------------------------------------------------##
##	OSinit() checks what operating system we are running on set
##	some global variables that can be used by the calling routine.
##	All global variables are exported to package main.
##
##	Variables set:
##
##	    $'MSDOS	=> Set to 1 if running under MS-DOS/Windows
##	    $'MACOS	=> Set to 1 if running under Mac
##	    $'UNIX	=> Set to 1 if running under Unix
##	    $'DIRSEP	=> Directory separator character
##	    $'DIRSEPREX	=> Directory separator character for use in
##			   regular expressions.
##	    $'PATHSEP	=> Recommend path list separator
##	    $'CURDIR	=> Current working directory
##	    $'PROG	=> Program name with leading pathname component
##			   stripped off.
##
##	If running under a Mac and the script is a droplet, command-line
##	options will be prompted for unless $noOptions argument is
##	set to true.
##
sub main'OSinit {
    local($noOptions) = shift;

    ##  Check what system we are executing under
    local($tmp);
    if (($tmp = $ENV{'COMSPEC'}) && ($tmp =~ /[a-zA-Z]:\\/) && (-e $tmp)) {
        $'MSDOS = 1;  $'MACOS = 0;  $'UNIX = 0;
	$'DIRSEP = '\\';  $'CURDIR = '.';
	$'PATHSEP = ';';
    } elsif (defined($MacPerl'Version)) {
        $'MSDOS = 0;  $'MACOS = 1;  $'UNIX = 0;
	$'DIRSEP = ':';  $'CURDIR = ':';
	$'PATHSEP = ';';
    } else {
        $'MSDOS = 0;  $'MACOS = 0;  $'UNIX = 1;
	$'DIRSEP = '/';  $'CURDIR = '.';
	$'PATHSEP = ':';
    }
    ##	Store name of program
    ($'DIRSEPREX = $'DIRSEP) =~ s/(\W)/\\$1/g;
    ($'PROG = $0) =~ s%.*[$'DIRSEPREX]%%o;

    ##	Ask for command-line options if script is a Mac droplet
    ##		Code taken from the MacPerl FAQ
    if (!$noOptions && ( $MacPerl'Version =~ /Application$/ )) {
	# we're running from the app
	local( $cmdLine, @args );
	$cmdLine = &MacPerl'Ask( "Enter command line options:" );
	require "shellwords.pl";
	@args = &shellwords( $cmdLine );
	unshift( @'ARGV, @args );
    }
}

##---------------------------------------------------------------------------##
1;