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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
##"slib" script; Find a Scheme implementation and initialize SLIB in it.
#Copyright (C) 2003 Aubrey Jaffer
#
#Permission to copy this software, to modify it, to redistribute it,
#to distribute modified versions, and to use it for any purpose is
#granted, subject to the following restrictions and understandings.
#
#1. Any copy made of this software must include this copyright notice
#in full.
#
#2. I have made no warranty or representation that the operation of
#this software will be error-free, and I am under no obligation to
#provide any services, by way of maintenance, update, or otherwise.
#
#3. In conjunction with products arising from the use of this
#material, there shall be no use of my name in any advertising,
#promotional, or sales literature without prior written consent in
#each case.
usage="Usage: slib [--version | -v]
Display version information and exit successfully.
Usage: slib SCHEME
Initialize SLIB in Scheme implementation SCHEME.
Usage: slib
Initialize SLIB session using executable 'scheme', 'scm',
'mzscheme', 'guile', 'gsi' or 'slib48'."
case "$1" in
-v | --ver*) echo slib "$VERSION"; exit 0;;
"")
if type scheme>/dev/null 2>&1; then
command=scheme
fi;;
-*) echo "$usage"; exit 1;;
*)
command="$1"
shift
esac
# If more arguments are supplied, then err out.
if [ ! -z "$1" ]; then
echo "$usage"; exit 1
fi
if type $command>/dev/null 2>&1; then
SPEW="`$command --version < /dev/null 2>&1`"
if echo ${SPEW} | grep -q 'Initialize load-path (colon-list of directories)' \
; then implementation=elk
elif echo ${SPEW} | grep -q 'MIT Scheme' ; then implementation=mit
elif echo ${SPEW} | grep -q 'UMB Scheme' ; then implementation=umb
elif echo ${SPEW} | grep -q 'scheme48' ; then implementation=s48
elif echo ${SPEW} | grep -q 'MzScheme' ; then implementation=plt
elif echo ${SPEW} | grep -q 'Guile' ; then implementation=gui
elif echo ${SPEW} | grep -q 'gambc' ; then implementation=gam
elif echo ${SPEW} | grep -q 'SCM' ; then implementation=scm
else implementation=
fi
elif [ ! -z "$command" ]; then
echo "Program '$command' not found."
exit 1
fi
if [ -z "$command" ];
then
if type scm>/dev/null 2>&1; then
command=scm; implementation=scm
elif type gsi>/dev/null 2>&1; then
command=gsi; implementation=gam
elif type mzscheme>/dev/null 2>&1; then
command=mzscheme; implementation=plt
elif type guile>/dev/null 2>&1; then
command=guile; implementation=gui
elif type slib48>/dev/null 2>&1; then
command=slib48; implementation=s48
else
echo No Scheme implementation found.
exit 1
fi
fi
case $implementation in
scm);;
s48);;
*) if [ -z "${SCHEME_LIBRARY_PATH}" ]; then
export SCHEME_LIBRARY_PATH=`rpm -ql slib 2>/dev/null \
| grep require.scm | sed 's%require.scm%%'`
fi
if [ -z "${SCHEME_LIBRARY_PATH}" ]; then
if [ -d /usr/local/lib/slib/ ]; then
export SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
elif [ -d /usr/share/slib/ ]; then
export SCHEME_LIBRARY_PATH=/usr/share/slib/
fi
fi;;
esac
# for gambit
case $implementation in
gam) if [ -z "${LD_LIBRARY_PATH}" ]; then
export LD_LIBRARY_PATH=/usr/local/lib
fi;;
esac
case $implementation in
scm) exec $command -ip1 -l ${SCHEME_LIBRARY_PATH}scm.init $*;;
elk) exec $command -i -l ${SCHEME_LIBRARY_PATH}elk.init;;
gam) exec $command -:s ${SCHEME_LIBRARY_PATH}gambit.init - $*;;
plt) exec $command -f ${SCHEME_LIBRARY_PATH}DrScheme.init $*;;
gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init $*;;
mit) exec $command -load ${SCHEME_LIBRARY_PATH}mitscheme.init $*;;
s48) exec $command $*;;
umb) echo "umb-scheme vicinities are too wedged to run slib"; exit 1;;
*) exit 1;;
esac
|