xref: /netbsd-src/external/bsd/ntp/dist/sntp/scripts/cvo.sh (revision 6a493d6bc668897c91594964a732d38505b70cbb)
1#! /bin/sh
2
3# Copyright 2002, 2009, 2010 Harlan Stenn.  Used by NTP with permission.
4# Author: Harlan Stenn <harlan+cvo@pfcs.com>
5
6# Possible output formats:
7#
8# CVO=...		Shell variable
9# CVO=... ; export CVO	Old-style exported envariable
10# export CVO=...	New-style exported envariable
11# setenv CVO ...	csh-style exported envariable
12
13TS="$*"
14
15CVO_raw=`config.guess`
16CVO=$CVO_raw
17
18set 1 `echo $CVO | tr '-' ' '`
19shift
20
21case "$#" in
22 4) # eg: i686-pc-linux-gnu
23    CVO_CPU=$1
24    CVO_VENDOR=$2
25    cvo_KERN=$3			# Note the capitalization...
26    CVO_OS=$4
27    case "$cvo_KERN" in
28     linux)			# Braindamage.  We want OS, not kernel info
29	if lsb_release > /dev/null 2>&1
30	then
31	    CVO_OS=`lsb_release --id --short | tr '[:upper:]' '[:lower:]'`
32	    CVO_OS="$CVO_OS`lsb_release --release --short`"
33	elif test -f /etc/debian_version
34	then
35	    set `cat /etc/debian_version`
36	    CVO_OS=debian$1
37	    CVO_KOSVER=`uname -r`
38	elif test -f /etc/mandrake-release
39	then
40	    set `cat /etc/mandrake-release`
41	    CVO_OS=mandrake$4
42	    CVO_KOSVER=`uname -r`
43	elif test -f /etc/redhat-release
44	then
45	    set `cat /etc/redhat-release`
46	    case "$1" in
47	     CentOS)
48	        CVO_OS=centos$3
49	        ;;
50	     Fedora)
51	        CVO_OS=fedora$3
52	        ;;
53	    *)
54		case "$3" in
55		 Enterprise)
56		    CVO_OS=redhat$7.E
57		    ;;
58		 Linux)
59		    CVO_OS=redhat$5
60		    ;;
61		esac
62		;;
63	    esac
64	    CVO_KOSVER=`uname -r`
65	elif test -f /etc/slackware-version
66	then
67	    set `cat /etc/slackware-version`
68	    CVO_OS=slackware$2
69	    CVO_KOSVER=`uname -r`
70	elif test -f /etc/SuSE-release
71	then
72	    set `cat /etc/SuSE-release`
73	    CVO_OS=suse$9
74	    CVO_KOSVER=`uname -r`
75	else
76	    CVO_OS=$cvo_KERN`uname -r`
77
78	fi
79	;;
80     nto)	# QNX
81	CVO_KOSVER=`uname -r`
82	;;
83     *)
84	echo "gronk - I don't understand <$CVO>!"
85	exit 1
86	;;
87    esac
88    ;;
89 3) CVO_CPU=$1
90    CVO_VENDOR=$2
91    CVO_OS=$3
92    ;;
93 *) echo "gronk - config.guess returned $# pieces, not 3 pieces!"
94    exit 1
95    ;;
96esac
97
98case "$CVO_OS" in
99 cygwin)
100    # Decisions, decisions.
101    # uname -r is the cygwin version #, eg: 1.3.3(0.46/3/2)
102    # uname -s returns something like CYGWIN_NT-5.0
103    CVO_OS="$CVO_OS`uname -r | sed 's/(.*//'`"
104    ;;
105esac
106set `echo $CVO_OS | sed 's/\([0-9]\)/ \1/'`
107
108case "$#" in
109 2) ;;
110 *) echo "gronk - <$CVO_OS> expanded to $#, not 2 pieces!"
111    exit 1
112    ;;
113esac
114
115CVO_OSNAME=$1
116CVO_OSVER=$2
117
118case "$CVO_OSNAME" in
119 solaris)
120    CVO_KOSVER=`uname -v`
121    ;;
122esac
123
124CVO=$CVO_CPU-$CVO_VENDOR-$CVO_OS
125
126case "$TS" in
127 '')
128    set | grep CVO
129    ;;
130 *)
131    # keys['cvo'] = "cvo.CVO['CVO']"
132    TS=`echo $TS | sed -e s/@cvo@/$CVO/g`
133    # keys['cpu'] = "cvo.CVO['CVO_CPU']"
134    TS=`echo $TS | sed -e s/@cpu@/$CVO_CPU/g`
135    # keys['kosver'] = "cvo.CVO['CVO_KOSVER']"
136    TS=`echo $TS | sed -e s/@kosver@/$CVO_KOSVER/g`
137    # keys['os'] = "cvo.CVO['CVO_OS']"
138    TS=`echo $TS | sed -e s/@os@/$CVO_OS/g`
139    # keys['osname'] = "cvo.CVO['CVO_OSNAME']"
140    TS=`echo $TS | sed -e s/@osname@/$CVO_OSNAME/g`
141    # keys['osver'] = "cvo.CVO['CVO_OSVER']"
142    TS=`echo $TS | sed -e s/@osver@/$CVO_OSVER/g`
143    # keys['vendor'] = "cvo.CVO['CVO_VENDOR']"
144    TS=`echo $TS | sed -e s/@vendor@/$CVO_VENDOR/g`
145    # keys['raw'] = "cvo.CVO['CVO_raw']"
146    TS=`echo $TS | sed -e s/@raw@/$CVO_raw/g`
147
148    echo $TS
149    ;;
150esac
151