3
# os.sh - operating system specifics
6
# This file is included at the start of processing. Its role is
7
# to set the variables OS, OSREL, OSMAJOR, MACHINE and MACHINE_ARCH to
8
# reflect the current system.
10
# It also sets variables such as MAILER, LOCAL_FS, PS_AXC to hide
11
# certain aspects of different UNIX flavours.
17
# Simon J. Gerraty <sjg@crufty.net>
20
# $Id: os.sh,v 1.44 2010/06/29 15:37:21 sjg Exp $
22
# @(#) Copyright (c) 1994 Simon J. Gerraty
24
# This file is provided in the hope that it will
25
# be of use. There is absolutely NO WARRANTY.
26
# Permission to copy, redistribute or otherwise
27
# use this file is hereby granted provided that
28
# the above copyright notice and this notice are
31
# Please send copies of changes and bug-fixes to:
35
# this lets us skip sourcing it again
40
OSMAJOR=`IFS=.; set $OSREL; echo $1`
42
MACHINE_ARCH=`uname -p 2>/dev/null || echo $MACHINE`
44
# there is at least one case of `uname -p` outputting
45
# a bunch of usless drivel
46
case "$MACHINE_ARCH" in
47
*[!A-Za-z0-9_-]*) MACHINE_ARCH="$MACHINE";;
50
# we need this here, and it is not always available...
57
/*) test $t $1 && echo $1;;
59
# some shells cannot correctly handle `IFS`
60
# in conjunction with the for loop.
61
_dirs=`IFS=:; echo ${2:-$PATH}`
64
test $t $d/$1 && { echo $d/$1; break; }
70
# tr is insanely non-portable wrt char classes, so we need to
71
# spell out the alphabet. sed y/// would work too.
73
${TR:-tr} abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
77
${TR:-tr} ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
82
AIX) # everyone loves to be different...
84
OSREL="$OSMAJOR.`uname -r`"
87
SHARE_ARCH=$OS/$OSMAJOR.X
90
CHOWN=`Which chown /usr/etc:/usr/bin`
93
# Great! Solaris keeps moving arch(1)
94
# should just bite the bullet and use uname -p
95
arch=`Which arch /usr/bin:/usr/ucb`
102
# uname -m just says sun which could be anything
105
MACHINE=$MACHINE_ARCH
115
# can you believe that ln on Solaris defaults to
116
# overwriting an existing file!!!!! We want one that works!
117
test -x /usr/xpg4/bin/ln && LN=${LN:-/usr/xpg4/bin/ln}
118
# wonderful, 5.8's tr again require's []'s
119
# but /usr/xpg4/bin/tr causes problems if LC_COLLATE is set!
120
# use toUpper/toLower instead.
123
case "$OS/$MACHINE_ARCH" in
124
*sun386) SHARE_ARCH=$MACHINE_ARCH;;
135
# NetBSD at least has good backward compatability
136
# so NetBSD/i386 is good enough
138
NetBSD) SHARE_ARCH=$OS/${MACHINE_ARCH:-$MACHINE};;
140
arch=`Which arch /usr/bin:/usr/ucb:$PATH`
141
MACHINE_ARCH=`$arch -s`
148
TMP_DIRS="/tmp /usr/tmp"
151
# don't rely on /bin/sh, its broken
152
_shell=/bin/ksh; ENV=
153
# also, no one would be interested in OSMAJOR=A
155
?.09*) OSMAJOR=9; PS_AXC=-e;;
156
?.10*) OSMAJOR=10; PS_AXC=-e;;
168
OSMAJOR=`IFS=.; set $OSREL; echo $1`
169
MACHINE_ARCH=`uname -m`
172
# Not really any such thing as Linux, but
173
# this covers red-hat and hopefully others.
175
i?86) MACHINE_ARCH=i386;; # we don't care about i686 vs i586
179
[ -x /usr/bin/md5sum ] && { MD5=/usr/bin/md5sum; export MD5; }
183
x86pc) MACHINE_ARCH=i386;;
188
BeBox) MACHINE_ARCH=powerpc;;
189
BeMac) MACHINE_ARCH=powerpc;;
190
BePC) MACHINE_ARCH=i386;;
195
HOSTNAME=${HOSTNAME:-`( hostname ) 2>/dev/null`}
196
HOSTNAME=${HOSTNAME:-`( uname -n ) 2>/dev/null`}
198
*.*) HOST=`IFS=.; set -- $HOSTNAME; echo $1`;;
202
TMP_DIRS=${TMP_DIRS:-"/tmp /var/tmp"}
203
MACHINE_ARCH=${MACHINE_ARCH:-$MACHINE}
204
# we mount server:/share/arch/$SHARE_ARCH as /usr/local
205
SHARE_ARCH=${SHARE_ARCH:-$OS/$OSMAJOR.X/$MACHINE_ARCH}
209
# Some people like have /share/$HOST_TARGET/bin etc.
210
HOST_TARGET=`echo ${OS}${OSMAJOR}-${MACHINE_ARCH} | toLower`
213
case `echo -n .` in -n*) N=; C="\c";; *) N=-n; C=;; esac
216
export OS MACHINE MACHINE_ARCH OSREL OSMAJOR LOCAL_FS TMP_DIRS MAILER N C K PS_AXC
217
export LN SHARE_ARCH TR