#!/bin/sh

# @(#)MASKED version 3.13 created 2/12/96
# @(#)Copyright (c), 1987, 1996 StatSci, Inc.  All rights reserved.

# Usage: Splus MASKED [user_directory]. Default is first writeable directory in
# S_WORK.

# MASKED: print list of S-PLUS objects which exist both on 'user_directory'
# and on one of the directories in S_PATH.

: ${SHOME?} ${S_PATH?} ${S_WORK?}

PATH=:/bin:/usr/bin
prog=MASKED

case $# in
	1)	userdir="$1"
		if [ ! -d "$userdir" ]
		then
			echo "$prog : $userdir is not a directory." >&2
			exit 1
		fi
		;;

	0)	userdir=""
		OLD_IFS="$IFS"
		IFS=:
		for i in $S_WORK
		do
			[ -d $i ] && [ -w $i ] && { userdir=$i ; break ; }
		done
		IFS="$OLD_IFS"
		if [ -z "$userdir" ]; then
			echo "$prog : no writeable directory in \$S_WORK" >&2
			exit 1; fi
		;;

	*)	echo "Usage: Splus $prog [user_directory]" >&2
		exit 1
		;;

esac

tmpdir=${TMPDIR:-/tmp}
userobjs=$tmpdir/userobjs.$$
sobjs=$tmpdir/sobjs.$$
ssobjs=$tmpdir/ssobjs.$$

trap 'rm -f $userobjs $sobjs $ssobjs' 0

echo "Searching user directory $userdir ..." >&2
${SHOME}/cmd/OBJECTS $userdir > $userobjs
rm -f $sobjs
touch $sobjs

OLD_IFS="$IFS"
IFS=:
for dir in $S_PATH
do
	if [ ! -d $dir ]
	then
		echo "Warning: skipping ${dir}: not a directory." >&2
	else
		# echo "Searching system directory $dir ..." >&2
		${SHOME}/cmd/OBJECTS $dir >> $sobjs
	fi
done
IFS="$OLD_IFS"

sort $sobjs | uniq > $ssobjs
comm -12 $userobjs $ssobjs
exit 0
