PROGNAME=`basename $0`
-trap 'rm -f /tmp/rlvers /tmp/rlvers.?' 0 1 2 3 6 15
+: ${TMPDIR:=/tmp}
+TDIR=$TMPDIR/rlvers
# defaults
CC=cc
RL_LIBDIR=/usr/local/lib
+RL_INCDIR=/usr/local/include
+TERMCAP_LIB="-ltermcap"
+
+# cannot rely on the presence of getopts
while [ $# -gt 0 ]; do
case "$1" in
-C) shift ; CC="$1"; shift ;;
+ -I) shift ; RL_INCDIR="$1" ; shift ;;
-L) shift ; RL_LIBDIR="$1" ; shift ;;
+ -T) shift ; TERMCAP_LIB="$1" ; shift ;;
-v) shift ; verbose=y ;;
--) shift ; break ;;
*) echo "${PROGNAME}: usage: $PROGNAME [-C compiler] [-L libdir] [-v]" >&2 ; exit 2;;
echo "${PROGNAME}: attempting program compilation"
fi
-cat > /tmp/rlvers.c << EOF
+# make $TDIR mode 0700
+mkdir $TDIR || {
+ echo "${PROGNAME}: ${TDIR}: file exists" >&2
+ echo 0
+ exit 1
+}
+chmod 700 $TDIR
+
+trap 'rm -f $TDIR/rlvers $TDIR/rlvers.? ; rmdir $TDIR' 0 1 2 3 6 15
+
+cat > $TDIR/rlvers.c << EOF
#include <stdio.h>
extern char *rl_library_version;
}
EOF
-if eval ${CC} -L${RL_LIBDIR} -o /tmp/rlvers /tmp/rlvers.c -lreadline -ltermcap -lcurses;
+opwd=`pwd`
+
+cd $TDIR || {
+ echo "${PROGNAME}: cannot cd to $TDIR" >&2
+ echo 0
+ exit 1
+}
+
+if eval ${CC} -L${RL_LIBDIR} -I${RL_INCDIR} -o $TDIR/rlvers $TDIR/rlvers.c -lreadline ${TERMCAP_LIB};
then
- v=`/tmp/rlvers`
+ v=`$TDIR/rlvers`
else
if [ -n "$verbose" ] ; then
echo "${PROGNAME}: compilation failed: status $?"
*) echo "$v" ;;
esac
+cd $opwd
exit 0