1*3955d011SMarcel Moolenaar: 2*3955d011SMarcel Moolenaar# derrived from /etc/rc_d/os.sh 3*3955d011SMarcel Moolenaar 4*3955d011SMarcel Moolenaar# RCSid: 5*3955d011SMarcel Moolenaar# $Id: machine.sh,v 1.16 2010/10/17 00:05:51 sjg Exp $ 6*3955d011SMarcel Moolenaar# 7*3955d011SMarcel Moolenaar# @(#) Copyright (c) 1994-2002 Simon J. Gerraty 8*3955d011SMarcel Moolenaar# 9*3955d011SMarcel Moolenaar# This file is provided in the hope that it will 10*3955d011SMarcel Moolenaar# be of use. There is absolutely NO WARRANTY. 11*3955d011SMarcel Moolenaar# Permission to copy, redistribute or otherwise 12*3955d011SMarcel Moolenaar# use this file is hereby granted provided that 13*3955d011SMarcel Moolenaar# the above copyright notice and this notice are 14*3955d011SMarcel Moolenaar# left intact. 15*3955d011SMarcel Moolenaar# 16*3955d011SMarcel Moolenaar# Please send copies of changes and bug-fixes to: 17*3955d011SMarcel Moolenaar# sjg@crufty.net 18*3955d011SMarcel Moolenaar# 19*3955d011SMarcel Moolenaar 20*3955d011SMarcel MoolenaarOS=`uname` 21*3955d011SMarcel MoolenaarOSREL=`uname -r` 22*3955d011SMarcel MoolenaarOSMAJOR=`IFS=.; set $OSREL; echo $1` 23*3955d011SMarcel Moolenaarmachine=`uname -p 2>/dev/null || uname -m` 24*3955d011SMarcel MoolenaarMACHINE= 25*3955d011SMarcel Moolenaar 26*3955d011SMarcel Moolenaar# there is at least one case of `uname -p` outputting 27*3955d011SMarcel Moolenaar# a bunch of usless drivel 28*3955d011SMarcel Moolenaarcase "$machine" in 29*3955d011SMarcel Moolenaarunknown|*[!A-Za-z0-9_-]*) 30*3955d011SMarcel Moolenaar machine=`uname -m` 31*3955d011SMarcel Moolenaar ;; 32*3955d011SMarcel Moolenaaresac 33*3955d011SMarcel Moolenaar 34*3955d011SMarcel Moolenaar# Great! Solaris keeps moving arch(1) 35*3955d011SMarcel Moolenaar# we need this here, and it is not always available... 36*3955d011SMarcel MoolenaarWhich() { 37*3955d011SMarcel Moolenaar # some shells cannot correctly handle `IFS` 38*3955d011SMarcel Moolenaar # in conjunction with the for loop. 39*3955d011SMarcel Moolenaar _dirs=`IFS=:; echo ${2:-$PATH}` 40*3955d011SMarcel Moolenaar for d in $_dirs 41*3955d011SMarcel Moolenaar do 42*3955d011SMarcel Moolenaar test -x $d/$1 && { echo $d/$1; break; } 43*3955d011SMarcel Moolenaar done 44*3955d011SMarcel Moolenaar} 45*3955d011SMarcel Moolenaar 46*3955d011SMarcel Moolenaarcase $OS in 47*3955d011SMarcel MoolenaarOpenBSD) 48*3955d011SMarcel Moolenaar MACHINE=$OS$OSMAJOR.$machine 49*3955d011SMarcel Moolenaar arch=`Which arch /usr/bin:/usr/ucb:$PATH` 50*3955d011SMarcel Moolenaar MACHINE_ARCH=`$arch -s`; 51*3955d011SMarcel Moolenaar ;; 52*3955d011SMarcel Moolenaar*BSD) 53*3955d011SMarcel Moolenaar MACHINE=$OS$OSMAJOR.$machine 54*3955d011SMarcel Moolenaar ;; 55*3955d011SMarcel MoolenaarSunOS) 56*3955d011SMarcel Moolenaar arch=`Which arch /usr/bin:/usr/ucb:$PATH` 57*3955d011SMarcel Moolenaar test "$arch" && machine_arch=`$arch` 58*3955d011SMarcel Moolenaar 59*3955d011SMarcel Moolenaar case "$OSREL" in 60*3955d011SMarcel Moolenaar 4.0*) MACHINE_ARCH=$machine_arch MACHINE=$machine_arch;; 61*3955d011SMarcel Moolenaar 4*) MACHINE_ARCH=$machine_arch;; 62*3955d011SMarcel Moolenaar esac 63*3955d011SMarcel Moolenaar ;; 64*3955d011SMarcel MoolenaarHP-UX) 65*3955d011SMarcel Moolenaar MACHINE_ARCH=`IFS="/-."; set $machine; echo $1` 66*3955d011SMarcel Moolenaar ;; 67*3955d011SMarcel MoolenaarInterix) 68*3955d011SMarcel Moolenaar MACHINE=i386 69*3955d011SMarcel Moolenaar MACHINE_ARCH=i386 70*3955d011SMarcel Moolenaar ;; 71*3955d011SMarcel MoolenaarUnixWare) 72*3955d011SMarcel Moolenaar OSREL=`uname -v` 73*3955d011SMarcel Moolenaar OSMAJOR=`IFS=.; set $OSREL; echo $1` 74*3955d011SMarcel Moolenaar MACHINE_ARCH=`uname -m` 75*3955d011SMarcel Moolenaar ;; 76*3955d011SMarcel MoolenaarLinux) 77*3955d011SMarcel Moolenaar case "$machine" in 78*3955d011SMarcel Moolenaar i?86) MACHINE_ARCH=i386;;# does anyone really care about 686 vs 586? 79*3955d011SMarcel Moolenaar esac 80*3955d011SMarcel Moolenaar ;; 81*3955d011SMarcel Moolenaaresac 82*3955d011SMarcel Moolenaar 83*3955d011SMarcel MoolenaarMACHINE=${MACHINE:-$OS$OSMAJOR} 84*3955d011SMarcel MoolenaarMACHINE_ARCH=${MACHINE_ARCH:-$machine} 85*3955d011SMarcel Moolenaar 86*3955d011SMarcel Moolenaar( 87*3955d011SMarcel Moolenaarcase "$0" in 88*3955d011SMarcel Moolenaararch*) echo $MACHINE_ARCH;; 89*3955d011SMarcel Moolenaar*) 90*3955d011SMarcel Moolenaar case "$1" in 91*3955d011SMarcel Moolenaar "") echo $MACHINE;; 92*3955d011SMarcel Moolenaar *) echo $MACHINE_ARCH;; 93*3955d011SMarcel Moolenaar esac 94*3955d011SMarcel Moolenaar ;; 95*3955d011SMarcel Moolenaaresac 96*3955d011SMarcel Moolenaar) | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 97