1#!/bin/sh
2#
3# @(#)start.sh	6.25 03/12/12
4# Startup wrapper script for xmcd, cda and related programs.
5# This script is used to setup the basic startup environment,
6# and allows network sharing of xmcd files under different
7# platforms and architectures.
8#
9#    xmcd  - Motif(R) CD Audio Player/Ripper
10#    cda   - Command-line CD Audio Player/Ripper
11#
12#    Copyright (C) 1993-2004  Ti Kan
13#    E-mail: xmcd@amb.org
14#
15#    This program is free software; you can redistribute it and/or modify
16#    it under the terms of the GNU General Public License as published by
17#    the Free Software Foundation; either version 2 of the License, or
18#    (at your option) any later version.
19#
20#    This program is distributed in the hope that it will be useful,
21#    but WITHOUT ANY WARRANTY; without even the implied warranty of
22#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23#    GNU General Public License for more details.
24#
25#    You should have received a copy of the GNU General Public License
26#    along with this program; if not, write to the Free Software
27#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28#
29PATH=${PATH}:/sbin:/usr/sbin:/bin:/usr/bin:/etc
30export PATH
31
32
33proc_env()
34{
35	if [ -z "$XMCD_LIBDIR" ]
36	then
37		XMCD_LIBDIR=/usr/lib/X11/xmcd
38		export XMCD_LIBDIR
39	fi
40
41	SYS_T="$SYS"
42	MACH_T="$MACH"
43	REL_T="$REL"
44
45	XFILESEARCHPATH=$XMCD_LIBDIR/%T/%N%S:$XFILESEARCHPATH
46	XUSERFILESEARCHPATH=$HOME/.xmcdcfg/%N%S:$XUSERFILESEARCHPATH
47	XKEYSYMDB=$XMCD_LIBDIR/app-defaults/XKeysymDB
48	export XFILESEARCHPATH XUSERFILESEARCHPATH XKEYSYMDB
49
50	# Platform-specific handling
51	if [ "$SYS_T" = FreeBSD ]
52	then
53		# Differentiate between FreeBSD versions
54		REL_T=`echo "$REL_T" | sed 's/\..*$//'`
55		SYS_T=${SYS_T}_${REL_T}
56	elif [ "$SYS_T" = SunOS ]
57	then
58		# Differentiate between SunOS 4.x and Solaris
59		case "$REL_T" in
60		4.*)
61			;;
62		5.*)
63			SYS_T=Solaris
64			;;
65		*)
66			SYS_T=Solaris
67			;;
68		esac
69	elif [ -x /bin/i386 -o -x /sbin/i386 ] && i386
70	then
71		case "$REL_T" in
72		3.2)
73			# SCO UNIX/Open Desktop/Open Server
74			if (uname -X | fgrep "Release = 3.2") >/dev/null 2>&1
75			then
76				REL_T=`uname -X 2>/dev/null | \
77					fgrep "Version = " | \
78					sed -e 's/Version = //' -e 's/\..*$//'`
79				if [ -z "$REL_T" ]
80				then
81					REL_T=`uname -v | sed 's/\..*$//'`
82				fi
83				SYS_T=SCO_3.2v${REL_T}
84			fi
85			;;
86		4.*)
87			# UNIX SVR4.x
88			SYS_T=${SYS_T}_${REL_T}
89			;;
90		5)
91			# UNIX SVR5
92			SYS_T=${SYS_T}_${REL_T}
93			;;
94		5.*)
95			# UNIX SVR5.x
96			SYS_T=${SYS_T}_${REL_T}
97			;;
98		*)
99			;;
100		esac
101	fi
102
103	PATH=$XMCD_LIBDIR/bin-${SYS_T}-${MACH_T}:$XMCD_LIBDIR/scripts:$PATH
104	export PATH
105
106	# Set shared lib search path to include the xmcd arch-dependent
107	# lib directory.
108	# Note that with setuid xmcd/cda executables this has no effect
109	# on some platforms.
110	LD_LIBRARY_PATH=$XMCD_LIBDIR/lib-${SYS_T}-${MACH_T}:$LD_LIBRARY_PATH
111	export LD_LIBRARY_PATH
112	SHLIB_PATH=$XMCD_LIBDIR/lib-${SYS_T}-${MACH_T}:$SHLIB_PATH
113	export SHLIB_PATH
114
115	# Set arch-dependent executable
116	EXEPATH=$XMCD_LIBDIR/bin-${SYS_T}-${MACH_T}/$PROG
117}
118
119
120#
121# Main starts here
122#
123
124PROG=`(basename $0) 2>/dev/null`
125SYS=`(uname -s) 2>/dev/null | sed -e 's/\//_/g' -e 's/-/_/g' -e 's/[ 	]/_/g'`
126if [ "$SYS" = IRIX ]
127then
128	MACH=mips
129else
130	MACH=`(uname -m) 2>/dev/null | \
131		sed -e 's/\//_/g' -e 's/-/_/g' -e 's/[ 	]/_/g'`
132fi
133REL=`(uname -r) 2>/dev/null | sed -e 's/\//_/g' -e 's/-/_/g' -e 's/[ 	]/_/g'`
134
135o_path=$PATH
136o_ldlibpath=$LD_LIBRARY_PATH
137o_shlibpath=$SHLIB_PATH
138
139proc_env
140if [ -x "$EXEPATH" ]
141then
142	exec "$EXEPATH" ${1+"$@"}
143else
144	# The user may have defined a bad XMCD_LIBDIR environment variable.
145	# Fall back to default and re-try.
146	unset XMCD_LIBDIR
147	PATH=$o_path; export PATH
148	LD_LIBRARY_PATH=$o_ldlibpath; export LD_LIBRARY_PATH
149	SHLIB_PATH=$o_shlibpath; export SHLIB_PATH
150
151	proc_env
152	if [ -x "$EXEPATH" ]
153	then
154		exec "$EXEPATH" ${1+"$@"}
155	else
156		echo "Cannot invoke $EXEPATH" 1>&2
157		echo "Check your installation of ${PROG}." 1>&2
158		exit 1
159	fi
160fi
161
162